Files
GearBox/.planning/STATE.md
Jean-Luc Makiola 15c9f94d67
Some checks failed
CI / ci (push) Failing after 17s
CI / e2e (push) Has been skipped
CI / deploy (push) Has been skipped
docs(phase-30): complete phase execution — onboarding redesign
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-12 20:50:09 +02:00

5.1 KiB

gsd_state_version, milestone, milestone_name, status, stopped_at, last_updated, last_activity, progress
gsd_state_version milestone milestone_name status stopped_at last_updated last_activity progress
1.0 v2.2 User Experience Polish executing Phase 31 context gathered 2026-04-12T18:50:04.872Z 2026-04-12
total_phases completed_phases total_plans completed_plans percent
36 24 67 65 97

Project State

Project Reference

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. Current focus: Phase 30 — Onboarding Redesign

Current Position

Phase: 31 Plan: Not started Status: Executing Phase 30 Last activity: 2026-04-12

Progress: [░░░░░░░░░░] 0%

Performance Metrics

Velocity:

  • Total plans completed: 67 (all milestones through v2.0)
  • v1.3: 6 plans across 4 phases (2026-03-16 to 2026-04-08)
  • v2.0: 32 plans across 10 phases (2026-03-17 to 2026-04-08)

Updated after each plan completion

Accumulated Context

Decisions

Key decisions carried forward from v2.0:

  • External auth provider: Logto (self-hosted OIDC) — RESOLVED
  • Structured UGC only — ratings and predefined fields, no freeform text — ACTIVE
  • Separate globalItems table — not a flag on user items table — RESOLVED
  • COALESCE merge for reference items — RESOLVED
  • Detail pages replacing slide-out panels — RESOLVED

v2.1 decisions:

  • Product images: manufacturer images with attribution and source link, honor takedown requests — RESOLVED
  • Catalog data: open datasets + manufacturer specs + agent MCP enrichment — RESOLVED
  • Public-first: auth model rework before content features — RESOLVED
  • Phase 999.3 (Public Access Auth Model backlog item) is now Phase 24 — PROMOTED
  • [Phase 24-public-access-infrastructure]: createRateLimit factory pattern for configurable rate limiting per endpoint tier
  • [Phase 24-public-access-infrastructure]: Browse tier 120/min, detail tier 60/min — same limits for auth and anon users
  • [Phase 24]: Both auth prompt CTAs go to /login — Logto handles sign-in and sign-up at the same OIDC endpoint
  • [Phase 24]: Soft navigate() replaces hard window.location.href for private route redirect — defers until auth resolves
  • [Phase 25-catalog-enrichment-agent-tools]: Three-way tag sync: undefined=leave untouched, []=clear all, [names]=replace — enables selective tag updates from catalog agents
  • [Phase 25-catalog-enrichment-agent-tools]: unique(brand, model) constraint on globalItems: enables safe ON CONFLICT DO UPDATE for catalog enrichment agents
  • [Phase 25-catalog-enrichment-agent-tools]: Catalog MCP tools use registerCatalogTools(db) without userId — shared catalog needs no user scoping
  • [Phase 25-catalog-enrichment-agent-tools]: Attribution spacing: image div removes mb-6, attribution paragraph takes mb-6, fallback div ensures consistent spacing
  • [Phase 26-discovery-landing-page]: Composite cursor for setups uses itemCount_id format filtered post-query in JS for simplicity with grouped SQL
  • [Phase 26-discovery-landing-page]: No cursor pagination for getTrendingCategories — bounded small list, simple limit is sufficient
  • [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]: 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
  • [Phase 27]: Wave 0 tests use test.fixme for removed dashboard cards — preserves test intent for future reference
  • [Phase 27]: Old setups tab test replaced with fallback-to-gear assertion matching the Zod .catch('gear') behavior planned in Plans 01-03
  • [Phase 27]: Used 'house' icon instead of plan-specified 'home': lucide-react has no Home icon, only House — prevents Package fallback rendering in navigation

Pending Todos

None active.

Blockers/Concerns

None.

Quick Tasks Completed

# Description Date Commit Directory
260411-022 Fix global items search bar layout - too tall and hard to navigate back 2026-04-10 ef48891 260411-022-fix-global-items-search-bar-layout-too-t
260411-0zq Redesign search UX — real nav search bar navigating to /global-items?q= 2026-04-10 334bf33 260411-0zq-redesign-search-ux-bigger-nav-search-bar
260411-1h2 Rebuild global items page with sticky toolbar and inline filters 2026-04-10 ee3b6f7 260411-1h2-rebuild-global-items-page-with-sticky-se

Session Continuity

Last session: 2026-04-12T18:01:20.416Z Stopped at: Phase 31 context gathered Resume file: .planning/phases/31-mobile-polish/31-CONTEXT.md