Repository navigation
uiux: 收口讀取失敗、窄視窗設定與欄位操作語意(最新 main 實測盤點) #298
Description
2026-10-24 最新核對
#437 已合入 main 375f2ee3,包含讀取失敗狀態、窄視窗/放大布局、欄位可及性與草稿等修正,見 T025–T032、T063。下方舊程式位置是原始缺陷證據,不能一律當成目前仍未修。
本單仍追蹤 T009 的完整設定/狀態/平台驗收。T072:成功重試後殘留的保存失敗 toast 已在本機分支修正,通過真實唯讀檔案及原生重試;尚未提交/push/合入 main,不勾完成、不另開重複 issue。完整矩陣與平台限制沿 #317。
2026-10-13 範圍與狀態更新:依 #317 先完成安裝/設定,暫緩時間軸改版。 #309 已合入 ListField labels/草稿提示/過時文案修正,#310 已合入專案與搜尋讀取狀態修正;以下相關缺陷描述保留作修正前依據,不是仍未實作。剩餘重點為修正後實際操作驗收,以及會阻擋設定流程的窄視窗/縮放。純視覺美化與非紀錄必要的進階閱讀優化延後,不因此要求另一套設計系統。
基線與驗證界線
main e479028cf61cf0578a6ec55ac3bf2ca1e283bb53,2026-10-12。使用 uiux-validation 流程與專案既有 Playwright Electron API;macOS、隔離 HOME、最新 source build。實際操作首次建立、profile 匯入、Settings ▸ Scope、縮窗與縮放。profile 的兩項端到端缺陷另列 #297。
本次沒有完成 Windows/Kali 安裝、真實 shell hook、HTTPS CA、流量擷取、匯出端到端或全 App accessibility 稽核;不把此次結果當作 release 驗收。
待改善項目
P1:索引查詢失敗被當成完整索引(程式確認)
SearchPanel.tsx:255 的 castIndexStatus rejection 被吞掉,註解為 older main process / fully indexed。初始 pending=0,因此沒有未完成提示。這與未發版、不保留舊契約的決策矛盾,也使輸出查無結果看似權威。
建議:ready / pending / unknown / failed 分開,提供重試;結果仍可閱讀,但索引狀態無法確認時明示查找可能不完整。distinctAgentTypes 失敗也應與「沒有類型」分開。
P2:專案清單失敗看起來像首次使用(程式確認)
ProjectPicker.tsx:49 將 list rejection 吞掉,projects 初值 []。使用者無法區分正在載入、沒有專案與讀取失敗。
建議:三種狀態與重試,保留已知清單;錯誤不得暗示證據遺失。
P2:縮窗/放大時設定內容讓位給兩層導覽(畫面確認)
在實際 Electron 將主視窗設為 800×600、zoomFactor=1.5,頁面回報有效 viewport 533×400;Settings 類別導覽與主側欄佔去可視區,Scope 編輯內容不在可見畫面,標題列右側動作亦被裁切。document.scrollWidth=533 不能當作沒有問題的證據。
Settings.tsx:235 類別導覽固定 212px 且 shrink-0。
建議:在有效 viewport 變窄時自動收合主側欄,設定類別改可展開選單,維持內容欄與返回入口;標題列次要動作收進更多選單。沿用既有 tokens / Button / Modal,不換設計系統。
這是 macOS 小視窗+縮放情境,不宣稱已驗證手機或 Windows DPI。
P2:Scope 清單欄位未與可見 label 連結(程式確認)
SettingsShared.tsx:178 的 label 沒有 htmlFor,input / textarea 沒有對應 id / aria-labelledby。沿用同檔既有 Field 的 useId 模式,將錯誤與提示接 aria-describedby / aria-invalid。
P3:操作語意與文案
- 設定頁實際仍顯示「變更任務/操作員 ID 需重開專案」;應對照現行唯讀/設定契約移除失效描述。
- 多行清單輸入需按 + 或 Ctrl/Cmd+Enter 才加入;「自動儲存」不要讓使用者誤以為未加入的草稿也已保存。補上提交提示與草稿狀態,不另做一套儲存流程。
- 新建卡片只有名稱是現行測試刻意維持的設計,不建議為過時 README 再放一組 scope 表單。建立後以未設定提示導向唯一的 Scope 設定入口。
驗收清單
- 專案清單 loading / empty / rejected / retry 各自有可辨識呈現。
- castIndexStatus 與 facets API rejection 故障注入,不宣稱已完整索引或確定沒有類型。
- 1280×800、800×600,100% / 150% / 200%:記錄實際 viewport,設定內容、返回與主要動作可到達;縮放不改資料。
- 鍵盤可進入 Scope 欄位、加入與刪除項目、讀到錯誤;label 有穩定 accessible name。
- 草稿、加入清單、saving、saved、failed 狀態語意一致。
- 空/載入/錯誤案例使用現有元件,避免每頁另一套樣式。
拆分建議
本 issue 作 UI 收口追蹤,實作拆成「讀取狀態」、「窄視窗」、「欄位可及性與文案」三個小變更;不要綁在大型擷取引擎 PR。優先處理 #297 與索引真實性,其餘可分批。關聯 #295、#296。
Activity
Merge pull request #310 from guan4tou2/fix/298-read-states
Merge pull request #322 from guan4tou2/test/298-ui-closeout
guan4tou2 commentedon Oct 13, 2026
狀態更新(main 含 #318、#322)。保持開啟,因為還有未做的項目;其中狀態列斷行另開 issue 追蹤。
已在真實 app 驗證(#322,
e2e/ui-closeout.spec.ts,9 個測試;主程序的 IPC handler 直接丟錯來模擬故障):casts:status與events:distinctAgentTypesrejection:搜尋顯示「無法確認索引」並說明沒找到不代表沒有,沒有宣稱已完整索引;事件類型篩選的提示獨立,各有重試。webContents.setZoomFactor):Scope 的 Targets 欄位在視窗內、寬度超過 200px、沒被蓋住,標題列動作沒被切掉。最小有效 viewport 為 400×300。role="alert"說明。aria-describedby連到欄位,且確認不在已存的設定裡。驗證有效性:把失敗的索引改成
ready會讓搜尋測試失敗;關掉窄視窗版面,800×600 在 150%/200% 時欄位只剩 145px/15px,矩陣測試失敗。未做:
guan4tou2 commentedon Oct 16, 2026
基準:2026-10-16,遠端 main 與正式 v0.18.3 同為
c50286526c0d4a3e0dbae74b7d1f32e49bd3b70b。本輪使用公開 DMG 的隔離安裝副本、隔離 HOME/專案及 Playwright Electron 操作。沒有修改個人 profile 或系統 CA。Windows/Kali/WSL 本輪未重新實機驗收。v0.18.3 操作覆驗:首次設定仍應納入窄視窗收口
正式包在 1280×800 可操作;另以 800×600、Electron zoom 150%/200% 聚焦、重新載入並等待重繪後核對。
FirstRunView仍固定水平排內建終端與
w-[360px] shrink-0驗證欄(body zoom 0.9)。在 200% 時驗證欄幾乎佔滿可用寬度,主要內容需要在很短的內層區域捲動;首次設定負擔大。這是 Mac 桌面縮窗/縮放測試,不是手機或 Windows DPI 已驗收,也不宣稱所有按鈕都完全不能點。建議延用現有 useNarrowViewport/設計 tokens,在窄 viewport 改上下排列或單一來源展開,將主要驗證/繼續動作保持可到達;主側欄與狀態列的剩餘收口延用 #323,不另開一套導覽。
把 Capture setup 的「接入終端 → 真實輸出 → HTTPS 主驗收 → 繼續工作」加入原 #298 視窗矩陣,驗證鍵盤與捲動後能真正完成操作,不只檢查 document.scrollWidth。這輪沒有改產品或測試套件。
guan4tou2 commentedon Oct 22, 2026
2026-10-22:設定操作語意整合的具體補充
基準:遠端 main
0d79823b+候選2b21b690。既有設定搜尋、窄視窗導覽、清單草稿、保存/失敗/重試與專案綁定已完成的部分保留,不因本次收斂重寫。同一套輸入/保存/失敗語意
6便被改成1024;不要把「自動儲存」做成難以輸入。程式確認的來源狀態接線缺口
ExternalCaptureGroup.tsx:44 只保留 state/lastEventAt,未帶入 health 的
running;後面卻用l.running === true判斷「正在接收」與「停用但仍在接收」。因此這個設定區塊無法正確呈現這兩種結果;不表示整個 Dashboard 同樣有缺陷。本輪為程式與流程分析,未新增完整原生驗收;候選的 Mac 設定 EACCES/重試/快速切頁已另留 Spec 062 紀錄,不把子步驟成功算成整個 #298 完成。
guan4tou2 commentedon Oct 22, 2026
2026-10-22 小項目實作進度(本機,尚未 commit/push)
依使用者「先把比較簡單的做完」,在
codex/recording-export-workflow基準2b21b690完成:驗證:8 files/103 tests PASS,3 Electron journeys PASS(繁中/英文 800×600 的草稿、驗證、實際保存/重開;來源真實 IPC rejection/retry;既有受管代理流程)。另在 Mac 原生 source build 逐步操作:6661→草稿6→Tab錯誤→7777 Enter保存並讀磁碟→恢復6661,正常退出。沒有把 IPC fixture 當成真實 tcpdump 生產者或安裝包驗收。
typecheck、architecture、i18n、Spec Kit、build、diff checks PASS。Spec 062 T021–T023 留有 RED→GREEN 與收斂紀錄;T009 完整矩陣及本 issue 其他工作仍開放。這些變更尚未進遠端/main/安裝包;沒有把本 issue 關閉。
guan4tou2 commentedon Oct 22, 2026
2026-10-22:修正已推送,完整驗收仍開啟
6cb738e2 已推送至
codex/recording-export-workflow:相關測試及 Mac 原生子步驟已記錄於 verification。最終設定 Electron 4 passed,涵蓋 1600×900/800×600、中英文草稿與持久化、IPC 失敗/重試及 AI 明確啟用。
本單與 #435 承接 Spec 062 T009/M06–M08 的完整設定/專案切換驗收;仍未完成,不以這輪子步驟關單。母單 #317 已補所有 T008–T013 的對照。
fix: close the small-window defects in transcript and status bar (#298)