Skip to content

2.1.9-beta

Pre-release
Pre-release

Choose a tag to compare

@tpanajott tpanajott released this 27 Sep 11:51

NSPanelManager — Release Notes (Aug 8 – Sep 27)

A new beta release for NSPanel Manager is now out. A ton of help has been given from @jamesmulcahy and we should all give him a huge thanks for his help!
This release spans work across three repositories: the manager container, the panel firmware, and the web UI.


🎉 NSPanelManager (container)

✨ New Features

  • First page rewritten in React — large-scale migration from HTMX to React for the main dashboard (toast/notification framework, MDI icons, STOMP via RXStomp, NSPanel logs viewer with log download, room editing as a full React page, and more) — #391
  • Media player support — new NSPanel protobuf fields for Home Assistant media players + album art fetching/rendering on-panel — #384
  • Dev build script improvements — configurable port, container name, and seed path so multiple dev stacks can run side by side — #387

🔧 NSPanelManager-firmware

🐛 Critical Fixes

  • Fixed a permanent MQTT deadlock: a failed publish could orphan esp-mqtt's internal lock and wedge the panel offline for good (only fixable by power-cycling). Found via a 35+ hour field soak test — #35
  • Fixed a panel deadlock during rapid config reloads on flaky Wi-Fi: unbounded retry loops in event handlers could freeze the panel entirely if Wi-Fi dropped mid-retry — #26 (+ follow-up regression fixes in #31, #32, #33)
  • Fixed panels getting permanently stuck on "Lost connection to manager": MQTT config topic wasn't re-subscribed on reconnect, and the panel never re-announced itself if the manager lost its state — #14
  • Fixed panel getting stuck subscribing to a manager status topic with no address on every boot — #34

🔄 OTA / Firmware Update Reliability

  • Panel now recovers cleanly from a failed firmware OTA instead of getting stuck on the loading screen — #18
  • Fixed a resource leak (HTTP client, socket, OTA buffer) on every failed OTA attempt — #23
  • Fixed the force-update flag never resetting, causing every future update to reflash even when already up to date — #19
  • Fixed GUI update retry logic so it doesn't fall through with a bad HTTP client handle — #20
  • Fixed task handle not clearing when a GUI update can't start, silently blocking all future update commands — #22
  • Firmware now stores the checksum of what was actually flashed, not what happened to be current at boot — #24

✨ New Features

  • Buzzer support — RTTTL tune playback over MQTT, plus touch/scene event tracking as groundwork for configurable sound-per-event — #29

🧹 Cleanup / Refactors

  • Removed std::format usage, reclaiming ~330 KB of flash — #17
  • Fixed an out-of-bounds read in Nextion string event handling — #16
  • Named the Nextion update protocol return codes for readability — #28
  • Dropped dead/meaningless null checks left over from the cJSON → nlohmann migration — #33

🧹 Misc

  • Updated to latest ESP-IDF supported by PlatformIO
  • Reworked how fallback access point is triggered as there were underlying issues as to how the old method worked
  • When doing the initial setup or connecting to the fallback access point the NSPanel now registers as a captive portal and should automatically popup the configuration web page.

🎉 NSPanelManager Web UI

✨ New Features

  • Lights page — brightness/color-temp sliders, color mode detection, and toggling lights straight from a room's entity list
  • Idle screensaver — clock screensaver after a configurable idle timeout
  • Weather screensaver — animated weather icons, added to the screensaver rotation
  • Loading page — shown on startup and while reconnecting
  • Long-press on the room list — jump straight into a room
  • Entity type icons on room pages, with working toggle

🛠 Improvements

  • Reworked router + shared idle-timeout store for consistent screensaver behavior everywhere
  • Migrated protobuf handling to ts-proto (internal cleanup)
  • More reliable WebSocket (STOMP) connect/reconnect handling
  • Simplified room selector component
  • General UI polish: icon sizes, button labels, gradients, room page layout

🐛 Bug Fixes

  • Fixed color mode detection bug on room change (lights page)
  • Fixed room selector not closing after idle timeout + flicker bug
  • Fixed main page button firing right after screensaver deactivation
  • Fixed broken ceiling light icon
  • Fixed unreliable visual feedback when WebSocket disconnects
  • Various build fixes