Skip to content

fix(nav): the app knew which page you were on and never said it - #37

Merged
github-actions[bot] merged 1 commit into
mainfrom
fix/nav-contract
Aug 31, 2026
Merged

fix(nav): the app knew which page you were on and never said it#37
github-actions[bot] merged 1 commit into
mainfrom
fix/nav-contract

Conversation

@catomean

Copy link
Copy Markdown
Collaborator

Both nav surfaces compared pathname === link.href to paint a highlight and set no aria-current — the current page existed only for people who can see it. Zero occurrences of aria-current anywhere in the repo.

Fixes

  • Desktop and mobile nav links announce aria-current="page".
  • The project step rail announces aria-current="step" — it's 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, enforced nowhere in this repo: 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; active styling is untouched.

Verification

Typecheck clean, lint clean, 84 tests pass.

Found by the fleet nav-contract audit, which flags a repo whose navigation computes an active state and never announces it anywhere.

🤖 Generated with Claude Code

https://claude.ai/code/session_01XeELB8b3N4JrT2asYL9WvE

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) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01XeELB8b3N4JrT2asYL9WvE
@github-actions
github-actions Bot merged commit beb7f23 into main Aug 31, 2026
1 check passed
@github-actions
github-actions Bot deleted the fix/nav-contract branch August 31, 2026 11:35
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant