From b6930aff9446a7fb83a9aadcf274a9d89f5e44a3 Mon Sep 17 00:00:00 2001 From: Mao Nakamoto <41178744+maonakamoto@users.noreply.github.com> Date: Mon, 31 Aug 2026 12:50:06 +0200 Subject: [PATCH] fix(nav): the app knew which page you were on and never said it MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Both nav surfaces compared `pathname === link.href` to paint a highlight and set no aria-current, so the current page existed only for people who can see it. There were zero occurrences of aria-current in the whole repo. - Desktop and mobile nav links announce aria-current="page". - The project step rail announces aria-current="step" — it is a progress rail through one project, and `step` is the token for exactly that; `page` would claim something else. Three targets were also under the 44px touch floor, which this repo enforced nowhere: nav links (py-2 on text-sm, ~36px), step pills (~36px), and the mobile menu button (h-10 w-10 = 40px) — the one control a phone user must hit to reach any other page. All now min-h-11 / h-11 w-11. The hamburger also gains aria-expanded and an aria-label, which it had neither of. No visual change beyond the target sizes; the active styling is untouched. Found by the fleet nav-contract audit, which flags a repo whose navigation computes an active state and never announces it anywhere. Co-Authored-By: Claude Opus 5 (1M context) Claude-Session: https://claude.ai/code/session_01XeELB8b3N4JrT2asYL9WvE --- app/src/components/layout/AppShell.tsx | 15 +++++++++++++-- app/src/components/layout/ProjectStepNav.tsx | 7 ++++++- 2 files changed, 19 insertions(+), 3 deletions(-) diff --git a/app/src/components/layout/AppShell.tsx b/app/src/components/layout/AppShell.tsx index 786e43b..f8a74a4 100644 --- a/app/src/components/layout/AppShell.tsx +++ b/app/src/components/layout/AppShell.tsx @@ -84,8 +84,14 @@ export function AppShell({ children }: { children: ReactNode }) { setMobileMenuOpen(!mobileMenuOpen)} > {mobileMenuOpen ? : } @@ -159,6 +169,7 @@ export function AppShell({ children }: { children: ReactNode }) {