6e94a0c998
- Admin TVs tab: wake time/days, YouTube Music playlist, Shield volume per TV, pushed via 5-min TV check-ins (/api/tv/config, /api/tv/report, LAN-only) - com.dayline.photos 1.2.1: MorningActivity (screen on, volume, playlist), calendar alarm at wake time, Doze-safe chained check-ins - Both TVs configured for 06:30 daily with the family playlist Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01E9NnVEico3WvFxLyjy1iW3
68 lines
4.8 KiB
Markdown
68 lines
4.8 KiB
Markdown
# 1.4.0 (2026-11-04)
|
||
|
||
- Admin **TVs** tab: a morning routine for each TV.
|
||
- Wake time and days of the week.
|
||
- A YouTube Music playlist (paste any playlist link; the `si=` tracking part is dropped).
|
||
- The Shield's volume (0–100%).
|
||
- Settings are pushed to each TV on its next check-in (every 5 minutes). Each TV card shows when the TV has applied them and how its last morning routine went.
|
||
- TV endpoints, direct LAN only and refused through a proxy:
|
||
- `GET /api/tv/config?device=…` returns that TV's settings and records the check-in.
|
||
- `POST /api/tv/report` records the outcome of the morning routine.
|
||
- Check-in status lives in `/data/tv-status.json`, kept separate from the settings history.
|
||
- TVs that check in without being configured show up under "TVs found on the network" with an **Add** button.
|
||
- Settings history Restore leaves TV settings unchanged.
|
||
- Shield photo app `com.dayline.photos` 1.2.1 (versionCode 4) runs the routine:
|
||
- At the wake time minus 30 s, it turns the screen on (the TV follows over HDMI-CEC). After 5 s it sets the volume and starts the playlist in YouTube Music.
|
||
- At the wake time, a second alarm opens the calendar app (`com.dayline.tv`) on top while the music keeps playing (needs YouTube Music Premium).
|
||
- With music off, it opens the calendar straight away.
|
||
- It needs two one-time grants over ADB: `appops set com.dayline.photos SYSTEM_ALERT_WINDOW allow`, so it can open other apps from the background, and `dumpsys deviceidle whitelist +com.dayline.photos`, so check-ins keep network access while the Shield is in Doze.
|
||
|
||
# 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 (`<key>.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.
|