6 Commits
Author SHA1 Message Date
nmemmertandClaude Sonnet 4.6 6f4e90a1c8 feat: play real music from local library in Memories slideshow
Scans MUSIC_DIR (mounted at /music in Docker) with music-metadata to
read embedded BPM/genre tags and classify tracks as upbeat/cinematic/
dreamy. Falls back to untagged general pool when mood bucket is thin.
Slideshow plays real audio via <audio> element with range-request
streaming; Web Audio synth is kept as fallback when MUSIC_DIR is unset.
Shows now-playing title/artist in the slideshow bottom bar.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-08-18 15:26:18 -04:00
nmemmertandClaude Sonnet 4.6 7ed18f616f chore: sync docker-compose with actual run config
Port 3700:3000, explicit luma_net network.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-08-18 10:47:07 -04:00
nmemmertandClaude Sonnet 4.6 a072090017 fix: make /photos writable on server so icloudpd can create download folders
Worker stays read-only; server needs write access to sync iCloud photos.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-08-18 10:18:53 -04:00
nmemmertandClaude Sonnet 4.6 5ff7f38b85 fix: correct volume types and photo path in docker-compose
- Use explicit type: volume for the luma_data named volume so compose
  managers (CasaOS etc.) don't misinterpret it as a bind mount
- Use type: bind / read_only: true for the photo directory
- Both server and worker now reference /media/Plex/Gallery consistently
- Worker was previously left with the placeholder path, causing it to
  watch a non-existent directory and index nothing

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-08-18 08:31:49 -04:00
nmemmertandClaude Sonnet 4.6 4df32f9f32 chore: pull image from ghcr.io instead of building locally
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-08-17 16:36:52 -04:00
nmemmertandClaude Sonnet 4.6 e0f4e8ff0d feat: initial Luma implementation
Full self-hosted photo manager with:
- Ingestion worker (chokidar + sharp + exifr, dHash perceptual hashing)
- SQLite schema with WAL mode (photos, tags, collections, duplicate_pairs)
- Express API with keyset pagination, tag/collection/search/date filters
- React + Vite UI: timeline, lightbox, detail panel, tag/collection editors
- Duplicate detection (Union-Find grouping) with review + dismiss UI
- Map view (Leaflet + OpenStreetMap, marker clustering)
- Docker multi-stage build + Compose with inline env config
- GitHub Actions: CI build check + ghcr.io image publish on main/tags

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-08-17 16:33:55 -04:00