+ Project mới belongs to Project, not to every workspace screen

Moving it onto the title row put it on the wrong side of a boundary: that row
lives on WorkspaceTab, above the sub-tabs, so it is drawn over Cowork, Co4E,
Folder and GraphRAG too — a button offering to create a project in the corner of
a chat. The title label beside it already followed the sub-tab; the button did
not, because I added it to the row without adding it to that rule.

Both follow it now. check_project_screen walks the other four sub-tabs and fails
if the button shows on any of them.

23/23 checkers pass.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
Nam Pham Dinh Thanh
2026-08-18 16:16:57 +09:00
co-authored by Claude Opus 5
parent d434f7b095
commit 60545654d6
2 changed files with 19 additions and 0 deletions
+15
View File
@@ -143,6 +143,21 @@ def main() -> int:
fails.append(f"picker khong hien ten {name!r}")
break
# 9. the title row sits above the sub-tabs, so what is on it must follow
# the title — + Project mới turned up in the corner of every other one.
for idx, name in ((w._cowork_tab_idx, "Cowork"), (w._co4e_tab_idx, "Co4E"),
(w._folder_tab_idx, "Thu muc"),
(w._graphrag_tab_idx, "GraphRAG")):
if idx < 0:
continue
win._goto(win._ROW_WORKSPACE, idx)
app.processEvents()
if w._new_btn.isVisible():
fails.append(f"nut '+ Project moi' hien ca o man {name}")
win._goto(win._ROW_WORKSPACE, w._project_tab_idx)
app.processEvents()
print(f"nut tao chi hien o Project: {not any('Project moi' in f for f in fails)}")
print()
for f in fails:
print("FAIL " + f)
+4
View File
@@ -410,6 +410,10 @@ class WorkspaceTab(QWidget):
# space taken from Co4E's canvas and Folder's tree on every laptop
# screen. Shown where they apply; the text itself is unchanged.
self._header.setVisible(on_project)
# The title row sits above the sub-tabs, so everything on it has to
# follow the same rule the title does — moving + Project mới up here put
# it in the corner of Cowork, Co4E, Folder and GraphRAG as well.
self._new_btn.setVisible(on_project)
# ...and the explanation only while there is nothing to explain against:
# the drawing heads a populated screen with the title alone.
self._hint.setVisible(on_project and self.project_list.count() == 0)