-
v0.5.5
Stablereleased this
2026-04-18 15:48:34 +00:00 | 0 commits to main since this releaseBug fixes
-
Entities disabled / missing after firmware update — entity composition is decided at setup time based on the detected API variant (legacy vs 3.4.0+). Currency select, DND switch, screen-nav buttons and friends are V3.4-only. When a device updated across that boundary, the cached entity set no longer matched the new firmware: V3.4-only entities showed up as unavailable on a downgrade, and newly-supported entities never appeared on an upgrade. Reported on btclock-2ad158.
Fix: the post-install watchdog now schedules a config-entry reload as soon as it confirms a gitTag change, so
async_setup_entryre-runs with the new variant. Reload is skipped on timeout (a still-broken device gains nothing from thrashed entities).
Downloads
-
Source code (ZIP)
0 downloads
-
Source code (TAR.GZ)
0 downloads
-
-
v0.5.4
Stablereleased this
2026-04-18 15:31:11 +00:00 | 1 commits to main since this releaseBug fixes
- Progress bar stuck after OTA completes — even though the watchdog correctly detected the device coming back on new firmware, the progress bar kept spinning until SSE reconnected. Root cause:
in_progresswas(install task running) OR coordinator.data["isOTAUpdating"], and the cached status still held the True value from the last pre-reboot SSE frame. The watchdog now explicitly clears the stale flag viaasync_apply_optimistic({"isOTAUpdating": False})before writing state, so the bar disappears the moment the install is deemed complete. - Simplified polling cadence — once a minute for up to 20 minutes, per user request. The old 10s/10s schedule was noisy and didn't produce any faster detection since the device is unreachable for the first minute or so during reboot anyway.
Downloads
-
Source code (ZIP)
0 downloads
-
Source code (TAR.GZ)
0 downloads
- Progress bar stuck after OTA completes — even though the watchdog correctly detected the device coming back on new firmware, the progress bar kept spinning until SSE reconnected. Root cause:
-
v0.5.3
Stablereleased this
2026-04-18 15:18:16 +00:00 | 2 commits to main since this releaseBug fixes
-
Update entity stuck on "Installing" — after an OTA, the progress bar never cleared because
installed_versionwas cached at setup and never refreshed, andisOTAUpdatingtransitions can be missed across the device reboot (SSE disconnects; firmware doesn't push a status frame when OTA starts).Fix: spawn a background watchdog when the user starts an install. It records the pre-install
gitTagand polls/api/settingsevery 10s (after a 10s grace), swallowing errors during the reboot. When a differentgitTagcomes back — or 10 minutes pass — it clears the in-progress flag and refreshes the installed version. Works for both the one-shot auto-update and the file-by-file specific-version install paths.
Downloads
-
Source code (ZIP)
0 downloads
-
Source code (TAR.GZ)
0 downloads
-
-
v0.5.2
Stablereleased this
2026-04-18 15:09:20 +00:00 | 3 commits to main since this releaseBug fixes
The v0.5.1 variant-detection fix correctly classified 3.3.x devices as LEGACY, but
button.pyreturned early whenever variant != V3_4, making every button — including identify, restart and full_refresh — disappear on legacy devices.- Buttons now declare their path-table key and setup filters per-button on path-table membership. On LEGACY we keep identify / restart / full_refresh (GET); on V3_4 we keep all six.
- Dropped the now-incorrect
_require_v3_4guards fromasync_identify/async_restart/async_full_refresh— the path tables already dispatch GET vs POST per variant.
Verified live on 192.168.20.253 (3.3.19): GET /api/identify, /api/restart, /api/full_refresh all return 200.
Downloads
-
Source code (ZIP)
0 downloads
-
Source code (TAR.GZ)
0 downloads
-
v0.5.1
Stablereleased this
2026-04-18 15:03:45 +00:00 | 4 commits to main since this releaseBug fixes
- Firmware auto-update — clicking Install in the Update entity against a 3.3.x device (e.g. 3.3.19) previously POSTed
/api/firmware/auto_updateand got a 404, because that firmware only registers the route as GET. Two root causes:detect_varianttrusted thehttpAuthPassSetfallback over a realgitTag, so 3.3.x builds (which ship that field) were misclassified as V3.4. Now a valid semvergitTagshort-circuits the fallbacks.- The legacy path table was missing OTA routes. Added
auto_update(GET),upload_firmware(POST),upload_webui(POST), verified live against 3.3.19.
- The Update entity now works on 3.3.x release builds too (no V3.4 gate).
Downloads
-
Source code (ZIP)
0 downloads
-
Source code (TAR.GZ)
0 downloads
- Firmware auto-update — clicking Install in the Update entity against a 3.3.x device (e.g. 3.3.19) previously POSTed
-
v0.5.0
Stablereleased this
2026-04-18 11:49:50 +00:00 | 7 commits to main since this releaseNew capabilities
- Services —
btclock.show_text(auto-uppercased, clamped to the device'snumScreens) andbtclock.show_custom(one string per screen). 3.4.0+ firmware only. - LED brightness slider (
number.led_brightness, 0–255) + Disable LEDs switch backed by PATCH/api/settings. - Firmware update entity — polls
gitReleaseUrlonce a day; only shown for real semver builds. Installing the latest version firesPOST /api/firmware/auto_update; specific-version installs download the matching{board}_firmware.binandlittlefs_{size}.binassets and upload them over/upload/firmware+/upload/webui. Release notes fall back to first-line compare-API commit messages when the release body is empty.
UX
- README now has My Home Assistant buttons for HACS install and the config-flow start.
Tested
119 tests passing; live-verified
show_text,show_custom,ledBrightness,disableLedsagainst the Rev A device.Downloads
-
Source code (ZIP)
0 downloads
-
Source code (TAR.GZ)
0 downloads
- Services —