Files
platform/docs/nav-test-checklist.md
T
pastilhasandClaude Opus 5 71c32b8044 checklist: the run is finished
41 of the 56 run, 15 voided with the projects feature. Three defects found and fixed —
the chat cwd picker (f5d3024), dashboards losing the selection on edit and an abandoned
edit following you to the next one (4970e7e) — plus the layout shift on every link click
(9b9012d), which turned up while testing rather than from the list.

D12-edit on mobile stays broken by decision, recorded in the file with its cause.

Folds docs/nav-test-remaining.md back in: it existed to hand the last six checks over to
be run separately, and they were run together instead, so keeping two files that disagree
would be worse than one.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-07-30 08:25:19 +00:00

6.2 KiB
Raw Blame History

Navigation refactor + sidecars — runtime test checklist

Complete. 41 checks run, 15 voided when Projects was removed. Three defects found and fixed: C4 (d8cf79b), D7/D8 (18e732f), plus an unrelated layout bug found along the way (1a5c6c8). One known issue left unfixed on purpose: D12-edit on mobile.

Provenance: written by the session that did the navigation refactor (eff24773, last message 2026-07-30T06:21Z) and never saved before that session was lost. Recovered from its transcript.

Pre-req: master at 3c3b67c or later covers everything, including the X block — the original note said X needed the navigation-refactor branch, but the sidecar work is merged now, so nav and sidecars are on master together. Restart before testing (pm2 restart officer) and hard-refresh the browser; a stale bundle looks exactly like a failure. Watch the console as you go.

Status key: [x] verified working · [!] found broken, fixed, re-verified · [ ] not yet tested.


C — Chat: session list & routing (/chat) — 6/6

  • C1 Click a chat row → URL changes to /chat/<id>.
  • C2 Right-click a row → "Copy link" gives /chat/<id> (a real link, not a button).
  • C3 Clicking a row loads that conversation in the right panel.
  • [!] C4 The cwd/folder picker shows the correct folder for the opened chat. Was broken — fixed.
  • C5 Refresh while on /chat/<id> → lands back in the same chat.
  • C6 Paste a /chat/<id> URL into a fresh tab → opens that chat with the right cwd.

C4: what was wrong

Opening any session from a non-default folder moved the picker to a subdirectory of that folder — three of the four sessions under ~/dockers/officer.dev jumped to platform, the fourth to Lyrics. The list stayed correct; only the picker moved, and everything after it was scoped to the wrong dir.

Two functions in claude-sessions.ts derived cwd in opposite directions:

line rule
parseSummary (builds the list) :103 if (entry.cwd && !cwd)first cwd wins
parseClaudeTranscript (opens one) :182 if (entry.cwd)last cwd wins, overwritten every entry

A transcript records a cwd on every entry, so the last one is wherever a tool happened to cd — not the session's home. Fixed by taking the first cwd in both, which is also where Claude Code files the transcript on disk.

Pre-existing, but surfaced by the nav work: once rows became real <Link>s (f35c145), clicking 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 — 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.

J — Jobs (/jobs) — H1 — 8/8

  • J1 Click a job row → URL changes to /jobs/<id>.
  • 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/<id>.
  • J5 The row's stop/delete button works and does not navigate.
  • J6 Refresh on /jobs/<id> → same job detail loads.
  • J7 Both panels (Running/Queued and History) navigate correctly.
  • J8 Different detail types still render (script terminal / pipeline steps / download).

D — Dashboards (/dashboards) — H2 — 12/13 (D12-edit on mobile: not fixed, mobile web being retired)

  • D1 Click a row → URL becomes /dashboards?selected=<id>.
  • D2 The preview panel shows that dashboard.
  • D3 The clicked row is highlighted.
  • D4 Preview's "open" arrow overlay → /dashboards/<id> (full page).
  • D5 "New Dashboard" → create form appears; ?selected= cleared from the URL.
  • D6 Create a dashboard → navigates to the full /dashboards/<id>.
  • [!] D7 Edit (pencil) → edit form appears; does not navigate.
  • D8 Save an edit → preview shows the edited dashboard (?selected=<newid>).
  • D9 Delete → removed; if it was selected, the preview clears.
  • D10 Edit/delete buttons do not trigger navigation (siblings of the link, not nested).
  • D11 A dashboard row outside /dashboards opens /dashboards/<id> directly.
  • [~] D12 Mobile: selecting shows the detail panel; back clears it.
  • D13 Deep-link /dashboards?selected=<id> in a fresh tab → preview shows it.

P — Projects — DROPPED

The Projects feature was removed rather than fixed (see the deletion commit). All 15 P checks are void.

It had the same two defects Dashboards had — edit clearing ?selected=, and an abandoned edit following you to the next item — plus the same structure that caused them: the form reachable only through the empty state. None of it was worth repairing for a feature being retired.

X — Chat lazy-load × sidecars — 3/3

  • X1 Open a long chat → no spurious "⚠️ some output could not be recovered" banner.
  • X2 Send a new turn → appends correctly below the loaded tail.
  • X3 Scroll up to load history, then send a turn / reconnect → prepended older messages are not wiped.

R — Quick regressions — 3/3

  • R1 Search/filter boxes in Jobs / Dashboards / Projects still filter the list.
  • R2 No new console errors on /jobs, /dashboards, /projects, /chat.
  • R3 Browser back/forward moves between selections sensibly (selection is in the URL now).