Files
GearBox/.planning/phases/29-image-presentation/29-UAT.md

4.3 KiB

status, phase, source, started, updated
status phase source started updated
complete 29-image-presentation
29-01-SUMMARY.md
29-02-SUMMARY.md
29-03-SUMMARY.md
29-04-SUMMARY.md
2026-04-12T19:10:00Z 2026-04-12T19:20:00Z

Current Test

[testing complete]

Tests

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

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

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. 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

4. Crop editor on image upload

expected: Upload a new image to an item. After the upload completes, a crop editor should appear. result: issue reported: "Crop editor doesn't open when adding an image to an existing item. Can only be edited afterward." severity: major

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

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 pending: 0 skipped: 0

Gaps

  • truth: "Collection view cards should render images using GearImage component" status: failed reason: "User reported: images not rendering on collection view cards, only on detail pages" 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 missing:
    • Redesign crop trigger as icon button in edit mode
    • Replace X with trash icon for image removal
  • truth: "Crop editor should open automatically when uploading a new image" status: failed reason: "User reported: crop editor doesn't open when adding image to existing item" severity: major test: 4 artifacts:

    • src/client/components/ImageUpload.tsx 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)