Each product page can have its own header photo #28

Merged
martin merged 1 commit from claw/product-hero-image-4e2a into main 2026-09-21 15:27:42 +00:00
Owner

Admin → Products → a product → Its own page now has a Header photo uploader.

  • Blank (the default for every product today) shows the /products hero photo, and the admin previews that photo.
  • Uploading one gives only that page its own hero; "Use the products page photo" clears it.
  • Stored as detail.media (type, zod, mongoose). Also used as the page OG image.

Verified locally with Playwright: upload → save → /products/cyber shows the new photo, /products/property keeps the default; revert restores the default. tsc --noEmit clean.

🤖 Generated with Claude Code

Admin → Products → a product → **Its own page** now has a **Header photo** uploader. - Blank (the default for every product today) shows the /products hero photo, and the admin previews that photo. - Uploading one gives only that page its own hero; "Use the products page photo" clears it. - Stored as `detail.media` (type, zod, mongoose). Also used as the page OG image. Verified locally with Playwright: upload → save → /products/cyber shows the new photo, /products/property keeps the default; revert restores the default. `tsc --noEmit` clean. 🤖 Generated with [Claude Code](https://claude.com/claude-code)
Uploaded from the product's "Its own page" group in the admin. A page
without one keeps the /products hero photo, which the admin previews.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
martin merged commit 445793e621 into main 2026-09-21 15:27:42 +00:00
martin deleted branch claw/product-hero-image-4e2a 2026-09-21 15:27:42 +00:00
Sign in to join this conversation.
No reviewers
No labels
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
martin/ballantyne-www!28
No description provided.