Skip to content

feat(frontend): header nav redesign — grouped pill track (Option B) - #64

Merged
reik merged 7 commits into
masterfrom
feat/header-nav-redesign
Aug 22, 2026
Merged

feat(frontend): header nav redesign — grouped pill track (Option B)#64
reik merged 7 commits into
masterfrom
feat/header-nav-redesign

Conversation

@reik

@reik reik commented Aug 22, 2026

Copy link
Copy Markdown
Owner

Summary

  • Desktop Navbar restyled to Option B ("Grouped Track") of 3 mocked directions: icon-only nav links inside one pill-shaped track, active page shown as a filled brand-primary-pressed "puck," name/city-state/sign-out cluster collapsed into one avatar+name AccountChip with a keyboard-operable disclosure (Escape closes + returns focus to the trigger).
  • Fixed a real bug caught mid-build: user.name is a household display name ("The Anderson Family"), not a person's name, so the original first-name-extraction spec broke visibly. Chip now shows the full name, truncated past 24 chars.
  • Promoted two new entries into fofafu_vault/standards/design-system.md: a size.hitTarget.min token (44px) and a "Pill Track" pattern (extends the existing "pill-only CTAs" principle to nav chrome).
  • Opened two fast-follows rather than leaving them as footnotes: navbar-component-extraction (code-review must-fix — Navbar() is a 238-line monolith, non-blocking) and auth-user-name-semantics (the household-vs-personal-name product question, independently flagged by 3 specialists).

Routed through this repo's dispatcher: engineering (frontend-dev, qa-engineer, e2e-test-writer, code-reviewer) + design (ui-designer, a11y-auditor), both team-leads aggregated to status: review. Full trail in fofafu_vault/features/header-nav-redesign.md and fofafu_vault/log/2026-08-2{0,1,2}.md.

Screenshots

Desktop header, 1280px viewport, same demo account in both (docs/screenshots/header-nav-redesign/):

Before
Before: icon+label links, exposed name/city-state/sign-out button

After
After: icon-only pill track, active puck, avatar+name chip

Test plan

  • tsc --noEmit clean
  • Frontend suite 167/167 passing (32/32 files), independently reverified by tech-lead against HEAD
  • a11y-auditor's 3 blocking findings (avatar-initial contrast, missing aria-label on desktop nav links, keyboard-operable sign-out) fixed and independently reverified by design-lead against the shipped component
  • 7 Playwright specs written and reconciled against the landed markup (frontend/e2e/header-nav-redesign.spec.ts); registration verified (--list), not executed live — no frontend/.env in this sandbox, a pre-existing gap shared with the rest of the E2E suite (e.g. playdates.spec.ts), not something this PR introduces
  • Live E2E run against a real Supabase project (needs frontend/.env + seeded data)

🤖 Generated with Claude Code

reik and others added 4 commits August 21, 2026 18:08
Desktop Navbar becomes one icon-only pill track with a filled-puck active
state, aria-hidden hover/focus tooltips, and an avatar+first-name chip
replacing the name/city-state/outlined-sign-out cluster. Applies
ui-designer's Visual spec (surface-subtle hover, Nunito tooltip, rounded-sm)
and a11y-auditor's blocking Accessibility fixes (brand-primary-pressed for
contrast, aria-label on every desktop link, Escape-close-and-refocus on the
account disclosure). Wires the already-ratified surface.subtle token into
tailwind.config.js. Mobile tab bar untouched (desktop-header-only).

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
…plit

user.name in this app is a household display name ("The Anderson Family"),
not a person's name, so extracting a "first name" produced "The" for every
real account. Drop firstName() entirely; the chip's visible name and the
trigger's aria-label now use user.name directly (matching what the
pre-redesign Navbar already showed, relocated into the new chip), with
max-w-[24ch] truncate on the visible span per the precedent set in
community-playdate-badge. Avatar initial (first character, not first
token) is unaffected.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
…esign

Navbar.a11y-behavior.test.tsx (qa-engineer, 31 tests) and
e2e/header-nav-redesign.spec.ts (e2e-test-writer, 7 Playwright specs)
covering the Option B grouped-pill-track redesign landed in c9dfe2d/1bd5833.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
…Track pattern

Both team-leads returned status: success, requested_status: review.
Engineering: frontend-dev/qa-engineer/e2e-test-writer/code-reviewer all
returned success; frontend 167/167, tsc clean. Design: ui-designer/
a11y-auditor returned success; all 3 a11y-blocking findings fixed and
independently reverified. Promoted ui-designer's proposals into
design-system.md: a new Tokens — Size section (size.hitTarget.min = 44px)
and a new Patterns section ("Pill Track", extending principle #3 from
CTAs to nav chrome).

Opened two fast-follow feature files rather than leaving them as
must-fix/notes footnotes:
- navbar-component-extraction: code-review must-fix #2 (Navbar() is a
  238-line monolith; ui-designer's named component anatomy was never
  extracted), judged non-blocking by tech-lead.
- auth-user-name-semantics: AuthUser.name is a household display name,
  not a person's name, independently flagged by 3 specialists mid-build
  after the redesign's first-name-extraction spec broke visibly.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
@vercel

vercel Bot commented Aug 22, 2026

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated (UTC)
fofafu-frontend Ready Ready Preview Aug 22, 2026 5:22pm

Desktop header, 1280px viewport: pre-redesign (icon+label links, exposed
name/city-state/sign-out) vs. Option B grouped pill track (icon-only,
active puck, avatar+name chip). Captured against a temporary demo auth
state, not committed — real auth wasn't reachable in this sandbox (no
Supabase credentials), same gap already documented against the E2E suite.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Never actually written down before, in CLAUDE.md, engineering-standards.md,
or any role file — which is why it kept not happening despite being asked
for repeatedly. Added:
- CLAUDE.md Conventions: top-level pointer, applies with or without /dispatch
- engineering-standards.md Conventions: the actual convention (path, URL
  format, honesty requirement when live capture isn't possible)
- frontend-dev.md Loop: a concrete step so specialists do this without
  being asked case-by-case

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Simpler than reconstructing the old component from git history once the
change already landed. before.png now happens at the start of step 2
(against the still-unmodified component), after.png at the end — same
ordering a human would naturally use.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
@reik
reik marked this pull request as ready for review August 22, 2026 18:17
@reik
reik merged commit 2792d21 into master Aug 22, 2026
4 checks passed
reik added a commit that referenced this pull request Aug 25, 2026
* vault: ship header-nav-redesign (PR #64 merged to master)

--ship transition: engineering + design kanban cards moved Review -> Done,
company kanban moved Review -> Done, feature status review -> shipped.
Post-ship docs/user-guide.md check via content-writer: no edit warranted
(guide never described the old nav's visual form). marketing-lead
aggregated and confirmed, no marketing kanban card existed to move
(marketing was never routed to this feature during build).

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>

* vault: log PR #65 conflict resolution + gateguard correction

- Resolved PR #65's merge conflicts against master (kanban/company.md,
  kanban/engineering.md, log/2026-08-22.md), caused by #66/#67 landing
  on master after this PR's merge-base.
- Corrects the record on the recurring "[Fact-Forcing Gate]" tool
  error that multiple prior sessions flagged as unexplained/injected:
  it's a real PreToolUse hook from the everything-claude-code plugin's
  gateguard skill, not injection.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>

* vault: log PR #65 second conflict resolution (master moved past #68)

---------

Co-authored-by: Claude Sonnet 5 <noreply@anthropic.com>
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