Close the remaining gaps on Project and Cowork against the wireframes
Re-read both drawings element by element rather than by eye. Five things were
still wrong.
Cowork headed itself "Cowork" — the screen's own name, which the rail already
shows — where the drawing puts the THREAD's title. The title now follows the
conversation, falling back to the screen name for a chat that has none yet;
ChatPanel notifies on load, on reset and when a title is first derived from the
opening turn.
Its files panel read "Tệp đầu ra"; every section heading in the drawings is
caps, so it matches the rail and Monitoring now.
Project kept its three-line explanation above the panes on every visit. The
drawing heads a populated screen with the title alone and gives the text to the
EMPTY state instead, which is where it is actually needed — so it shows only
when there is no project yet.
The workspace path sat as grey caption text where the drawing shows a field. A
read-only line edit looks like one and lets the path be selected and copied.
And Lưu project sat directly under the folder row; the drawing floats it at the
foot of the panel, so a stretch went in above it.
Checked against the control inventory, not just the picture: "Nén" and "Thư mục
Local…" are marked giữ nguyên tại chỗ, so they stay in the status strip even
though the drawing's status line is text only.
New check_cowork_screen; check_project_screen gains the three points. Both
mutation-tested — pinning the title back to tr("cowork.title") and making the
hint unconditional each fail.
23/23 checkers pass. The Qt teardown segfault is still around: check_no_hscroll
took it 1 run in 3, after printing its verdict.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 5
parent
300c10711e
commit
7d9a4e2378
@@ -103,7 +103,27 @@ def main() -> int:
|
||||
fails.append(f"thieu nhan {label!r}")
|
||||
print(f"nhan form: {want}")
|
||||
|
||||
# 5. the rail's picker must name the projects. It reads project_choices(),
|
||||
# 5. the drawing heads a populated screen with the title alone; the
|
||||
# explanation belongs to an empty one.
|
||||
print(f"hint hien voi {lst.count()} project: {w._hint.isVisible()}")
|
||||
if lst.count() and w._hint.isVisible():
|
||||
fails.append("doan giai thich van hien du da co project")
|
||||
|
||||
# 6. the path is a field in the drawing, not caption text
|
||||
from PySide6.QtWidgets import QLineEdit
|
||||
is_field = isinstance(w.folder_lbl, QLineEdit) and w.folder_lbl.isReadOnly()
|
||||
print(f"o thu muc: {type(w.folder_lbl).__name__} (o nhap chi doc={is_field})")
|
||||
if not is_field:
|
||||
fails.append("duong dan thu muc khong phai o nhap chi doc")
|
||||
|
||||
# 7. Lưu project floats at the foot of the panel, not right under the form
|
||||
save_y = w._save_btn.mapTo(w, QPoint(0, 0)).y()
|
||||
folder_y = w.folder_lbl.mapTo(w, QPoint(0, 0)).y()
|
||||
print(f"nut Luu y={save_y}, o thu muc y={folder_y}, cach {save_y - folder_y}px")
|
||||
if save_y - folder_y < 80:
|
||||
fails.append("nut Luu khong bi day xuong day panel")
|
||||
|
||||
# 8. the rail's picker must name the projects. It reads project_choices(),
|
||||
# which used to read item.text() — and when rows became widgets the item
|
||||
# text went empty, so every entry showed as a bare folder glyph. Creating
|
||||
# a project is when a user notices, so create one here.
|
||||
|
||||
Reference in New Issue
Block a user