• v0.5.5 d26d268136

    v0.5.5
    Some checks failed
    Lint / Ruff (push) Failing after 4s
    Test / Pytest (push) Failing after 1m9s
    Validate / Hassfest Validation (push) Failing after 2s
    Validate / HACS Validation (push) Failing after 1m8s
    Release / Release (release) Failing after 1m8s
    Stable

    djuri released this 2026-04-18 15:48:34 +00:00 | 0 commits to main since this release

    Bug 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_entry re-runs with the new variant. Reload is skipped on timeout (a still-broken device gains nothing from thrashed entities).

    Downloads
  • v0.5.4 ce4cbffd80

    v0.5.4
    Some checks failed
    Lint / Ruff (push) Failing after 1m9s
    Test / Pytest (push) Failing after 4s
    Validate / HACS Validation (push) Failing after 2s
    Validate / Hassfest Validation (push) Failing after 1m8s
    Release / Release (release) Failing after 1m8s
    Stable

    djuri released this 2026-04-18 15:31:11 +00:00 | 1 commits to main since this release

    Bug 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_progress was (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 via async_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
  • v0.5.3 816a137de0

    v0.5.3
    Some checks failed
    Test / Pytest (push) Failing after 4s
    Lint / Ruff (push) Failing after 1m10s
    Validate / Hassfest Validation (push) Failing after 1s
    Validate / HACS Validation (push) Failing after 1m9s
    Release / Release (release) Failing after 1m8s
    Stable

    djuri released this 2026-04-18 15:18:16 +00:00 | 2 commits to main since this release

    Bug fixes

    • Update entity stuck on "Installing" — after an OTA, the progress bar never cleared because installed_version was cached at setup and never refreshed, and isOTAUpdating transitions 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 gitTag and polls /api/settings every 10s (after a 10s grace), swallowing errors during the reboot. When a different gitTag comes 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
  • v0.5.2 a67c558819

    v0.5.2
    Some checks failed
    Lint / Ruff (push) Failing after 4s
    Test / Pytest (push) Failing after 1m9s
    Release / Release (release) Failing after 1m8s
    Validate / Hassfest Validation (push) Failing after 2s
    Validate / HACS Validation (push) Failing after 1m7s
    Stable

    djuri released this 2026-04-18 15:09:20 +00:00 | 3 commits to main since this release

    Bug fixes

    The v0.5.1 variant-detection fix correctly classified 3.3.x devices as LEGACY, but button.py returned 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_4 guards from async_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
  • v0.5.1 1513bbbfbb

    v0.5.1
    Some checks failed
    Lint / Ruff (push) Failing after 1m9s
    Validate / Hassfest Validation (push) Failing after 1m8s
    Validate / HACS Validation (push) Failing after 1m8s
    Test / Pytest (push) Failing after 25s
    Release / Release (release) Failing after 1m8s
    Stable

    djuri released this 2026-04-18 15:03:45 +00:00 | 4 commits to main since this release

    Bug 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_update and got a 404, because that firmware only registers the route as GET. Two root causes:
      • detect_variant trusted the httpAuthPassSet fallback over a real gitTag, so 3.3.x builds (which ship that field) were misclassified as V3.4. Now a valid semver gitTag short-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
  • v0.5.0 5a4df5958f

    v0.5.0
    Some checks failed
    Lint / Ruff (push) Waiting to run
    Test / Pytest (push) Waiting to run
    Validate / Hassfest Validation (push) Waiting to run
    Validate / HACS Validation (push) Waiting to run
    Release / Release (release) Failing after 1m26s
    Stable

    djuri released this 2026-04-18 11:49:50 +00:00 | 7 commits to main since this release

    New capabilities

    • Servicesbtclock.show_text (auto-uppercased, clamped to the device's numScreens) and btclock.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 gitReleaseUrl once a day; only shown for real semver builds. Installing the latest version fires POST /api/firmware/auto_update; specific-version installs download the matching {board}_firmware.bin and littlefs_{size}.bin assets 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, disableLeds against the Rev A device.

    Downloads