From 4c2582f184f2ebc547326075707e01e6e7451845 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andr=C3=A9=20Padez?= Date: Thu, 30 Jul 2026 05:36:08 +0000 Subject: [PATCH] audit doc: mark H1-H3 done + record the ?selected= design decision Co-Authored-By: Claude Opus 4.8 --- docs/navigation-audit.md | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-) diff --git a/docs/navigation-audit.md b/docs/navigation-audit.md index 6207f530..eab1eece 100644 --- a/docs/navigation-audit.md +++ b/docs/navigation-audit.md @@ -156,11 +156,20 @@ This is the primary surface to convert to URL-driven selection. ## ✅ TO-DO — ordered for tomorrow +> **Progress — 2026-07-30, branch `navigation-refactor` (off master; NOT yet runtime-tested):** +> H1, H2, H3 implemented and tsgo-clean. **Design correction for H2/H3:** the naive "row → ``" +> would destroy the *preview-on-list* feature (that route is the full page). The faithful fix — which is what +> was implemented — moves selection out of the `SELECTED_*` global into a **`?selected=` URL param** read by +> the list, the screen (mobile panel), and the preview; rows are real ``s (`/…?selected=id` on-page, +> `/…/:id` off-page) with the action buttons kept as **siblings** of the anchor, not nested inside it. Same +> approach will suit any future "master list + live preview" screen. **Must verify on next restart:** preview, +> create/edit/delete(/publish), and mobile-panel flows on `/dashboards` and `/projects`. + ### Phase 1 — Quick wins (routes already exist; mechanical, high value) -- [ ] **H1** Jobs rows → `` (`JobsPage.tsx:108`). The clean twin of the /chat fix. -- [ ] **H2** Dashboards rows → ``; retire `SELECTED_DASHBOARD_KEY` as selection source (`DashboardListApp.tsx:133`). -- [ ] **H3** Projects rows → ``; retire `SELECTED_PROJECT` (`ProjectListApp.tsx:161`). -- [ ] **H4** Chat detail: read `sessionId` from `useParams`, retire `chat:selected-session` as source of truth (`ChatDetailPanel.tsx:136`) — **finishes the /chat fix**. +- [x] **H1** Jobs rows → `` (`JobsPage.tsx`). Done — `46482f3`. (active-row highlight already keyed off `useParams().id`.) +- [x] **H2** Dashboards rows → ``; `SELECTED_DASHBOARD_KEY` global replaced by `?selected=` URL param across `DashboardListApp`/`DashboardsScreen`/`DashboardPreview`. Done — `01365cb`. **Needs runtime test.** +- [x] **H3** Projects rows → ``; `SELECTED_PROJECT` global replaced by `?selected=` URL param across `ProjectListApp`/`ProjectListScreen`/`ProjectPreview`. Done — `2aaacc8`. **Needs runtime test.** +- [ ] **H4** Chat detail: read `sessionId` from `useParams`, retire `chat:selected-session` as source of truth (`ChatDetailPanel.tsx:136`) — **finishes the /chat fix**. *Deferred: overlaps the in-flight `sidecars-*` chat-comms work; do after that lands.* - [ ] **H5** Email rows → `` driven by `useParams().emailId`; delete the state↔URL sync effects (`EmailList.tsx:336`, `EmailScreen.tsx:27-33`). - [ ] **M8** Fix or remove the dead `/settings/resources` link (`UserMenu.tsx:51`). - [ ] Verify + convert the 4 preview "open" navigates (`DashboardPreview:355,377`, `ProjectPreview:430,457`); leave genuine post-mutation redirects.