# Frontend Navigation Audit — the "opaque click" anti-pattern > **Status, 2026-08-07. Phases 1–4 and the cross-cutting section 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 and > every cross-cutting line. **More sites were found by sweeping than by reading the table**, all after the > listed rows were closed: the email folder and the Soulseek room/peer rails (`grep useGlobal<` / > `useState`), six navigations on the Invoices dashboard (`grep "onClick={() => navigate("`), and one > navigation to a URL that **had no route at all** (`/dashboards/new`, dead since `927267e` — the third > grep). All done. The three greps are written into the cross-cutting section as the standing re-check. > 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. > > **The runtime click-through has now happened** (2026-08-07, Playwright driving the system Brave against > the live server on 9010): 23 of 25 checks pass, and the two that did not are missing *data*, not > regressions — the email account list and the Soulseek room list are both empty on this machine, so there > is nothing to click. Two further "failures" were the *test* being wrong, not the app: the Dock renders a > user-pinned subset of 13 of 25 items, so `/plans` is absent by config; and `[data-sonner-toaster]` sits on > an inner `
    ` that only exists while a toast is showing. **Suspect the instrument first.** Individual > "Needs runtime test" notes below may still be true — the sweep covered the routing claims, not every row. **Date:** 2026-07-30 · **Origin:** written as exploration before any of the routing work was done. Prep work for the upcoming **full navigation refactor**. This catalogues every place the frontend navigates to / selects an **addressable entity** using a `