Skip to content

Add a mobile nav panel and surface the footer-only pages - #376

Merged
michaelbonner merged 1 commit into
masterfrom
nav-mobile-menu-and-quiet-page-links
Sep 16, 2026
Merged

michaelbonner merged 1 commit into
masterfrom
nav-mobile-menu-and-quiet-page-links

Conversation

@michaelbonner

Copy link
Copy Markdown
Owner

Why

Uses, Restaurants, and Patents were reachable only from the footer, so finding them meant scrolling past the whole page.

The obvious fix was an "Other links" dropdown in the header. It's the wrong one for three links: a More-style label promises nothing, so people don't open it, and it would buy a focus trap, an outside-click handler, and a second stacking context inside a sticky header — real machinery for very little.

What changed

Header gains Uses and drops Home, which the wordmark beside it already covers. Still three links, same width as before. Uses is the one of the three with real audience overlap: people reading the blog are the people who want the tools page.

Mobile nav. Below sm the links collapse into a labelled "Menu" disclosure panel — a word next to the bars, not a bare glyph. The panel is vertical, so rows are free and it lists the footer-only pages too; on a phone the footer is the longest possible scroll away, which is the version of this problem actually worth solving.

  • Mounts on open rather than hiding in the DOM, so its links are never focusable while closed
  • Closes on Escape (returning focus to the button), on an outside press, and after navigating
  • Positioned against the header rather than in its flow, so opening it cannot change --header-height
  • 44px touch target on the button, 42px rows in the panel
  • Current page is marked with a fill, since the wiping underline the desktop nav uses doesn't suit a full-width row

Body copy links. Patents, Restaurants, and Uses are now linked from homepage prose that is already about each subject — the tooling section links to /uses, the bio mentions the patents, the podcasts aside mentions the restaurant list. A visible link in relevant content beats a hidden menu item.

--header-height is now one value. The row no longer wraps at any width, and the button's 44px target is absorbed by less vertical padding rather than a taller bar. The old mobile value (5.5rem) had drifted 21px from what the header actually measured, which quietly over-padded every in-page anchor on mobile.

Testing

e2e/navigation.test.ts is new — 14 tests covering the desktop header, the panel's open/close paths, keyboard operation and tab order, the footer set, the new body links, and an assertion that the header measures what its token claims at 375/640/1280.

Full suite: 79 passed.

Also updated DESIGN.md and CLAUDE.md — the "taller below sm" note was now false, and the reasoning against the dropdown is worth keeping so it isn't re-litigated.

https://claude.ai/code/session_01TieSfUY4PZi6kb6AStpydh

Uses, Restaurants, and Patents were reachable only from the footer, so
finding them meant scrolling past the whole page. A "More" dropdown in the
header was the obvious fix and the wrong one: it would hide three links
behind a label that promises nothing, and cost a focus trap, an
outside-click handler, and a second stacking context inside a sticky
header.

Instead:

- The header gains Uses and drops Home, which the wordmark beside it
  already covers. Three links, same width as before.
- Below `sm` the links collapse into a labelled disclosure panel. It is
  vertical, so rows are free, and it lists the footer-only pages as well —
  on a phone the footer is the longest possible scroll away. The panel
  mounts on open so its links are never focusable while closed, closes on
  Escape (returning focus), on an outside press, and after navigating, and
  is positioned against the header so opening it cannot change the header's
  height.
- Patents, Restaurants, and Uses are linked from homepage copy that is
  already about each subject, which beats a menu item nobody opens.

`--header-height` is now one value: the row no longer wraps at any width,
and the menu button's 44px touch target is absorbed by less vertical
padding rather than a taller bar. The old mobile value had drifted 21px
from what the header actually measured.

e2e/navigation.test.ts covers the header, the panel's open/close paths and
keyboard behaviour, the footer, the new body links, and asserts the header
measures what its token claims at every width.

Claude-Session: https://claude.ai/code/session_01TieSfUY4PZi6kb6AStpydh
@chatgpt-codex-connector

chatgpt-codex-connector Bot commented Sep 16, 2026 •

Copy link
Copy Markdown

Codex Review Summary

This comment shows the latest Codex review activity on this pull request.

Review Status Commit Review trigger
📝 Code Review ✅ Completed 2026-09-16T21:33:34.899033Z 3220f43 PR opened
ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review" or "@codex security review".

Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings.

@michaelbonner
michaelbonner merged commit 188d719 into master Sep 16, 2026
5 checks passed
@michaelbonner
michaelbonner deleted the nav-mobile-menu-and-quiet-page-links branch September 16, 2026 21:37
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