# 1.3.0 (2026-11-04) - `/photo/gallery`: a remote-driven photo grid for the Shield photo app's launcher tile. - Arrows move between tiles, OK opens a photo full screen with a zoom-in, and ◀ ▶ browse while it is open. - Back (or OK) returns to the grid, and a **Slideshow** button at the top starts `/photo`. - Photos are shown newest first. - After 10 minutes without a key press, the slideshow starts on its own. The app keeps the screen on, so the TV screensaver never would. - Sync now also caches a 400px gallery tile (`.m.jpg`) per photo. Existing albums backfill on their next sync. - Admin uploads send a tile too. Older uploads without one use the full photo in the grid. - `/api/photos` entries gain a `tile` field. - Shield photo app `com.dayline.photos` 1.1 (versionCode 2): - The launcher tile opens the gallery and takes D-pad input. - Back steps back through the gallery's history (closing a full-screen photo) before exiting. - The screensaver is unchanged (non-interactive slideshow). # 1.2.0 (2026-11-04) - `/photo`: full-screen photo frame with crossfade, a blurred backdrop or fill mode, shuffle, and the date taken. - It picks up new settings and photos within about 30 seconds and reloads itself every 12 hours. - Admin **Photos** tab: - Google Photos shared albums: paste the share link, use **Check**, and **Sync now**. The tab shows sync status, stale warnings and errors. - Slideshow options. - Photo uploads. Each upload is resized in the browser to 1920px plus a 64px backdrop thumbnail. - Albums sync every 6 hours (and 15 seconds after start). - Each sync caches up to 500 photos per album at 1920px under `/data/photos`, skips videos, and removes photos deleted from the album. - `/api/health/photos` returns 503 when an enabled album has not synced for 48 hours. - History and Restore now cover photo settings too. A restore re-syncs any album it brings back. - The minimum admin password length is now 6. # 1.1.0 (2026-11-04) - Password-protected, LAN-only `/admin` screen for calendar links (masked, test, history/restore). - Calendars are read from `/data/settings.json` (seeded once from the calendar secret). - The supervisor drops privileges right after reading secrets. A front proxy on :3000 records the real client IP. - `/photo-admin` redirects to `/admin#photos`, a placeholder for the upcoming photo frame. # Release 1.0.0 Built and validated on 2026-11-04. - Replaced the hosted Cloudflare/Vinext runtime with a standard production Next.js container. - Added runtime-only calendar secrets and optional bearer authentication. - Added configurable timezone and weather settings, bounded feed responses, redirect validation, health checks, and hardened Compose settings. - Included cross-platform configuration, backup, restore, and migration documentation. - Included NVIDIA Shield wrapper v1.4 (`com.dayline.tv`, version code 5) with local URL support, exact-origin enforcement, optional bearer injection, controlled private-LAN HTTP, internal-CA support, and hosted rollback. - Preserved the existing app identity, signing certificate, private app data, and per-device schedule flag during in-place upgrades. The current hosted dashboard and installed Shield applications are not changed merely by extracting this package. Follow `MIGRATION.md` when the internal server URL is ready.