feat: Memories tab — slideshow of photos on this day with ambient music

- New /api/memories/today endpoint queries photos by month+day (client
  sends its local date to avoid UTC offset issues in Docker)
- MemoriesView shows photos grouped by year with a "Play Memories"
  slideshow that crossfades between photos every 5 seconds
- Ambient music generated via Web Audio API — A-minor pad with slow
  vibrato shimmer and a pentatonic melody with convolver reverb
- Mute toggle, keyboard nav (← → Esc), progress dots, year badge
- fix: map popup images now use explicit px dimensions (100% was
  collapsing to 0 inside Leaflet's unsized popup content box)

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
nmemmertandClaude Sonnet 4.6 committed 2026-08-18 10:42:00 -04:00
1 parent dd6fa803eb
commit 0cba67e02e
5 files changed
+453 -2

No files matched your search

+7
View File
@@ -109,6 +109,13 @@ export function triggerSync(source) {
return api(`/api/sync/${source}`, { method: 'POST' });
}
// Memories
export function fetchMemories() {
const d = new Date();
const date = `${d.getFullYear()}-${String(d.getMonth() + 1).padStart(2, '0')}-${String(d.getDate()).padStart(2, '0')}`;
return api(`/api/memories/today?date=${date}`);
}
// Duplicates
export function fetchDuplicates() {
return api('/api/duplicates');