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
Twin: The web UI carries a looksmaxxed version of whatever the panel is showing right now. Same data the display gets, easier on the eyes.
Fullscreen twin viewer: The twin gets a page of its own, with far more settings than the tile has room for and every export option in one place.
Export: A still leaves as SVG or PNG, a moving panel as GIF, MP4 or WebM. The dashboard can also film a whole day at one minute of day per second of film, which is lowkey the most fun thing in this release.
Preview controls: Colours, cover glow, dot raster, tile grain, playhead and a panel you can drag around sit in a drawer next to the stage. Every panel remembers its own set.
Icons: Pixel glyphs run through the whole UI now, so the thing finally looks like it belongs to the display it drives.
Home tab: One screen holds the live tile, the panel squares, the trigger controls and the connection pill. It fits on a phone without scrolling, which took embarrassingly long to get right.
Settings tab: Theme, accent colour and preview mode live here, next to an about block that credits the icon sets.
Interactive installer: Setup asks instead of assuming. It scans for the display over Bluetooth, walks the panels one by one, takes the keys and coordinates each one needs, offers autostart on Linux and Windows, and starts the service when it is done.
Update check: ./install.sh --check-update asks GitHub whether something newer is out, and --update pulls it and restarts.
Update notice: The web UI asks GitHub for the newest release and says so above the credits when you are behind, with a link straight to it.
Verse translations: The verse of the day comes from OurManna and you pick the translation in the web UI.
Direct connect: A config switch connects by address instead of scanning first, for when the panel is being stubborn and sitting on a stale link.
Debug log: Verbose logging turns on from the config, from --debug or from SPD_DEBUG. You never have to touch the systemd unit for it.
Config template: config.example.toml ships with the repo and the installer builds your config.toml out of it.
Timezone: The dashboard reads the clock of the machine it runs on instead of a hardcoded Europe/Vienna, on Linux and on Windows alike. Set the zone with your OS, timedatectl set-timezone on a Pi, and the installer prints back what it found.
Panel order: Drag the panels around in the enable card to set their priority.
Dashboard API: The web UI asks the Pi what the dashboard would show at any minute of the day, so nobody has to write that maths a second time in JavaScript.
Location picker: The weather stops asking for decimal degrees. Name a place or drop a pin on a map and the web UI works out the coordinates for you, the installer takes either form in one question. The map wears the theme and the accent colour like the rest of the UI.
Changed
Web UI overhaul: Almost every screen got rebuilt and plenty of controls moved. Give it a minute, it makes more sense than it used to.
Usability: Settings turn up when they apply and stay out of the way when they do not, the nav remembers where you left it, and the mobile layout is no longer an afterthought.
Logging: Every line goes through one module with levels and tags, so journalctl -p err actually filters something.
Config location: config.toml sits in the repo root, stays out of git, and everything the web UI cannot reach lives in an [expert] block at the bottom.
Default port: The web UI and the API listen on 12832 unless you say otherwise.
Name: The project is smart pixel display now, not smart pixel dashboard. The systemd unit is smartpixeldisplay.service and the Windows task is SmartPixelDisplay; the installer removes the old ones on the way past. The dashboard panel keeps its own name.
Weather config: location holds the name of the place you picked instead of the old wttr override, and location_mode remembers which of the two inputs the web UI shows. Coordinates are what gets stored either way, so nothing is looked up again once it is set.
Labels: The panel descriptions and the lines under the settings say what a thing is instead of explaining it at length.
Fixed
Brightness on a panel switch: Switching panels could leave the display sitting at the old panel's brightness. The switch cancelled whatever was still being sent, and the brightness command went down with it, so the new panel drew at the wrong level until something else set it.
Environment file: The bpm cache looked for a .env beside its own module, where there never was one, so the getsongbpm key went unread and the bpm readout stayed empty. It takes the one in the repo root.
Removed
Timed triggers: A trigger could carry an expiry time that no caller ever set. If some shortcut of yours sends expires_at, it gets a trigger without an expiry.
DNS workaround: A process wide getaddrinfo replacement is gone. It was doing a lot more than its name suggested.