# Milestones

## v2.0 Platform Foundation (Shipped: 2026-04-08)

**Phases completed:** 10 phases, 32 plans
**Timeline:** 22 days (2026-03-17 to 2026-04-08)
**Codebase:** 23,970 LOC TypeScript (17,859 src + 6,111 tests), 210 files changed (+47,370 / -2,244)

**Key accomplishments:**

- PostgreSQL migration: 13 pgTable definitions, async services, PGlite test infrastructure, Docker Compose
- External OIDC authentication via Logto with three-way auth middleware (browser sessions, API keys, MCP OAuth)
- Multi-user data model with userId on all entities, cross-user isolation, and composite constraints
- S3 object storage via MinIO replacing local filesystem for all image operations
- Global item catalog with search, owner count aggregation, idempotent seeding, and 18-item bikepacking catalog
- User profiles with avatar, bio, public setup sharing, and visibility toggle
- Reference item model with COALESCE merge pattern for transparent global-to-personal data overlay
- Tag system for global item discovery with AND-filtered search
- Global FAB with animated mini menu and full-screen catalog search overlay with tag chip filtering
- Item and catalog detail pages replacing slide-out panels, with edit mode toggle
- Add-from-catalog flow for both collection items and thread candidates
- Manual entry fallback with non-functional catalog submission prompt

**Archive:** `.planning/milestones/v2.0-ROADMAP.md`, `.planning/milestones/v2.0-REQUIREMENTS.md`

---

## v1.3 Research & Decision Tools (Shipped: 2026-04-08)

**Phases completed:** 4 phases, 6 plans
**Timeline:** 23 days (2026-03-16 to 2026-04-08)
**Codebase:** ~8,300 LOC TypeScript, 52 files changed (+3,106 / -158)

**Key accomplishments:**

- Pros/cons text fields on candidates with full-stack support (schema, service, Zod, form, card indicator)
- Candidate ranking with sortOrder column, drag-to-reorder UI, and gold/silver/bronze rank badges
- Side-by-side comparison table with sticky labels, weight/price delta highlighting, and resolved-thread winner marking
- Setup impact preview showing per-candidate weight and cost deltas against a selected setup with replacement detection

**Archive:** `.planning/milestones/v1.3-ROADMAP.md`, `.planning/milestones/v1.3-REQUIREMENTS.md`

---

## v1.2 Collection Power-Ups (Shipped: 2026-03-16)

**Phases completed:** 3 phases, 6 plans, 11 tasks
**Timeline:** 3 days (2026-03-14 → 2026-03-16)
**Codebase:** 7,310 LOC TypeScript, 66 files changed (+7,243 / -206)

**Key accomplishments:**

- Weight unit conversion (g/oz/lb/kg) with segmented toggle wired across all 8 display call sites
- Candidate status tracking (researching/ordered/arrived) with clickable StatusBadge popup
- Sticky search/filter toolbar with text search and icon-aware CategoryFilterDropdown
- Per-setup item classification (base/worn/consumable) with click-to-cycle badge
- Recharts donut chart with category/classification toggle, hover tooltips, and weight subtotals
- Classification-preserving sync that maintains metadata across atomic setup re-sync

**Archive:** `.planning/milestones/v1.2-ROADMAP.md`, `.planning/milestones/v1.2-REQUIREMENTS.md`

---

## v1.1 Fixes & Polish (Shipped: 2026-03-15)

**Phases completed:** 3 phases, 7 plans
**Timeline:** 1 day (2026-03-15)
**Codebase:** 6,134 LOC TypeScript, 65 files changed (+5,049 / -1,109)

**Key accomplishments:**

- Fixed threads table and thread creation with categoryId support, modal dialog flow
- Overhauled planning tab with educational empty state, pill tabs, and category filter
- Fixed image display bug (Zod schemas missing imageFilename — silently stripped by validator)
- Redesigned image upload as hero preview area with 4:3 placeholders on all cards
- Migrated categories from emoji to Lucide icons with 119-icon curated picker
- Built IconPicker component with search, 8 group tabs, portal popover

**Archive:** `.planning/milestones/v1.1-ROADMAP.md`, `.planning/milestones/v1.1-REQUIREMENTS.md`

---

## v1.0 MVP (Shipped: 2026-03-15)

**Phases completed:** 3 phases, 10 plans
**Timeline:** 2 days (2026-03-14 → 2026-03-15)
**Codebase:** 5,742 LOC TypeScript, 53 commits, 114 files

**Key accomplishments:**

- Full gear collection with item CRUD, categories, weight/cost totals, and image uploads
- Planning threads with candidate comparison and thread resolution into collection
- Named setups (loadouts) composed from collection items with live totals
- Dashboard home page with summary cards linking to all features
- Onboarding wizard for first-time setup experience
- Complete test suite with service-level and route-level integration tests

**Archive:** `.planning/milestones/v1.0-ROADMAP.md`, `.planning/milestones/v1.0-REQUIREMENTS.md`

---
