docs(27-02): complete setups-elevation plan
This commit is contained in:
@@ -141,7 +141,7 @@ Plans:
|
|||||||
Plans:
|
Plans:
|
||||||
- [ ] 27-00-PLAN.md — Wave 0: E2E test scaffolding for nav restructure
|
- [ ] 27-00-PLAN.md — Wave 0: E2E test scaffolding for nav restructure
|
||||||
- [ ] 27-01-PLAN.md — TopNav and BottomTabBar components
|
- [ ] 27-01-PLAN.md — TopNav and BottomTabBar components
|
||||||
- [ ] 27-02-PLAN.md — Setups top-level route and Collection tab simplification
|
- [x] 27-02-PLAN.md — Setups top-level route and Collection tab simplification
|
||||||
- [ ] 27-03-PLAN.md — Root layout wiring, hero removal, and visual verification
|
- [ ] 27-03-PLAN.md — Root layout wiring, hero removal, and visual verification
|
||||||
**UI hint**: yes
|
**UI hint**: yes
|
||||||
|
|
||||||
|
|||||||
@@ -2,15 +2,15 @@
|
|||||||
gsd_state_version: 1.0
|
gsd_state_version: 1.0
|
||||||
milestone: v2.1
|
milestone: v2.1
|
||||||
milestone_name: Public Discovery
|
milestone_name: Public Discovery
|
||||||
status: verifying
|
status: executing
|
||||||
stopped_at: Phase 27 context gathered
|
stopped_at: Completed 27-02-PLAN.md
|
||||||
last_updated: "2026-04-10T21:20:26.632Z"
|
last_updated: "2026-04-10T21:44:28.010Z"
|
||||||
last_activity: 2026-04-10
|
last_activity: 2026-04-10
|
||||||
progress:
|
progress:
|
||||||
total_phases: 13
|
total_phases: 14
|
||||||
completed_phases: 3
|
completed_phases: 3
|
||||||
total_plans: 7
|
total_plans: 11
|
||||||
completed_plans: 7
|
completed_plans: 8
|
||||||
percent: 0
|
percent: 0
|
||||||
---
|
---
|
||||||
|
|
||||||
@@ -21,13 +21,13 @@ progress:
|
|||||||
See: .planning/PROJECT.md (updated 2026-04-09)
|
See: .planning/PROJECT.md (updated 2026-04-09)
|
||||||
|
|
||||||
**Core value:** Help people make better gear decisions — discover what others use, compare real-world data, and see how a potential buy affects your setup before committing.
|
**Core value:** Help people make better gear decisions — discover what others use, compare real-world data, and see how a potential buy affects your setup before committing.
|
||||||
**Current focus:** Phase 26 — discovery-landing-page
|
**Current focus:** Phase 27 — top-nav-restructure-and-search-bar-rethink
|
||||||
|
|
||||||
## Current Position
|
## Current Position
|
||||||
|
|
||||||
Phase: 999.1
|
Phase: 27 (top-nav-restructure-and-search-bar-rethink) — EXECUTING
|
||||||
Plan: Not started
|
Plan: 2 of 4
|
||||||
Status: Phase complete — ready for verification
|
Status: Ready to execute
|
||||||
Last activity: 2026-04-10
|
Last activity: 2026-04-10
|
||||||
|
|
||||||
Progress: [░░░░░░░░░░] 0%
|
Progress: [░░░░░░░░░░] 0%
|
||||||
@@ -73,6 +73,7 @@ v2.1 decisions:
|
|||||||
- [Phase 26]: discoveryRoutes registered with browseTier rate limiting (120 req/min) for all GET discovery endpoints
|
- [Phase 26]: discoveryRoutes registered with browseTier rate limiting (120 req/min) for all GET discovery endpoints
|
||||||
- [Phase 26-discovery-landing-page]: PublicSetupCard itemCount/creatorName fields are optional for backward compatibility with users/$userId usage
|
- [Phase 26-discovery-landing-page]: PublicSetupCard itemCount/creatorName fields are optional for backward compatibility with users/$userId usage
|
||||||
- [Phase 26-discovery-landing-page]: Discovery sections hide entirely (return null) when not loading and data is empty — avoids empty grid layouts
|
- [Phase 26-discovery-landing-page]: Discovery sections hide entirely (return null) when not loading and data is empty — avoids empty grid layouts
|
||||||
|
- [Phase 27]: Setups elevated to top-level /setups route; Collection page reduced to Gear and Planning tabs with .catch(gear) fallback for legacy URLs
|
||||||
|
|
||||||
### Pending Todos
|
### Pending Todos
|
||||||
|
|
||||||
@@ -84,6 +85,6 @@ None.
|
|||||||
|
|
||||||
## Session Continuity
|
## Session Continuity
|
||||||
|
|
||||||
Last session: 2026-04-10T21:20:26.629Z
|
Last session: 2026-04-10T21:44:28.007Z
|
||||||
Stopped at: Phase 27 context gathered
|
Stopped at: Completed 27-02-PLAN.md
|
||||||
Resume file: .planning/phases/27-top-nav-restructure-and-search-bar-rethink/27-CONTEXT.md
|
Resume file: None
|
||||||
|
|||||||
@@ -0,0 +1,68 @@
|
|||||||
|
---
|
||||||
|
phase: 27-top-nav-restructure-and-search-bar-rethink
|
||||||
|
plan: "02"
|
||||||
|
subsystem: client-routing
|
||||||
|
tags: [routing, navigation, setups, collection, tanstack-router]
|
||||||
|
dependency_graph:
|
||||||
|
requires: []
|
||||||
|
provides: [setups-top-level-route, collection-two-tab-ui]
|
||||||
|
affects: [src/client/routes/setups/index.tsx, src/client/routes/collection/index.tsx, routeTree.gen.ts]
|
||||||
|
tech_stack:
|
||||||
|
added: []
|
||||||
|
patterns: [createFileRoute, tanstack-router-file-based-routing, zod-search-validation]
|
||||||
|
key_files:
|
||||||
|
created:
|
||||||
|
- src/client/routes/setups/index.tsx
|
||||||
|
modified:
|
||||||
|
- src/client/routes/collection/index.tsx
|
||||||
|
decisions:
|
||||||
|
- "Setups top-level route wraps SetupsView in standard max-w-7xl container — matches Collection page layout pattern"
|
||||||
|
- "z.enum catch('gear') handles legacy /collection?tab=setups URLs gracefully — no redirect needed"
|
||||||
|
metrics:
|
||||||
|
duration: "~2 minutes"
|
||||||
|
completed: "2026-04-10T21:43:53Z"
|
||||||
|
tasks_completed: 2
|
||||||
|
tasks_total: 2
|
||||||
|
files_changed: 2
|
||||||
|
---
|
||||||
|
|
||||||
|
# Phase 27 Plan 02: Setups Elevation and Collection Tab Simplification Summary
|
||||||
|
|
||||||
|
**One-liner:** Setups promoted to standalone `/setups` route; Collection page reduced to Gear and Planning tabs with Zod `.catch("gear")` graceful fallback for legacy URLs.
|
||||||
|
|
||||||
|
## Tasks Completed
|
||||||
|
|
||||||
|
| Task | Name | Commit | Files |
|
||||||
|
|------|------|--------|-------|
|
||||||
|
| 1 | Create setups index route | 329bfce | src/client/routes/setups/index.tsx (created) |
|
||||||
|
| 2 | Remove Setups tab from Collection page | 7fd9845 | src/client/routes/collection/index.tsx (modified) |
|
||||||
|
|
||||||
|
## What Was Built
|
||||||
|
|
||||||
|
**Task 1 — /setups top-level route**
|
||||||
|
|
||||||
|
Created `src/client/routes/setups/index.tsx` using TanStack Router's `createFileRoute("/setups/")`. The route wraps `SetupsView` in the standard `max-w-7xl mx-auto px-4 sm:px-6 lg:px-8 py-6` container, matching the Collection page layout. The TanStack Router dev server auto-regenerates `routeTree.gen.ts` — file was not edited manually.
|
||||||
|
|
||||||
|
**Task 2 — Collection page simplified to 2 tabs**
|
||||||
|
|
||||||
|
Removed the Setups tab from `collection/index.tsx`:
|
||||||
|
- `TAB_ORDER` changed from `["gear", "planning", "setups"]` to `["gear", "planning"]`
|
||||||
|
- `TAB_LABELS` reduced to Gear and Planning entries
|
||||||
|
- `searchSchema` z.enum updated to `["gear", "planning"]` with `.catch("gear")` — old `?tab=setups` URLs fall back to Gear tab automatically
|
||||||
|
- `SetupsView` import removed
|
||||||
|
- Conditional render simplified to a binary: `tab === "gear"` ? `<CollectionView />` : `<PlanningView />`
|
||||||
|
- AnimatePresence, slide variants, and motion.div animation left exactly as-is
|
||||||
|
|
||||||
|
## Deviations from Plan
|
||||||
|
|
||||||
|
None — plan executed exactly as written.
|
||||||
|
|
||||||
|
## Known Stubs
|
||||||
|
|
||||||
|
None.
|
||||||
|
|
||||||
|
## Self-Check: PASSED
|
||||||
|
|
||||||
|
- `src/client/routes/setups/index.tsx` exists and contains `createFileRoute("/setups/")` and `SetupsView`
|
||||||
|
- `src/client/routes/collection/index.tsx` contains no "setups" string
|
||||||
|
- Commits 329bfce and 7fd9845 confirmed in git log
|
||||||
Reference in New Issue
Block a user