Releases: rusty4444/now-showing-ha
Releases · rusty4444/now-showing-ha
Release list
v2.3.7
What's Changed
- chore(deps): bump body-parser from 2.2.2 to 2.3.0 in /server by @dependabot[bot] in #116
Full Changelog: addon-v2.3.6...addon-v2.3.7
v2.3.6
What's Changed
- chore(deps): bump ws from 8.21.0 to 8.21.1 in /server by @dependabot[bot] in #115
Full Changelog: addon-v2.3.5...addon-v2.3.6
v2.3.5 — SSE Broadcast Fix
v2.3.5 — SSE Broadcast Fix
Bug Fix
- Fix SSE null broadcasts during active playback (#108, #112). The add-on's Server-Sent Events (
/api/events) endpoint previously broadcastnull(blanking the kiosk overlay) when an unrelated media player in the house changed state during active playback. The state-change handler now recomputes the Now Showing payload from all Home Assistantmedia_playerstates after a 300ms debounce window, matching the same computation/api/stateserves. A newstateBroadcastermodule with full test coverage handles debouncing, error resilience, and graceful shutdown.
Maintenance
- Extracted state broadcast logic from
server.jsinto dedicatedstateBroadcaster.jsmodule with 3 tests: full-state recompute, debounce coalescing, and transient error resilience.
Now Showing Add-on v2.3.4
Now Showing Add-on v2.3.4
Added
- Setup save/reset now broadcasts sanitized
config_changedevents over SSE, so open kiosks apply display mode, backend, Coming Soon, and visual config changes without a browser refresh. - Coming Soon mode now auto-cycles on
coming_soon_cycle_interval, rotating Radarr/Sonarr artwork without full page reloads. - Poster updates now use a double-buffered crossfade with stale-image guards to avoid black flashes and slow-load regressions.
Fixed
- Ken Burns animation is scoped to the active poster layer so it does not interfere with the crossfade buffer.
- Coming Soon route test now uses a date relative to the test run instead of a fixed past date.
Release info
- Add-on manifest version:
2.3.4 - Node server package version:
2.3.4 - README "What's Changed Since The Last Release" table updated to the v2.3.4 changes.
Validation
node --check /tmp/now_showing_inline.jsgit diff --checkcd server && npm test— 201/201 passing- PR #107 CI passed: add-on lint + all multi-arch builds (
amd64,aarch64,armhf,armv7,i386).
Release addon-v2.3.3
What's Changed
- chore(deps): bump ws from 8.20.1 to 8.21.0 in /server by @dependabot[bot] in #106
- chore(deps): bump express from 4.22.1 to 5.2.1 in /server by @dependabot[bot] in #105
New Contributors
- @dependabot[bot] made their first contribution in #106
Full Changelog: addon-v2.3.2...addon-v2.3.3
Now Showing v2.3.2
Fixed
- All requests returning
:ok— the SSE/api/eventshandler was registered with
app.use(eventBus.eventsRoute)which caught every incoming request on the server.
The function wrote:okand never callednext(), so Express never reached the
static middleware. No static files were served: notnow_showing.html, not the
font files, notnow_showing.config.js. Changed to
app.get('/api/events', eventBus.eventsRoute)so it only matchesGET /api/events.
Now Showing v2.3.1
What's new in 2.3.1
Fixed
- SSE endpoint crash —
ReferenceError: req is not definedon every/api/events
connection. The parameter_reqwas referenced asreqin theclosehandler,
causing Express to return a 500 error after writing the initial:okheartbeat.
This caused the kiosk to show:okon a black screen. (closes #104) - Server version mismatch —
package.jsonwas stuck at2.1.6since the pre-v2.2.0
era. The add-on store reported2.3.0but the server claimedv2.1.6in boot logs,
/api, and/healthz. Both now correctly report2.3.1.
v2.3.0 - self-hosted fonts, per-section info toggles, overlay sync fix
v2.3.0
Added
- Self-hosted Google Fonts (closes #40) — Bebas Neue, Playfair Display, Inter, Anton, Monoton, and Oswald shipped as bundled woff2 files. Survives internet outages with zero CDN dependency.
- Per-section info panel toggles (closes #64) — independent visibility switches for title, subtitle, meta, summary, tech box, and player info. All default ON.
- HA WebSocket subscription + SSE push (closes #10) — server connects to HA's WebSocket API for real-time state changes. Browser falls back to 30s poll instead of 5s polling.
- Poster framing modes (closes #67), film-grain overlay (closes #27), Ken Burns pan (closes #22) — visual polish features.
Fixed
- Film-grain overlay always visible — CSS was missing
display: nonegate, now gated onbody.visual-film-grain - haWs.stop() never called on graceful shutdown — WebSocket connection leak on restart
- Cross-device config sync: posterFraming, filmGrain, kenBurns were never registered in the overlay store, causing setup UI saves to silently drop them. All 27 visual settings now persist server-side.
- Setup form now has controls for posterFraming, filmGrain, and kenBurns (were env-var only)
Changed
- No more Google Fonts external dependency at runtime — fonts shipped in add-on image
v2.1.6 - cinema/theatrical inclusion toggle for Coming Soon
Highlights
- Cinema / theatrical inclusion toggle for Coming Soon (PR #101, closes #100). New
coming_soon_include_cinema_releasesadd-on option /COMING_SOON_INCLUDE_CINEMA_RELEASESDocker env var, plus an "Include cinema / theatrical releases" checkbox in the in-app setup overlay (Coming Soon sources), control whether RadarrinCinemasand TMDB theatrical release types contribute to Coming Soon entries. - Default is on so the pre-#100 fallback behaviour is preserved exactly: Radarr
inCinemasand TMDB theatrical types still act as eligibility/display fallbacks, and cinema-only entries appear with the existingIn cinemas: <date>label. - Turning the toggle off suppresses cinema-only entries entirely — Radarr
inCinemasis ignored and TMDB theatrical types are skipped — while digital and physical home releases keep showing. - Persists server-side across devices. The toggle is stored in the v2.1.5 overlay file (
/data/overlay.json) viaPOST /api/setup, so a single save on Master Panel propagates to every browser, kiosk, and phone on the next page load. - Existing filters unchanged. Monitored,
hasFile, and the configurable look-ahead window keep applying as before.
Configuration
- Add-on Configuration tab:
coming_soon_include_cinema_releases: true|false(defaulttrue). - Docker env var:
COMING_SOON_INCLUDE_CINEMA_RELEASES=true|false. - In-app setup overlay → Coming Soon sources → "Include cinema / theatrical releases" checkbox.
- Schema, translations, and add-on options are all wired up; flipping any of the three sources updates the others through the existing overlay/precedence rules.
Upgrade
No action required. Existing installs default to on, which matches the pre-#100 behaviour. Operators who only want home releases on the Coming Soon carousel can untick the new checkbox once on any device — the change is saved server-side and applied everywhere.
Artifacts
- Multi-arch HA add-on images on GHCR — pushed by the
addon-v2.1.6tag:ghcr.io/rusty4444/plex-now-showing-{amd64,aarch64,armv7,armhf,i386}:2.1.6plus:latest. - Server changelog: see
addons/plex-now-showing/CHANGELOG.md.
v2.1.5 - persistent server-side setup overlay
Highlights
- Persistent server-side setup overlay (PR #99, closes #98). The in-app setup overlay (gear icon /
#setup) is now a real persistent configuration editor: every relevant field — TMDB API key + region, HA token, Plex/Radarr/Sonarr URLs and keys, Coming Soon counts, and visual settings — is editable in the overlay and saves server-side. One save on any device propagates to every browser, kiosk, and phone on the next page load. - Settings are saved to
/data/overlay.jsonon the add-on disk viaPOST /api/setup, so values persist across phone, Master Panel, Fully Kiosk, the HA mobile app via Ingress, and direct URL access without per-device re-entry. - Add-on / Docker config (Configuration tab / env vars) remains the defaults; the persistent overlay file overrides them where set. Clearing a non-secret overlay field falls back to the env default.
- TMDB API key and region are now enterable in the setup overlay itself (closes #97); existing add-on options / Docker env values remain supported as defaults.
Security
- Secrets are never returned by the server —
GET /api/setuponly emits*Setbooleans, so the overlay can show "(key set)" / "(token set)" markers without ever leaking the value to the browser. - Saving a blank secret preserves the existing value so non-secret fields can be edited without re-typing tokens. Only an explicit replacement string overwrites a secret.
POST /api/setup/resetdeletes the overlay file entirely and reverts every device to the add-on/Docker defaults.
API surface
GET /api/setup— non-secret summary plus*Setbooleans for the overlay editor.POST /api/setup— persist overlay values; blank secrets preserve existing.POST /api/setup/reset— delete the overlay file (defaults restored).GET /api/confignow also surfaceshaUrl,haUrlSet,haTokenSet, andlandscapeso the overlay can prefill non-secret fields consistently across clients.
Changed
- Setup overlay now POSTs to the server in add-on / Docker mode instead of writing to
localStorageonly. localStorage is still written as a per-device cache so HACS-only installs (no server) keep working unchanged.
Upgrade
No action required. Existing add-on Configuration / Docker env values continue to work as defaults; saving any field from the overlay on any device now persists server-side and shows up everywhere.
Artifacts
- Multi-arch HA add-on images on GHCR — pushed by the
addon-v2.1.5tag:ghcr.io/rusty4444/plex-now-showing-{amd64,aarch64,armv7,armhf,i386}:2.1.5plus:latest. - Server changelog: see
addons/plex-now-showing/CHANGELOG.md.