Skip to content

v0.9 Phase 2: Sidebar + shell layout#65

Merged
jacuzzicoding merged 2 commits into
developmentfrom
feature/v09-phase-2-sidebar
May 3, 2026
Merged

v0.9 Phase 2: Sidebar + shell layout#65
jacuzzicoding merged 2 commits into
developmentfrom
feature/v09-phase-2-sidebar

Conversation

@jacuzzicoding
Copy link
Copy Markdown
Owner

Summary

Phase 2 of v0.9.0-beta per docs/v0.9-plan.md § Phase 2 — Sidebar + Shell Layout.

Replaces MuseumHeader + TabBar + TownSwitcher with a single 280px sticky left Sidebar and a CSS-grid app shell. React Router routes and URL structure are fully preserved.

What changed

  • New src/components/Sidebar.tsx — brand mark/wordmark, active-town card, vertical nav (<NavLink>) with per-category donated/total counts and active-state styling, footer with Export CSV + Settings.
  • New shell CSS in src/index.css.ac-app (grid-template-columns: 280px 1fr, max-width: 1440px centered), .ac-sidebar (sticky, full height, scrollable), .ac-main (32×48px padding, 24×20px below 980px), nav/town/brand/footer styles, and the 980px breakpoint that stacks sidebar above main.
  • ACCanvas.tsx refactored — old wrapper div + parchment gradient/grid background removed; mounts Sidebar + <main className="ac-main">. Hydration guard, modals, and tab switch are all unchanged.
  • Sea nav entry gated on gameId in {ACNL, ACNH} and data.sea_creatures.length > 0.
  • Art nav entry hidden for games without art.
  • Hemisphere toggle for ACNH inline in the sidebar town card (preserves the v0.8 toggle that previously lived in MuseumHeader).
  • Deleted: MuseumHeader.tsx, TabBar.tsx, TownSwitcher.tsx.
  • Docs: CHANGELOG entry under v0.9.0-beta Phase 2; CLAUDE.md updated (file structure + shell layout note).

Decisions

  • Brand wordmark = "Museum Tracker", not "Curator", per the codename note in docs/v0.9-plan.md ("No user-facing copy should say Curator").
  • "Switch town ›" stub (Phase 4 will replace with TownManager): if no other towns → opens CreateTownModal; one other → activates it; multiple → window.prompt picker. Lightweight bridge so users keep town-switching between Phase 2 and Phase 4.
  • Edit / + New town links added next to "Switch town" in the active-town card. The plan's footer spec is "Export CSV + Settings only", but without these links users would lose town-CRUD between Phase 2 and Phase 4 (it lived in the now-deleted TownSwitcher). Both reuse the existing modals, which Phase 4 retires.
  • Hemisphere toggle moved into the sidebar town card for ACNH only. Plan's Phase 2 spec calls for a display-only meta line; the toggle was previously in MuseumHeader and removing it cold would regress v0.8 functionality. Phase 4 moves it into TownManager.
  • Settings link routes to /settings (route lands in Phase 3) — clicking it now will fall through to the catch-all redirect.
  • No CategoryProgress bar in sidebar yet — the plan retires CategoryProgress once ProgressMeter ships in Phase 6. Phase 2 uses just nav counts.

Test plan

  • npm run build passes (tsc + vite build, zero errors)
  • npm test passes (59/59)
  • ESLint + Prettier pass via pre-commit
  • Manual verify on dev preview: all 5 tab routes load; nav active state tracks URL; sea nav appears only on ACNL/ACNH; sidebar stacks above main below 980px; hemisphere toggle persists for ACNH

🤖 Generated with Claude Code

- New Sidebar component (280px sticky) with brand, active town card,
  per-category nav with donated/total counts, footer (Export + Settings)
- App shell CSS in index.css: .ac-app grid (280px 1fr), max-width 1440px,
  stacks above main below 980px
- ACCanvas refactored to mount Sidebar + <main className="ac-main">;
  outer gradient/grid background removed in favor of --bg
- Hemisphere toggle relocated to sidebar town card for ACNH (was in
  MuseumHeader); will move into TownManager in Phase 4
- Switch town stub: cycles between towns or opens CreateTownModal —
  full TownManager drawer ships in Phase 4
- Deleted: MuseumHeader, TabBar, TownSwitcher
- CHANGELOG + CLAUDE.md updated

Per docs/v0.9-plan.md Phase 2.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
@vercel
Copy link
Copy Markdown

vercel Bot commented May 3, 2026

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

Project Deployment Actions Updated (UTC)
animalcrossingwebapp Ready Ready Preview, Comment May 3, 2026 10:29pm

- package.json version → 0.9.0-beta (footer/UI version flows from here via vite define)
- README.md: clarify v0.8.2-alpha is last stable, v0.9.0-beta in active dev
- CLAUDE.md: update current-version line to reflect Phase 2 shipped
- docs/v0.9-plan.md: mark Phase 1 (PR #63) and Phase 2 (PR #65) as shipped
- README sea-creatures note updated (TabBar → sidebar nav)

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
@jacuzzicoding
Copy link
Copy Markdown
Owner Author

Pushed follow-up commit 8aa1ba0 for the two doc cleanups:

Version bump → 0.9.0-beta

  • package.json0.9.0-beta. The footer pulls VITE_APP_VERSION from here via vite.config.ts define, so the in-app version chip will now read v0.9.0-beta automatically.
  • Convention check: existing tags use -alpha with no .N iteration suffix (v0.8.0-alpha, v0.8.1-alpha, v0.8.2-alpha), so I went with 0.9.0-beta to match — not -beta.0 or -dev.

Doc sweep

  • README.md — current-release line now reads "v0.8.2-alpha (last stable). Active development: v0.9.0-beta"; sea-creatures aside updated TabBar → sidebar nav.
  • CLAUDE.md — current-version line now mentions Phase 2 shipped + points at docs/v0.9-plan.md as canonical.
  • docs/v0.9-plan.md — Phase 1 + Phase 2 marked ✅ shipped (PR v0.9 Phase 1: tokens + fonts (Meadow + Fraunces/Inter) #63 / PR v0.9 Phase 2: Sidebar + shell layout #65).
  • CHANGELOG.md — already had Phase 1 + Phase 2 entries from the prior commits, no change needed.
  • No nested CLAUDE.md, no docs/version-history.md. public/version-history.html left as-is (it's a long static landing page tracking shipped releases, not in-progress work).
  • docs/architecture.md header still says v0.8 — left alone since v0.9 architecture is still landing phase-by-phase; will refresh when v0.9.0-beta tags.

npm run build ✅ green.

@jacuzzicoding jacuzzicoding merged commit 3e6e796 into development May 3, 2026
3 checks passed
@jacuzzicoding jacuzzicoding mentioned this pull request May 4, 2026
6 tasks
@jacuzzicoding jacuzzicoding deleted the feature/v09-phase-2-sidebar branch May 4, 2026 23:16
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