diff --git a/.planning/phases/29-image-presentation/29-UAT.md b/.planning/phases/29-image-presentation/29-UAT.md index cd9c518..8f0adef 100644 --- a/.planning/phases/29-image-presentation/29-UAT.md +++ b/.planning/phases/29-image-presentation/29-UAT.md @@ -3,7 +3,7 @@ status: complete phase: 29-image-presentation source: [29-01-SUMMARY.md, 29-02-SUMMARY.md, 29-03-SUMMARY.md, 29-04-SUMMARY.md] started: 2026-04-12T19:10:00Z -updated: 2026-04-12T19:20:00Z +updated: 2026-04-13T12:00:00Z --- ## Current Test @@ -14,102 +14,67 @@ updated: 2026-04-12T19:20:00Z ### 1. Images use fit-within instead of crop expected: Browse any page with item/catalog cards. Images should fit inside the frame without cropping — full image visible, no parts cut off. -result: issue -reported: "Fit-within works on detail pages but collection view cards don't render images at all." -severity: major +result: pass ### 2. Dominant color background fill expected: Where an image doesn't fill the entire frame, the empty space is filled with a color extracted from the image (not white or gray). -result: issue -reported: "Background is just plain gray. Even newly uploaded images don't get a dominant color — extraction not working or color not passed to frontend." -severity: major +result: pass ### 3. Crop editor on item detail -expected: Open an item that has an image. You should see an "Adjust framing" button. Clicking it opens a crop editor with zoom slider. +expected: Open an item that has an image. In edit mode, you should see a crop icon button next to the trash icon, positioned as an overlay on the image. Clicking it opens a crop editor with zoom slider. result: issue -reported: "'Adjust framing' text doesn't feel like an action. Should be an icon button, only visible in edit mode, positioned below the X icon. X icon should be a trash icon to symbolize removal." -severity: minor +reported: "the button is there the framing just doesn't work i think the framing and the fit within might be fighting over it" +severity: major ### 4. Crop editor on image upload -expected: Upload a new image to an item. After the upload completes, a crop editor should appear. +expected: Upload a new image to an item. After the upload completes, a crop editor should appear automatically. result: issue -reported: "Crop editor doesn't open when adding an image to an existing item. Can only be edited afterward." -severity: major +reported: "crop editor opens on upload correctly, but after cropping the cropped image isn't shown in the edit state always — after clicking save it is shown correctly" +severity: minor ### 5. Crop settings persist expected: Adjust the crop on an item image, save it. Navigate away and come back — image displays with saved crop settings. -result: issue -reported: "Framing adjustment doesn't save. No error message, no console log — silently fails." -severity: blocker +result: pass ### 6. Consistency across surfaces expected: All image surfaces use the same fit-within + dominant color treatment. result: pass -reported: "Consistent across all surfaces where images render (detail pages). Collection cards don't render images (see test 1)." ## Summary total: 6 -passed: 2 -issues: 4 +passed: 4 +issues: 2 pending: 0 skipped: 0 +blocked: 0 ## Gaps -- truth: "Collection view cards should render images using GearImage component" +- truth: "Crop framing should visibly adjust the image within the fit-within frame" status: failed - reason: "User reported: images not rendering on collection view cards, only on detail pages" + reason: "User reported: framing doesn't work — fit-within and crop may be fighting over each other" severity: major - test: 1 - artifacts: - - src/client/components/ItemCard.tsx - - src/client/components/GearImage.tsx - missing: - - GearImage integration in collection card view - -- truth: "Dominant color should be extracted on upload and used as background fill" - status: failed - reason: "User reported: background is plain gray even for newly uploaded images — extraction not working or color not reaching frontend" - severity: major - test: 2 - artifacts: - - src/server/services/image.service.ts - - src/client/components/GearImage.tsx - missing: - - Debug extractDominantColor pipeline - - Verify color is returned from upload API and stored in DB - - Verify frontend reads and applies dominantColor - -- truth: "Crop editor should be an icon button visible only in edit mode, with trash icon for image removal" - status: failed - reason: "User reported: 'Adjust framing' text doesn't feel like an action. Should be icon, edit-mode only. X should be trash icon." - severity: minor test: 3 artifacts: - - src/client/routes/items/$itemId.tsx - - src/client/components/ImageCropEditor.tsx + - path: "src/client/components/GearImage.tsx" + issue: "fit-within object-contain may override crop transform" + - path: "src/client/components/ImageCropEditor.tsx" + issue: "crop output not applied as CSS transform on GearImage" missing: - - Redesign crop trigger as icon button in edit mode - - Replace X with trash icon for image removal + - Reconcile crop positioning with fit-within rendering — crop should adjust focal point within the contain frame + root_cause: "" + debug_session: "" -- truth: "Crop editor should open automatically when uploading a new image" +- truth: "Cropped image preview should update in edit state immediately after cropping" status: failed - reason: "User reported: crop editor doesn't open when adding image to existing item" - severity: major + reason: "User reported: cropped image not shown in edit state after cropping, but renders correctly after save" + severity: minor test: 4 artifacts: - - src/client/components/ImageUpload.tsx + - path: "src/client/routes/items/$itemId.tsx" + issue: "local state not updated with crop values after editor closes" missing: - - Trigger crop editor after upload in ImageUpload component - -- truth: "Crop settings (zoom, x, y) should persist to DB and render on subsequent views" - status: failed - reason: "User reported: framing adjustment doesn't save, no error, no log — silent failure" - severity: blocker - test: 5 - artifacts: - - src/client/routes/items/$itemId.tsx - - src/server/routes/items.ts - missing: - - Debug crop save pipeline (client mutation → API → DB) + - Update local image preview state with crop values on editor close (before save) + root_cause: "" + debug_session: ""