Add photo slideshow screensaver with inactivity timer

- After 1 hour of inactivity the screen switches to a fullscreen
  crossfade slideshow of photos from static/photos/
- Touch anywhere on screen to dismiss and return to the calendar
- /api/photos endpoint serves a shuffled list of images from static/photos/
- Two-slot A/B image swap for smooth 1.5s crossfades; next image preloads
  in the background while current is displayed (15s per photo)
- Slideshow only activates if static/photos/ contains at least one image

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
2026-07-27 21:00:22 +12:00
parent 20c9bb55b1
commit 93b2dad8fd
5 changed files with 167 additions and 1 deletions

View File

@@ -25,6 +25,13 @@
<button id="add-btn" class="add-fab" title="Add events from Google Calendar" aria-label="Add event">+</button>
</div>
<!-- Fullscreen photo slideshow screensaver -->
<div id="slideshow-overlay" class="slideshow-overlay hidden">
<img id="slide-a" class="slide-img" src="" alt="">
<img id="slide-b" class="slide-img" src="" alt="">
<div class="slideshow-hint">Touch to return to calendar</div>
</div>
<script src="{{ url_for('static', filename='js/app.js') }}"></script>
</body>
</html>