Commit Graph

141 Commits

Author SHA1 Message Date
414f2b726e docs: capture todo - Replace planning category filter select with icon-aware dropdown 2026-03-15 18:09:55 +01:00
dbd217b9e5 docs(phase-6): complete phase execution 2026-03-15 18:04:26 +01:00
2b8061d958 docs(06-03): complete display component icon migration plan
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-15 18:00:45 +01:00
ce4654b507 docs(06-02): complete category icon UI components plan
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-15 17:59:16 +01:00
9fcb07c96b chore(06-03): update auto-generated route tree and clean up emoji references
- Route tree regenerated after icon migration changes
- Old EmojiPicker.tsx and emojiData.ts files removed (were untracked)
- Zero emoji references remain in src/

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-15 17:58:57 +01:00
570bcea5c9 feat(06-02): replace EmojiPicker with IconPicker across all category components
- CategoryPicker shows LucideIcon prefix and uses IconPicker for inline create
- CategoryHeader displays LucideIcon in view mode and IconPicker in edit mode
- OnboardingWizard uses IconPicker for category creation step
- CreateThreadModal drops emoji from category select options
- Fixed categoryEmoji -> categoryIcon in routes and useCategories hook

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-15 17:57:56 +01:00
615c8944c4 feat(06-03): update display components to use categoryIcon with LucideIcon
- Rename categoryEmoji to categoryIcon in ItemCard, CandidateCard, ThreadCard, ItemPicker
- Import and render LucideIcon at appropriate sizes (36px placeholder, 14-16px badges)
- Update hook interfaces to match server API (categoryIcon instead of categoryEmoji)
- Rename iconData.ts to iconData.tsx (contains JSX)
- Update useCategories mutation type to use icon instead of emoji

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-15 17:57:21 +01:00
59d1c891f9 feat(06-02): create IconPicker component with search and group tabs
- Portal-based popover with Lucide icon grid organized by 8 groups
- Search filters icons by name and keywords across all groups
- Click-outside and Escape key close the popover
- Trigger button displays selected icon or "+" placeholder

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-15 17:53:55 +01:00
7d4777a4a4 docs(06-01): complete category icon data layer plan
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-15 17:52:18 +01:00
fca1eb7d34 feat(06-01): install lucide-react and create icon data with LucideIcon component
- Install lucide-react v0.577.0
- Create iconData.ts with 119 curated icons across 8 groups
- Add LucideIcon component with kebab-to-PascalCase conversion and fallback
- Export EMOJI_TO_ICON_MAP for migration compatibility
- Build succeeds with new dependency

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-15 17:49:56 +01:00
546dff151b feat(06-01): migrate categories from emoji to Lucide icon field
- Rename emoji column to icon in schema, Zod schemas, and all services
- Add Drizzle migration with emoji-to-icon data conversion
- Update test helper, seed, and all test files for icon field
- All 87 tests pass with new icon-based schema

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-15 17:48:23 +01:00
78e38df27a docs(06-category-icons): create phase plan 2026-03-15 17:42:30 +01:00
5bd7d45a99 docs(state): record phase 6 context session 2026-03-15 17:37:03 +01:00
0c73427671 docs(06): capture phase context 2026-03-15 17:36:55 +01:00
28ceb3c6ef docs(phase-5): complete phase execution 2026-03-15 17:18:45 +01:00
da4f46a852 docs(05-02): complete image placeholders and thumbnails plan
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-15 17:15:53 +01:00
acf34c33d9 feat(05-02): add always-visible 4:3 image area with placeholders to ItemCard and CandidateCard
- Replace conditional image rendering with always-present 4:3 aspect ratio area
- Show category emoji centered on gray background when no image exists
- Ensures consistent card heights across grid layouts

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-15 17:14:20 +01:00
036d8ac183 docs(05-01): complete image display fix and hero area plan
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-15 17:12:54 +01:00
3243be433f feat(05-01): redesign ImageUpload as hero area and move to top of forms
- Full-width 4:3 aspect ratio hero image area with rounded corners
- Placeholder state: gray background with ImagePlus icon and helper text
- Preview state: object-cover image with circular X remove button
- Upload state: semi-transparent spinner overlay
- Entire area clickable to upload/replace image
- Moved ImageUpload to first element in both ItemForm and CandidateForm
- Removed redundant "Image" label wrappers

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-15 17:11:18 +01:00
8c0529cd60 fix(05-01): add imageFilename to Zod validation schemas
- Root cause: Zod schemas for createItem and createCandidate did not
  include imageFilename field, so @hono/zod-validator silently stripped
  it from validated payloads before reaching the service layer
- Images uploaded successfully but filename was never persisted to DB
- Added imageFilename as optional string to both createItemSchema and
  createCandidateSchema

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-15 17:09:59 +01:00
a52fa3b24c docs(05): create phase plan for image handling 2026-03-15 17:06:33 +01:00
bb8fc59d03 docs(state): record phase 5 context session 2026-03-15 17:02:35 +01:00
71f3a85167 docs(05): capture phase context 2026-03-15 17:02:27 +01:00
78f7f620a1 docs(phase-4): complete phase execution 2026-03-15 16:43:25 +01:00
65fe350209 docs(04-02): complete planning tab frontend overhaul plan
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-15 16:40:25 +01:00
d05aac0687 feat(04-02): overhaul PlanningView with empty state, pill tabs, and category filter
- Replace inline thread creation form with modal trigger
- Add educational empty state with 3-step workflow guide
- Add Active/Resolved pill tab selector replacing checkbox
- Add category filter dropdown for thread list
- Display category emoji + name badge on ThreadCard
- Add aria-hidden to decorative SVG icons for a11y
- Auto-format pre-existing indentation issues (spaces to tabs)

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-15 16:38:48 +01:00
eb79ab671e feat(04-02): add CreateThreadModal and uiStore modal state
- Add createThreadModalOpen state to uiStore with open/close actions
- Create CreateThreadModal with name input and category dropdown
- Modal submits via useCreateThread with name + categoryId
- Fix pre-existing formatting in uiStore.ts (spaces to tabs)

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-15 16:36:51 +01:00
4a31a16e0e docs(04-01): complete database thread categoryId plan
- SUMMARY.md documents 2 tasks, 1 deviation (test fixes)
- STATE.md advanced to plan 1/2 in phase 4
- ROADMAP.md marks 04-01 complete
- REQUIREMENTS.md marks DB-01 and PLAN-01 complete

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-15 16:33:40 +01:00
ed8508110f feat(04-01): update thread service, routes, and hooks for categoryId
- createThread now inserts categoryId from data
- getAllThreads joins categories table, returns categoryName/categoryEmoji
- updateThread accepts optional categoryId
- ThreadListItem interface includes category fields
- useCreateThread hook sends categoryId
- Fix test files to pass categoryId when creating threads

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-15 16:31:48 +01:00
629e14f60c feat(04-01): add categoryId to threads schema, Zod schemas, and test helper
- Add categoryId column with FK to categories on threads table
- Update createThreadSchema to require categoryId
- Update updateThreadSchema to allow optional categoryId
- Update test helper CREATE TABLE to include category_id

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-15 16:30:46 +01:00
92afac3eb7 docs(04): create phase plan 2026-03-15 16:27:47 +01:00
80496b7f50 docs(state): record phase 4 context session 2026-03-15 16:22:40 +01:00
8e270e4d98 docs(04): capture phase context 2026-03-15 16:22:32 +01:00
9a08e5f9fd docs: create milestone v1.1 roadmap (3 phases) 2026-03-15 16:11:17 +01:00
6975b4612f docs: define milestone v1.1 requirements 2026-03-15 16:08:42 +01:00
c348c65369 docs: start milestone v1.1 Fixes & Polish 2026-03-15 16:06:06 +01:00
261c1f9d02 chore: complete v1.0 MVP milestone
Archive roadmap, requirements, and phase directories to milestones/.
Evolve PROJECT.md with validated requirements and key decisions.
Reorganize ROADMAP.md with milestone grouping.
Delete REQUIREMENTS.md (fresh for next milestone).
v1.0
2026-03-15 15:49:45 +01:00
89368c2651 docs: update retrospective for v1.0 2026-03-15 15:49:35 +01:00
f556231a38 docs(phase-3): complete phase execution
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-15 12:57:45 +01:00
477be8e926 docs(03-03): complete visual verification plan for setups and dashboard
- Auto-approved checkpoint for all Phase 3 requirements
- All 10 plans across 3 phases complete (100%)

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-15 12:54:40 +01:00
e1e30ba52b docs(03-02): complete setup frontend plan
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-15 12:52:38 +01:00
67099551d0 feat(03-02): setup list page, detail page, and item picker
- Create SetupCard component with name, item count, weight, cost display
- Build setups list page with inline create form and grid layout
- Build setup detail page with category-grouped items and sticky totals bar
- Create ItemPicker component in SlideOutPanel with category-grouped checkboxes
- Add onRemove prop to ItemCard for non-destructive setup item removal
- Setup detail has delete confirmation dialog with collection safety note
- Empty states for both setup list and setup detail pages

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-15 12:50:54 +01:00
86a7a0def1 feat(03-02): navigation restructure, TotalsBar refactor, and setup hooks
- Move collection view from / to /collection with gear/planning tabs
- Rewrite / as dashboard with three summary cards (Collection, Planning, Setups)
- Refactor TotalsBar to accept optional stats/linkTo/title props
- Create DashboardCard component for dashboard summary cards
- Create useSetups hooks (CRUD + sync/remove item mutations)
- Update __root.tsx with route-aware TotalsBar, FAB visibility, resolve navigation
- Add item picker and setup delete UI state to uiStore
- Invalidate setups queries on item update/delete for stale data prevention
- Update routeTree.gen.ts with new collection/setups routes

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-15 12:49:03 +01:00
c2b8985d37 docs(03-01): complete setup backend plan
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-15 12:44:40 +01:00
0f115a2a4b feat(03-01): implement setup backend with junction table
- Setup service with CRUD, syncSetupItems, removeSetupItem
- SQL aggregation for itemCount, totalWeight, totalCost via COALESCE
- Hono routes for all 7 endpoints with zValidator
- Mount setupRoutes at /api/setups
- All 87 tests pass (24 new setup tests)

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-15 12:43:02 +01:00
1e4e74f8d2 test(03-01): add failing tests for setup backend
- Add setups and setupItems tables to DB schema
- Add Zod schemas for setup create/update/sync
- Add Setup/SetupItem types to shared types
- Add setup tables to test helper
- Write service and route tests (RED - no implementation yet)

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-15 12:42:15 +01:00
6b773c6f79 docs(03): create phase plan for setups and dashboard 2026-03-15 12:32:23 +01:00
e633df7d0e docs(phase-3): add validation strategy 2026-03-15 12:27:18 +01:00
2424ecc0c2 docs(03): research phase domain 2026-03-15 12:26:27 +01:00
56258d7eed docs(state): record phase 3 context session 2026-03-15 12:22:31 +01:00