ba9662aeaf
docs: add MCP server configuration and auth docs to CLAUDE.md
...
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com >
2026-04-03 13:39:07 +02:00
6f51432d42
feat: add MCP server with streamable HTTP transport at /mcp
...
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com >
2026-04-03 13:38:18 +02:00
8919829167
feat: add MCP tool handlers, definitions, and collection resource
...
Wrap existing service layer with MCP-compatible tool handlers for items,
categories, threads/candidates, setups, and image fetching. Add collection
summary resource for overview data. All 14 MCP-specific tests passing.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com >
2026-04-03 13:35:27 +02:00
a10156142f
chore: install @modelcontextprotocol/sdk
...
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com >
2026-04-03 13:31:46 +02:00
5bb728e545
feat: add password change and API key management to settings
...
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com >
2026-04-03 13:30:50 +02:00
511fece4c7
feat: add login button to header and conditional edit UI
...
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com >
2026-04-03 13:29:01 +02:00
87a367d41b
feat: add useAuth hook and login page
...
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com >
2026-04-03 13:27:23 +02:00
66dc8ec8ee
feat: register auth routes and apply write-protection middleware
...
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com >
2026-04-03 13:25:51 +02:00
e0e7bfce3e
feat: add auth routes for login, setup, and API key management
...
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com >
2026-04-03 13:24:26 +02:00
8138458d8d
feat: add auth middleware for write endpoint protection
...
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com >
2026-04-03 13:22:00 +02:00
7c4fa9d9d2
feat: add auth service with user, session, and API key management
...
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com >
2026-04-03 13:20:27 +02:00
32c7b41ce5
feat: add users, sessions, and api_keys tables
...
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com >
2026-04-03 13:18:07 +02:00
b3a13fa974
feat: add POST /api/images/from-url route
...
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com >
2026-04-03 13:17:10 +02:00
0004329895
feat: add image URL fetching service with tests
...
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com >
2026-04-03 13:15:56 +02:00
d104e9788f
feat: add imageSourceUrl to Zod schemas and service functions
...
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com >
2026-04-03 13:14:13 +02:00
1eb4a786ce
feat: add imageSourceUrl column to items and threadCandidates
...
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com >
2026-04-03 13:12:33 +02:00
0998f65c6f
chore: add .worktrees/ to gitignore
...
CI / ci (push) Failing after 19s
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com >
2026-04-03 13:09:50 +02:00
a6a4ffda2e
docs: add implementation plans for image URL fetching, auth, and MCP server
...
Three detailed implementation plans with TDD, exact code, and step-by-step tasks:
- Image URL fetching: 4 tasks (schema, Zod, service, route)
- Authentication: 9 tasks (tables, service, middleware, routes, frontend)
- MCP server: 9 tasks (SDK, tools, resources, Hono integration)
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com >
2026-04-03 13:06:46 +02:00
dde2fc241d
docs: add design specs for image URL fetching, auth, and MCP server
...
Three independent feature specs covering:
- API endpoint for fetching images from URLs with local storage
- Public-read/authenticated-write auth with sessions and API keys
- Built-in MCP server for Claude Code/Desktop integration
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com >
2026-04-03 12:53:51 +02:00
32d6babf24
update lock file
CI / ci (push) Has been cancelled
2026-03-26 08:41:21 +01:00
6fe029f531
Use prebuilt image and rename compose file
...
CI / ci (push) Failing after 14s
Replace local build with prebuilt image
Image: gitea.jeanlucmakiola.de/makiolaj/gearbox:latest
2026-03-24 09:28:31 +01:00
725901623b
chore: unify dev setup with concurrently
...
Adds concurrently to start both the Vite frontend and Hono backend simultaneously in one terminal via the `bun run dev` command. Also updates documentation in README.md and CLAUDE.md to reflect the new development workflow.
2026-03-24 09:28:31 +01:00
a826381981
docs(13): create phase plan
CI / ci (push) Failing after 19s
2026-03-17 16:53:47 +01:00
79d84f1333
docs(13): add research and validation strategy
2026-03-17 16:48:51 +01:00
798bd51597
docs(phase-13): research setup impact preview
...
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-03-17 16:47:43 +01:00
14a4c65b94
docs(phase-12): complete phase execution
2026-03-17 15:35:45 +01:00
53c2bd1614
docs(12-01): complete comparison view plan
...
- ComparisonTable component with 10 attribute rows and sticky label column
- Delta highlighting: blue-50 lightest weight, green-50 cheapest price, gray delta text
- Compare toggle in thread detail toolbar (visible for 2+ candidates)
- All COMP-01 through COMP-04 requirements marked complete
2026-03-17 15:32:24 +01:00
5b4026d36f
feat(12-01): wire compare toggle and ComparisonTable into thread detail
...
- Extend uiStore candidateViewMode union to include "compare" value
- Add columns-3 compare toggle button, shown only when thread has 2+ candidates
- Hide "Add Candidate" button when in compare view (read-only intent)
- Import and render ComparisonTable when candidateViewMode === "compare"
- Pass displayItems so compare view reflects any pending reorder state
- Existing list/grid views unchanged; all 135 tests pass
2026-03-17 15:30:38 +01:00
e442b33a59
feat(12-01): add ComparisonTable component
...
- Side-by-side tabular comparison with all 10 attribute rows (Image, Name, Rank, Weight, Price, Status, Link, Notes, Pros, Cons)
- useMemo delta computation: blue-50 highlight on lightest weight, green-50 on cheapest price
- Gray delta string (+Xg, +$X.XX) shown below non-best cells
- Sticky left column with bg-white to prevent bleed-through on horizontal scroll
- Amber tint + trophy icon on winner column for resolved threads
- Em dash for missing weight/price data (never zero)
- Declarative ATTRIBUTE_ROWS array pattern for clean, maintainable row rendering
2026-03-17 15:29:30 +01:00
b090da05fa
docs(12): create phase plan
2026-03-17 15:24:49 +01:00
bb8fb0a323
docs(phase-12): add validation strategy
2026-03-17 15:21:23 +01:00
918282ff9d
docs(phase-12): research comparison view phase
2026-03-17 15:20:11 +01:00
50672cb662
docs(phase-11): complete phase execution
...
CI / ci (push) Failing after 11s
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-03-16 22:39:22 +01:00
7e06c8526b
fix(11): wire handleDragEnd to Reorder.Group for active threads
...
onPointerUp was incorrectly placed on the resolved-thread div instead
of the active-thread Reorder.Group, causing drag reorder to not persist.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-03-16 22:36:40 +01:00
4304d0fcd7
docs(11-02): complete drag-to-reorder ranking UI plan
...
- Add 11-02-SUMMARY.md with implementation details and deviation docs
- Update STATE.md: progress 100%, decisions, session record
- Update ROADMAP.md: phase 11 complete (2/2 plans with summaries)
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-03-16 22:30:32 +01:00
94c07e79c2
feat(11-02): add view toggle, Reorder.Group drag-to-reorder, and rank badges in grid view
...
- Thread detail page: list/grid view toggle with LayoutList/LayoutGrid icons
- List view (active threads): Reorder.Group with CandidateListItem for drag-to-reorder
- List view (resolved threads): static CandidateListItem with rank badges, no drag handles
- Grid view: CandidateCard components with rank badges (gold/silver/bronze)
- tempItems pattern prevents React Query flicker during drag
- handleDragEnd fires PATCH /candidates/reorder after drag completes
- View toggle defaults to list view via uiStore candidateViewMode
2026-03-16 22:28:53 +01:00
acfa99516d
feat(11-02): add useReorderCandidates hook, candidateViewMode, and CandidateListItem component
...
- Add useReorderCandidates mutation hook with apiPatch to /candidates/reorder endpoint
- Add candidateViewMode (list|grid) state and setCandidateViewMode to uiStore
- Create CandidateListItem component with drag handle, rank badge, horizontal layout
- Export RankBadge helper (gold/silver/bronze medal icons for top 3)
- Add style prop support to LucideIcon component
- Add pros/cons fields to CandidateWithCategory in useThreads.ts
2026-03-16 22:27:18 +01:00
495a2eabf5
docs(11-01): complete sort_order + reorder backend plan
...
- Create 11-01-SUMMARY.md with full execution record
- Update STATE.md: progress 89%, decisions, metrics, session
- Update ROADMAP.md: phase 11 marked in-progress (1/2 plans)
- Mark requirements RANK-01, RANK-04, RANK-05 complete
2026-03-16 22:24:08 +01:00
d6acfcb126
feat(11-01): PATCH /api/threads/:id/candidates/reorder route + tests
...
- Import reorderCandidatesSchema and reorderCandidates into threads route
- Add PATCH /:id/candidates/reorder route with Zod validation
- Returns 200 + { success: true } on active thread, 400 on resolved thread
- Add 5 route tests: success, order persists, resolved guard, empty array, missing field
2026-03-16 22:22:31 +01:00
f01d71d6b4
feat(11-01): schema, service, and tests for sort_order + reorderCandidates
...
- Add sortOrder REAL column to threadCandidates schema (default 0)
- Add sort_order column to test helper CREATE TABLE
- Add reorderCandidatesSchema to shared/schemas.ts
- Add ReorderCandidates type to shared/types.ts
- getThreadWithCandidates now orders candidates by sort_order ASC
- createCandidate appends at max sort_order + 1000 (first = 1000)
- Add reorderCandidates service function (transaction, active-only guard)
- Add 5 new tests: ordering, appending, reorder success, resolved guard, missing thread
2026-03-16 22:21:42 +01:00
2986bdd2e5
docs(11-candidate-ranking): create phase plan
2026-03-16 22:15:56 +01:00
11ee50db49
docs(phase-11): add validation strategy
2026-03-16 22:08:30 +01:00
a55d58cef3
docs(phase-11): research candidate ranking phase
2026-03-16 22:07:36 +01:00
d380e756ea
docs(state): record phase 11 context session
2026-03-16 22:02:31 +01:00
e4c6991ec6
docs(11): capture phase context
2026-03-16 22:02:20 +01:00
685acd2ab2
docs(phase-10): complete phase execution
2026-03-16 21:42:18 +01:00
2ce54e5990
chore(10-01): add Drizzle migration for pros/cons columns
...
- drizzle/0004_soft_synch.sql: ALTER TABLE thread_candidates ADD COLUMN pros/cons
- drizzle/meta/0004_snapshot.json: updated schema snapshot
- drizzle/meta/_journal.json: migration journal entry
2026-03-16 21:38:55 +01:00
11912a9416
docs(10-01): complete pros/cons schema foundation plan
...
- Add 10-01-SUMMARY.md with TDD execution results
- STATE.md: updated metrics, decisions, session, progress
- ROADMAP.md: phase 10 marked complete (1/1 plans)
- REQUIREMENTS.md: RANK-03 marked complete
2026-03-16 21:38:40 +01:00
4f2aefe7a4
feat(10-01): wire pros/cons through client hooks, form, and card indicator
...
- CandidateResponse: add pros/cons string|null fields
- CandidateForm: add pros/cons to FormData, INITIAL_FORM, pre-fill, payload
- CandidateForm: add Pros/Cons textarea inputs (after Notes, before Product Link)
- CandidateCard: add pros/cons props, render purple +/- Notes badge when present
- Thread detail route: pass pros/cons props to CandidateCard
2026-03-16 21:36:10 +01:00
7a64a1887d
feat(10-01): add pros/cons columns through backend
...
- Add pros/cons nullable TEXT columns to threadCandidates schema
- Generate and apply Drizzle migration (0004_soft_synch.sql)
- Mirror pros/cons columns in test helper CREATE TABLE
- createCandidate: pass pros/cons to values() object
- updateCandidate: add pros/cons to Partial type
- getThreadWithCandidates: include pros/cons in select projection
- createCandidateSchema: add optional pros/cons string fields
2026-03-16 21:32:38 +01:00