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