From f6c196ca870e7908f2e53b2f81729999597b6112 Mon Sep 17 00:00:00 2001 From: Vu Dam Tuan Date: Tue, 15 Sep 2026 09:46:33 +0900 Subject: [PATCH] fix(graphrag): crash on project rename/path change (DF-009) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit session_events.py::_on_projects_changed (runs on every project create/rename/delete) called self.structure._refresh_project_combo() — but that method only ever existed on GraphRenderer, not on StructureGraphView itself (self.structure). Renaming a project or changing its working-directory path raised AttributeError and crashed the app. Add StructureGraphView.refresh_project_list(), matching the existing schedule_rescan/set_project/prewarm forwarding pattern, and call that instead. Add a regression test (test_refresh_project_list_forwards_to_renderer). Logged as DF-009 in Task Tracking Template.xlsx — root cause, fix and regression test recorded (row was empty in this local copy despite being reported as already logged there). Co-Authored-By: Claude Sonnet 5 --- Task Tracking Template.xlsx | Bin 3878930 -> 3879696 bytes presentation/graph/structure_graph_view.py | 6 ++++++ presentation/shell/session_events.py | 2 +- .../integration/test_structure_graph_view.py | 19 ++++++++++++++++++ 4 files changed, 26 insertions(+), 1 deletion(-) diff --git a/Task Tracking Template.xlsx b/Task Tracking Template.xlsx index 2671c078fff3bb120334f254c479fbc24a20cc37..24cd53ad87656f0f1112b588d3c82b0bb679f24a 100644 GIT binary patch delta 42734 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 diff --git a/presentation/graph/structure_graph_view.py b/presentation/graph/structure_graph_view.py index 8cc86f1..4d856d5 100644 --- a/presentation/graph/structure_graph_view.py +++ b/presentation/graph/structure_graph_view.py @@ -219,6 +219,12 @@ class StructureGraphView(QWidget): """Dựng sẵn khung đồ thị trước khi người dùng bấm vào, để lần mở đầu không giật.""" self.renderer.prewarm() + def refresh_project_list(self) -> None: + """Project khác vừa được tạo/sửa/xoá/đổi tên — làm mới danh sách trong + bộ chọn project của renderer (bộ chọn KHÔNG tự nạp lại khi project + thay đổi ở màn khác, chỉ khi ``set_project`` được gọi).""" + self.renderer._refresh_project_combo() + def hideEvent(self, e): # noqa: N802 # Leaving the GraphRAG tab → drop the temporary extracted info. """Rời màn GraphRAG thì xoá phần trích xuất tạm của khung hỏi-đáp.""" diff --git a/presentation/shell/session_events.py b/presentation/shell/session_events.py index 8897747..323bf3c 100644 --- a/presentation/shell/session_events.py +++ b/presentation/shell/session_events.py @@ -106,4 +106,4 @@ class SessionEventsMixin: """Project được tạo/sửa/xoá: gom nhóm lại cột lịch sử và cập nhật nhãn thư mục.""" self.sidebar.refresh() # History regroups by project self.cowork._apply_output_folder_label() # project may have been renamed - self.structure._refresh_project_combo() # GraphRAG's project lock list follows too + self.structure.refresh_project_list() # GraphRAG's project lock list follows too diff --git a/tests/integration/test_structure_graph_view.py b/tests/integration/test_structure_graph_view.py index 68cc63c..89f4e9c 100644 --- a/tests/integration/test_structure_graph_view.py +++ b/tests/integration/test_structure_graph_view.py @@ -55,6 +55,25 @@ def test_structure_graph_view_builds(ctx): assert view.qa is not None +def test_refresh_project_list_forwards_to_renderer(ctx): + """Crash bug: ``presentation/shell/session_events.py::_on_projects_changed`` + called ``self.structure._refresh_project_combo()`` — a method that only + ever existed on ``GraphRenderer``, not on ``StructureGraphView`` itself — + so creating/renaming/deleting a project (anywhere in the app) raised + ``AttributeError`` and crashed. ``refresh_project_list()`` is the public + forwarding method callers must use instead (matching ``schedule_rescan``/ + ``set_project``/``prewarm``'s existing forwarding pattern).""" + from cowork_local.presentation.graph.structure_graph_view import StructureGraphView + + view = StructureGraphView(ctx) + assert not hasattr(view, "_refresh_project_combo") + + combo = view.renderer.project_combo + before = combo.count() + view.refresh_project_list() # must not raise + assert combo.count() == before # re-populated from the same project list, same size + + def test_render_populates_the_scene_and_emits_graph_rendered(ctx, tmp_path): from cowork_local.presentation.graph.graph_renderer import GraphRenderer