Files
platform/docs/nav-test-checklist.md
T
pastilhasandClaude Opus 5 5a1e3d7e0b remove the projects feature
Being retired, so it is deleted rather than fixed — it had both defects dashboards just
had (edit dropping ?selected=, an abandoned edit following you onto the next item) and
repairing them was work for something on its way out.

Gone: the two screens and the panel apps, the three routes, the dock item and its entry
in the default dock paths (client and the three server-side copies), the page-title rule,
the app-registry entries, the barrel exports, the `projects` table with its queries and
row types, and the proj-meta/proj-layout/proj-terminals/proj-host-terminals branches in
the dashboards endpoint. The chat context and terminal state-key special cases for
`proj-layout-` went with them.

Deliberately kept: `getUserProjectsDir` in data-path.ts — the apps and dev-server routers
resolve user apps under the same on-disk Projects/ directory and are unrelated to this
feature. Nothing on disk is touched.

Needs `bun db:push` to drop the table; the schema change is the only thing standing
between the code and the database. One row was in it.

tsgo clean, 56/56 tests, no references left in src. Not yet exercised at runtime — the
restart is what will prove it.

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

6.0 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 — 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 — 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).