- Fix applyConfig self-recursion (const _origApply captured the hoisted
wrapper itself): site.json config — theme, portfolio, socials, bio —
was never applied; site silently fell back to hardcoded brown defaults
- Strengthen theme test to assert the configured primary color exactly
- Portfolio covers: styled placeholder on missing image (like locations),
restore img when Immich carousel kicks in; overlay always visible on touch
- Optional hero photo via site.heroImage with soft scrim (activates only
when the image loads); site.json points at /images/hero.jpg
- Option cards: equal height, centered content
- /#book deep link also works via hashchange
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
- site.json: add locations array (River Bottoms, City Park, Downtown, Studio)
with heroImage, galleryImages, tags, and description per location
- public/images/locations/: directory skeleton with .gitkeep; photographer
drops hero.jpg + numbered gallery images here without any rebuild
- Step 4: location-grid renders cards from config, each with hero image,
location name, and tag pills; missing images fall back to a styled placeholder
- Clicking a card selects it (shows checkmark overlay) and opens an inline
detail panel below the grid showing gallery images + full description + tags;
clicking the same card again collapses the detail panel
- populateSummary and submitBooking now resolve the location name from config
rather than storing the raw ID
Closes#5
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- site.json: add booking section with sessionTypes, pricing, venmoUsername
- Step 2: session type cards rendered from siteConfig.booking.sessionTypes;
"Other" option reveals a free-text field; validated before advancing
- Step 3: two large length cards with duration badge + price from config;
falls back to $75/$150 defaults if config missing
- selectOption shows/hides "Other" field; stores sessionTypeOther in state
- populateSummary uses config labels and shows price in length summary row
- submitBooking sends "other: <description>" for custom session types
Closes#4
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- Updated Immich base URL to immich.jerodrigged.com
- Senior Portraits: use all-seniors album
- Changed Engagements to Couples, use all-couples album
- Changed Families to Family or Friends, use families-or-friends album
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>