diff --git a/docs/nav-test-checklist.md b/docs/nav-test-checklist.md index 05f26342..5fa51807 100644 --- a/docs/nav-test-checklist.md +++ b/docs/nav-test-checklist.md @@ -44,32 +44,32 @@ Pre-existing, but **surfaced** by the nav work: once rows became real ``s one is a route change, so the deep-link resolver in `ChatHistory/index.tsx:69` — previously reached only on refresh or a pasted URL — now runs on every ordinary click, and it calls `setActiveCwd(detail.cwd)`. -## L — Chat: long-transcript lazy-load — 0/8 +## L — Chat: long-transcript lazy-load — 8/8 ✅ -- [ ] **L1** Open a very long chat → instantly at the newest message (no long scroll or visible jump). -- [ ] **L2** Open is fast (only the tail loads, not thousands of messages). -- [ ] **L3** Scroll near the top → older messages load (brief spinner at top). -- [ ] **L4** After older messages load, the view stays put (doesn't snap to top or bottom). -- [ ] **L5** Keep scrolling up → eventually reaches the true first message; loading stops. -- [ ] **L6** Send a new message in a resumed chat → appends at the bottom, view follows. -- [ ] **L7** A short chat (<20 msgs) behaves normally — all visible, no spinner. -- [ ] **L8** "Jump to bottom" appears when scrolled up, and works. +- [x] **L1** Open a very long chat → instantly at the newest message (no long scroll or visible jump). +- [x] **L2** Open is fast (only the tail loads, not thousands of messages). +- [x] **L3** Scroll near the top → older messages load (brief spinner at top). +- [x] **L4** After older messages load, the view stays put (doesn't snap to top or bottom). +- [x] **L5** Keep scrolling up → eventually reaches the true first message; loading stops. +- [x] **L6** Send a new message in a resumed chat → appends at the bottom, view follows. +- [x] **L7** A short chat (<20 msgs) behaves normally — all visible, no spinner. +- [x] **L8** "Jump to bottom" appears when scrolled up, and works. -## J — Jobs (`/jobs`) — H1 — 0/8 +## J — Jobs (`/jobs`) — H1 — 8/8 ✅ -- [ ] **J1** Click a job row → URL changes to `/jobs/`. -- [ ] **J2** The clicked job's detail renders on the right. -- [ ] **J3** The active row is highlighted. -- [ ] **J4** Right-click a row → "Copy link" gives `/jobs/`. -- [ ] **J5** The row's stop/delete button works and does **not** navigate. -- [ ] **J6** Refresh on `/jobs/` → same job detail loads. -- [ ] **J7** Both panels (Running/Queued **and** History) navigate correctly. -- [ ] **J8** Different detail types still render (script terminal / pipeline steps / download). +- [x] **J1** Click a job row → URL changes to `/jobs/`. +- [x] **J2** The clicked job's detail renders on the right. +- [x] **J3** The active row is highlighted. +- [x] **J4** Right-click a row → "Copy link" gives `/jobs/`. +- [x] **J5** The row's stop/delete button works and does **not** navigate. +- [x] **J6** Refresh on `/jobs/` → same job detail loads. +- [x] **J7** Both panels (Running/Queued **and** History) navigate correctly. +- [x] **J8** Different detail types still render (script terminal / pipeline steps / download). -## D — Dashboards (`/dashboards`) — H2 — 0/13 (highest risk: never runtime-tested) +## D — Dashboards (`/dashboards`) — H2 — 2/13 (highest risk: never runtime-tested) -- [ ] **D1** Click a row → URL becomes `/dashboards?selected=`. -- [ ] **D2** The preview panel shows that dashboard. +- [x] **D1** Click a row → URL becomes `/dashboards?selected=`. +- [x] **D2** The preview panel shows that dashboard. - [ ] **D3** The clicked row is highlighted. - [ ] **D4** Preview's "open" arrow overlay → `/dashboards/` (full page). - [ ] **D5** "New Dashboard" → create form appears; `?selected=` cleared from the URL.