From 98636224ebb762148de5b079e7e52c5b359b2452 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andr=C3=A9=20Padez?= Date: Fri, 7 Aug 2026 12:52:31 +0000 Subject: [PATCH] close out the navigation audit's remaining decide-or-skip items MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Jobs step deep-link: skipped, and measured first — selectedKey is plain useState, not a channel, so it breaks none of this document's rules. The only thing anchor semantics would buy is a deep link nobody asked for. Preview slug: void, there is no Preview app. FileBrowser widget: stays local, and M4 turned that shrug into a rule — only a workspace guaranteed to host one browser may own the address bar. Phases 1-4 are now closed except H4 and the New Chat button, both of which live in the chat nucleus. Co-Authored-By: Claude Opus 5 --- docs/navigation-audit.md | 36 ++++++++++++++++++++++++++---------- 1 file changed, 26 insertions(+), 10 deletions(-) diff --git a/docs/navigation-audit.md b/docs/navigation-audit.md index c34d8647..aa748a3f 100644 --- a/docs/navigation-audit.md +++ b/docs/navigation-audit.md @@ -1,11 +1,19 @@ # Frontend Navigation Audit — the "opaque click" anti-pattern -> **Status, 2026-07-31.** H1 (jobs), H2 (dashboards) and H4's groundwork are **done** — rows are real -> ``s and selection lives in `?selected=` / `useParams`. **H3 is void: the Projects feature was -> deleted**, so every reference to `Projects/`, `SELECTED_PROJECT` and `/projects/:id` below is historical -> and should be read as an example of the pattern, not as work to do. **H4 (chat detail reading -> `sessionId` from `useParams` rather than the `chat:selected-session` channel) is the one item still -> open.** The rules in this file are current and authoritative; the findings table is a snapshot. +> **Status, 2026-08-07. Phases 1–4 are closed except the two chat items.** Every finding H1–H5 and M1–M10 +> is done, void, or decided-and-recorded, and so is every Phase 4 line. What remains, and only this: +> **H4** (chat detail reading `sessionId` from `useParams` instead of the `chat:selected-session` channel) +> and the **"New Chat"** button that depends on it. Both are inside the chat nucleus, which has its own +> owner — they are not stalled here, they are somebody else's to land. +> +> Three findings turned out to be wrong on inspection and are marked as such rather than quietly dropped: +> **H3** is void (Projects was deleted, so every `Projects/`, `SELECTED_PROJECT` and `/projects/:id` +> reference below is historical), **M7**'s "every caller inherits the opaque click" was false (it had no +> callers, and the component is deleted), and the **Preview slug** item names an app that does not exist. +> Two components — `Combobox` and `BackButton` — were deleted rather than fixed, having never been used. +> +> The rules in this file are current and authoritative; the findings table is a snapshot. +> **Nothing below has had a runtime click-through.** Every "Needs runtime test" note is still true. **Date:** 2026-07-30 · **Origin:** written as exploration before any of the routing work was done. @@ -125,9 +133,17 @@ is **one design decision** that cascades across many files: costs no extra request. En route: the row's Focus and Close buttons were nested *inside* the row `