You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Background processes (Last.fm/Libre.fm poller, weather fetcher, now playing watcher) now fully pause when the display is turned off or falls outside active hours. They resume automatically when the display comes back on.
Changing active hours in the web UI now takes effect immediately. Previously the main loop slept in 15-minute cycles, so a config change could take up to 15 minutes to register. The loop now uses an asyncio.Event that fires on every
config write, waking it up instantly.
You can now toggle whether a POST /calendar request automatically triggers the dashboard. Previously this was always on.
New option to auto-trigger the dashboard 'X' hours before an upcoming event. Uses the departure time (start minus travel time if set, otherwise start time). Example: event "Saufen" at 23:00 with 1.5h travel, configured to 2 hours
before, triggers at 19:30 because departure is 21:30. Configurable in the web UI with a toggle and hours input.
Long song titles, artist names, and album names on the now playing panel are now truncated at the character boundary where they'd overflow the 60px text area.
Parenthetical and bracketed content is stripped from now playing text automatically. "ALL THE LOVE (feat. Andre Troutman)" becomes "ALL THE LOVE", "So Close To What (Deluxe Edition)" becomes "So Close To What".
The Panels tab in the web UI now has sub-tabs for Clock, Verse, NowPlaying, and Dashboard. Only one panel's settings are visible at a time instead of all four stacked.
The main tab bar and the panel sub-tabs are now sticky, so they stay visible when scrolling.
Settings that depend on a toggle only show up when the toggle is in the right state. Disabling a panel hides all its settings. Enabling "Global Brightness" hides the local slider. Disabling "Always On" reveals the hour range inputs.
The local brightness slider now sits in its own row with a label ("Clock Brightness", "NowPlaying Brightness", etc.).
Browser tab icon added.
Browser tab title changed
Bug fixes
Fixed a bug where resetting all triggers and then playing music would not auto-switch to now playing. The POST /calendar endpoint was triggering the dashboard with source "user" instead of "auto", so has_user_trigger() returned true
and blocked the now playing watcher from auto-triggering. Calendar triggers now use source "auto".
untrigger() now cleans up both _triggered and _trigger_source. Previously it left stale entries in _trigger_source, which could interfere with the scheduler.
The reset endpoint no longer redundantly re-triggers clock. It just untriggers everything except clock and lets _evaluate() fall back to the lowest priority enabled mode on its own.
MAC address (upsi haha ^^) , brightness, blink interval, and reconnect delay were hardcoded in dashboard/display.py.
Cleanup
Removed 10 unused unused fonts
Removed dead font variable from dashboard/display.py.
README
Simplified the panels table to two columns (Panel, What it shows) with preview GIFs inline above the description.
Panels that need API keys are marked with an asterisk, linking to each panel's .md for setup instructions.
Added 5 new songs to the now playing preview GIF:
Created three merged preview GIFs: verse_preview.gif, dashboard_preview.gif, nowplaying_preview.gif.
API keys section now says "(optional)" and mentions Last.fm/Libre.fm as scrobbler choices with direct links to the panel docs.
Removed the Previews section (content moved into the table).
Removed the Project Structure section.
Removed the weather provider note from Configuration (already covered in the API keys section).