Files
platform/docs/nav-test-checklist.md
T
pastilhasandClaude Opus 5 67b91a7976 checklist: C, L and J pass; D under way
24 of 56 verified in the browser. C4 was the only failure (fixed in f5d3024). J1 looked
slow at first on a cold tab — the bundle had just been regenerated by a restart, and an
empty jobs list is indistinguishable from a loading one; GET /api/jobs answers in 3-5ms,
so there was nothing behind it.

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

6.6 KiB
Raw Blame History

Navigation refactor + sidecars — runtime test checklist

56 checks. Each line is a single yes/no. Reference them as "J3 works, D5 needs fix".

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 — 2/13 (highest risk: never runtime-tested)

  • 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 (/projects) — H3 — 0/15 (mirror of D, also never runtime-tested)

  • P1 Click a row → URL becomes /projects?selected=<id>.
  • P2 The preview shows that project.
  • P3 The clicked row is highlighted.
  • P4 Preview "open" arrow → /projects/<id> (full page).
  • P5 "New Project" → create form; ?selected= cleared.
  • P6 Create a project → navigates to /projects/<id>.
  • P7 Edit (pencil) → edit form; no navigation.
  • P8 Save an edit → preview shows the edited project (?selected=<newid>).
  • P9 Delete → removed; clears preview if selected.
  • P10 Publish (rocket) → opens the publish dialog; does not navigate.
  • P11 Publish/edit/delete buttons don't trigger navigation.
  • P12 A project row outside /projects opens /projects/<id> directly.
  • P13 /projects/new → lands on /projects in create mode.
  • P14 Mobile: select shows detail; back clears it.
  • P15 Deep-link /projects?selected=<id> → preview shows it.

X — Chat lazy-load × sidecars — 0/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 — 0/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).