record the second sweep: opaque clicks a state grep cannot see
This commit is contained in:
@@ -2,9 +2,11 @@
|
|||||||
|
|
||||||
> **Status, 2026-08-07. Phases 1–4 and the cross-cutting section are closed except the two chat items.**
|
> **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 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. Two selections that the audit never listed were found afterwards by sweeping
|
> every cross-cutting line. **More sites were found by sweeping than by reading the table**, all after the
|
||||||
> for `useGlobal<` / `useState` rather than by reading the table — the email folder and the Soulseek
|
> listed rows were closed: the email folder and the Soulseek room/peer rails (`grep useGlobal<` /
|
||||||
> room/peer rails — and are done too. What remains, and only this:
|
> `useState`), and six navigations on the Invoices dashboard (`grep "onClick={() => navigate("`). All done.
|
||||||
|
> The two 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)
|
> **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
|
> 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.
|
> owner — they are not stalled here, they are somebody else's to land.
|
||||||
@@ -280,6 +282,16 @@ publishers means changing the chat panel, which is another agent's, so it is wri
|
|||||||
Sweep to re-check this later: `grep -rn "usePanelChannel\|useGlobal<" src/workspaces/officerdev/src src/apps/officer-web`.
|
Sweep to re-check this later: `grep -rn "usePanelChannel\|useGlobal<" src/workspaces/officerdev/src src/apps/officer-web`.
|
||||||
Everything it returns today is a registry, a refresh bus, a form draft, a connection state or a
|
Everything it returns today is a registry, a refresh bus, a form draft, a connection state or a
|
||||||
preference — no selections.
|
preference — no selections.
|
||||||
|
|
||||||
|
**A second sweep is needed, because the first one cannot see the commonest opaque click.** A
|
||||||
|
selection held in a channel shows up in that grep; a selection that is *only* an `onClick` closure
|
||||||
|
does not, because there is no state to grep for. The one that finds those is
|
||||||
|
`grep -rn "onClick={() => navigate(" src/apps/officer-web src/workspaces/officerdev/src`. It
|
||||||
|
returned four sites after everything above was closed — all four in
|
||||||
|
`apps/Invoices/DashboardView.tsx`, plus two more row handlers in the same file that the grep misses
|
||||||
|
because they route through an `onOpen` prop. Every one was pure navigation to an already-addressable
|
||||||
|
URL that the destination genuinely reads (`useInvoicesSection` parses both `status` and `selected`),
|
||||||
|
so they were anchors written as buttons and nothing more. Fixed in `ea1dae5`; the grep is clean now.
|
||||||
- [x] Adopt `<NavLink>` (real react-router) for all nav chrome so active state stops being JS-derived.
|
- [x] Adopt `<NavLink>` (real react-router) for all nav chrome so active state stops being JS-derived.
|
||||||
Done — `39125b5`. Note `end={item.to === '/'}`: without it NavLink treats `/` as an ancestor of
|
Done — `39125b5`. Note `end={item.to === '/'}`: without it NavLink treats `/` as an ancestor of
|
||||||
every route, and with it on the rest a detail route would lose its tile.
|
every route, and with it on the rest a detail route would lose its tile.
|
||||||
|
|||||||
Reference in New Issue
Block a user