Commit Graph

676 Commits

Author SHA1 Message Date
9448571993 fix(30-01): fix import ordering for biome lint compliance
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-12 20:44:13 +02:00
5b35e60477 feat(30-01): create onboarding route with Zod validation and register
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-12 20:43:29 +02:00
9da4c8435c feat(30-01): create onboarding service with batch item creation
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-12 20:42:59 +02:00
d64708056f feat(30-01): add popular-items-by-tags endpoint to discovery routes
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-12 20:42:29 +02:00
2347d49b69 feat(30-01): add popular-items-by-tags query to discovery service
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-12 20:41:03 +02:00
d37e64e71c feat(30-01): add shared hobby configuration with tag mappings
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-12 20:40:43 +02:00
edd1cdde68 docs(30): create onboarding redesign plans (3 plans, 2 waves)
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-12 20:38:14 +02:00
3906273a10 docs: update authentication.md with Logto setup checklist
Some checks failed
CI / ci (push) Failing after 18s
CI / e2e (push) Has been skipped
CI / deploy (push) Has been skipped
2026-04-12 20:31:45 +02:00
b355c333e5 docs(phase-31): complete phase execution and verification 2026-04-12 20:19:10 +02:00
ff01410183 docs(31): add code review report 2026-04-12 20:18:11 +02:00
02319baaf5 docs(31): add execution summaries for plans 01 and 02 2026-04-12 20:17:25 +02:00
97b1936148 style(31-01): fix biome lint formatting for JSX expressions 2026-04-12 20:16:29 +02:00
f69861d449 feat(31-02): add responsive icon buttons to global item detail page
Replace text action buttons (Add to Collection, Add to Thread) with
icon-only buttons on mobile. Uses plus and message-square-plus icons.
All icon buttons have aria-label and 44px touch targets.
2026-04-12 20:16:08 +02:00
410a6491fe feat(31-02): add responsive icon buttons to setup detail page
Replace text action buttons (Add Items, Public/Private toggle, Delete
Setup) with icon-only buttons on mobile. Migrate inline SVGs to
LucideIcon component (plus, globe, trash-2). All icon buttons have
aria-label and 44px touch targets.
2026-04-12 20:15:33 +02:00
b6f12fa93d feat(31-01): add responsive icon buttons to candidate detail page
Replace text action buttons (Edit, Pick as winner, Delete) with
icon-only buttons on mobile viewports (below md: breakpoint). Desktop
retains full text+icon buttons. All icon buttons have aria-label and
44px touch targets.
2026-04-12 20:14:58 +02:00
7effedea3f feat(31-01): add responsive icon buttons to item detail page
Replace text action buttons (Duplicate, Delete, Edit) with icon-only
buttons on mobile viewports (below md: breakpoint). Desktop retains
full text buttons. All icon buttons have aria-label and 44px touch targets.
2026-04-12 20:14:28 +02:00
8a01930de1 docs(31): create execution plans for mobile icon buttons 2026-04-12 20:12:37 +02:00
6c76dbbee3 docs(phase-29): complete phase execution
Phase 29 Image Presentation verified and marked complete.
14/14 must-haves passed. Next: Phase 30 Onboarding Redesign.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-12 20:11:10 +02:00
c57e260e59 docs(31): add validation strategy 2026-04-12 20:10:22 +02:00
9721fbb5cc docs(31): research mobile icon button implementation 2026-04-12 20:09:53 +02:00
dd3cee1a64 docs(29): add execution summaries for plans 03 and 04
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-12 20:09:30 +02:00
6509b33501 feat(29-04): create backfill script for dominant colors
One-time migration script processes items, globalItems, and
threadCandidates to extract dominant colors via Sharp. Idempotent,
batched (10 concurrent), with progress logging.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-12 20:09:17 +02:00
9817a80f32 docs(31): UI design contract for mobile icon buttons 2026-04-12 20:08:44 +02:00
a18b9d37bd feat(29-03): add crop editor to item and candidate detail pages
Add "Adjust framing" button to item detail and candidate detail
pages. Crop editor appears inline, persists via update mutations.
Fix lint issues in ImageCropEditor import ordering.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-12 20:08:08 +02:00
78a097cba2 feat(29-03): integrate crop editor into ImageUpload
Show ImageCropEditor after successful upload when onCropChange
callback is provided. Editor replaces image preview temporarily.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-12 20:04:29 +02:00
23f62fde3d feat(29-03): create ImageCropEditor component
Zoom+pan editor using react-easy-crop with zoom slider, save/cancel
buttons, and dominant color background. Returns crop coordinates
for persistence.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-12 20:03:34 +02:00
6f4fd78b8b feat(29-03): install react-easy-crop for image framing editor
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-12 20:03:13 +02:00
9636033361 fix(29-02): lint fixes for GearImage integration
Fix unused parameter warning and formatting issues across all
updated components.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-12 20:02:38 +02:00
66d9c4157b feat(29-02): update detail pages and LinkToGlobalItem to use GearImage
Replace object-cover on item detail, global item detail, candidate
detail, global items index, and LinkToGlobalItem. Detail pages use
dominant color backgrounds. LinkToGlobalItem uses cover mode for
32px thumbnails.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-12 20:02:12 +02:00
febc43a074 docs(30): UI design contract 2026-04-12 20:01:24 +02:00
fd0a7eef47 docs(state): record phase 31 context session 2026-04-12 20:01:20 +02:00
240aed266c docs(31): capture phase context 2026-04-12 20:01:20 +02:00
91846b5ca2 feat(29-02): update ComparisonTable, CatalogSearchOverlay, ImageUpload
Replace object-cover with GearImage across ComparisonTable,
CatalogSearchOverlay (2 instances), and ImageUpload preview.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-12 20:00:46 +02:00
05c09182fd feat(29-02): update CandidateCard and CandidateListItem to use GearImage
Replace object-cover with GearImage for fit-within rendering on
candidate cards and list items.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-12 19:59:44 +02:00
d8ede7a942 docs(phase-30): add validation strategy 2026-04-12 19:59:41 +02:00
673d3db06a docs(30): research onboarding redesign phase 2026-04-12 19:59:11 +02:00
2865e657d0 feat(29-02): update ItemCard and GlobalItemCard to use GearImage
Replace object-cover with GearImage component for fit-within rendering.
Add dominantColor and crop props to both card components.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-12 19:58:39 +02:00
06d3984161 feat(29-02): create GearImage component for fit-within rendering
Renders images with object-contain by default (letterbox/pillarbox),
object-cover when cover prop is set, or CSS transform when crop
values are present. Parent container uses dominant color background.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-12 19:57:54 +02:00
34804731a1 feat(29-01): add image presentation fields to Zod schemas
Add dominantColor, cropZoom, cropX, cropY to createItemSchema,
createCandidateSchema, and upsertGlobalItemSchema.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-12 19:56:56 +02:00
2696b78f9e feat(29-01): extract dominant color in image upload endpoints
Both POST /api/images and POST /api/images/from-url now return
dominantColor in their response body.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-12 19:56:34 +02:00
e305fa7ae5 feat(29-01): add dominant color extraction via Sharp
extractDominantColor() resizes image to 1x1 pixel for weighted average
color. Integrated into fetchImageFromUrl to return dominantColor.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-12 19:56:21 +02:00
b637b105fb feat(29-01): generate migration for image presentation fields
Migration adds dominant_color, crop_zoom, crop_x, crop_y to items,
global_items, and thread_candidates. Run db:push to apply.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-12 19:56:01 +02:00
11cc082f40 docs(state): record phase 30 context session 2026-04-12 19:55:50 +02:00
b2cb6451b0 docs(30): capture phase context 2026-04-12 19:55:50 +02:00
36363a8ca3 feat(29-01): add dominantColor and crop fields to schema
Add dominant_color, crop_zoom, crop_x, crop_y columns to items,
global_items, and thread_candidates tables.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-12 19:55:47 +02:00
cee15002ae feat(29-01): install Sharp for image processing
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-12 19:55:23 +02:00
718b118fb8 docs(29): fix plan file naming convention
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-12 19:52:37 +02:00
7064c6cdf1 docs(29): research, validation, and 4 plans for image presentation
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-12 19:51:36 +02:00
eac7cea0c8 docs(29): UI design contract 2026-04-12 19:47:13 +02:00
1e1f49fc01 docs(state): record phase 29 context session 2026-04-12 19:42:16 +02:00