github KartoffelToby/better_thermostat 1.9.0-Beta-2
1.9.0 Beta 2

pre-release6 hours ago

Release Notes

This release includes numerous features, bug fixes, refactorings, and documentation updates.
Thanks to all, who helped to improve this project, and special thanks to @cl445

✨ Features

  • Activity Log: Link device relations and events in the activity log (#2129)
  • Sensors: Add door sensor support with independent open/close delays (#2116)
  • Diagnostics: Expose PID calibration diagnostics as sensors (#2097)
  • Thresholds: Re-evaluate outdoor threshold on outdoor sensor changes (#2045)
  • Presets: Implement preset off on target temp change (#2067)
  • MPC: Seed fresh target-temp buckets from nearest sibling (#2002)

🐛 Bug Fixes

  • Maintenance: Register valve maintenance tick independently of calibration mode (#2127)
  • Setpoints: Match setpoints with a tolerance across rounding grids (#2114)
  • HVAC: Confirm HVAC mode changes against the live TRV state (#2115)
  • Calibration: Only consider writable domains for the local calibration entity (#2113)
  • Quirks: Harden the quirk set_temperature implementations activated by #2105 (#2111)
  • TRV: Fix dual-setpoint detection and TRV temperature handling bugs (#2105)
  • Startup: Recheck critical entities once the startup grace window elapses (#2108)
  • Startup: Stop the startup retry loop when the entity is removed (#2109)
  • Startup: Retry critical entities at startup before raising repair issue (#2093)
  • Startup: Fix boot missing devices errors and AC Config flow removal (#2095)
  • Automations: Offer device automations for the Better Thermostat climate entity (#2112)
  • Groups: Compare group member setpoints in Celsius in group_all_members_off (#2107)
  • Configuration: Allow removing the cooler entity from the configuration (#2091)
  • Controller: Controller state poison resistance (NaN/Inf healing at compute and restore time) (#2057)
  • State: Fix sensor handling, store loading, and window-state hardening (#2054)
  • Threshold: Keep outdoor threshold working when recorder history is empty (#2038) (#2044)
  • Units: Read TRV temperatures in the Home Assistant system unit (#2043)
  • Translations: Fix dead calibration/config doc links from translations (#2040) (#2046)
  • Typos: Correct inital_tweak typo to initial_tweak (#2100)
  • Additional miscellaneous bugfixes, conversion issues, and CodeRabbit auto-fixes.

♻️ Refactoring

  • Extract shared find_device_entity helper (#2101)
  • Typed Trv domain object replaces the real_trvs dicts (#2056)
  • StateManager is the only owner of learned controller state (#2058)

📖 Documentation

  • Added an algorithm selection guide to the README (#2071)
  • Added numpy-style docstrings for the model-fix quirk hooks (#2078)
  • Remove stale content, fix broken doc images and 404 learn-more links (#2065)
  • Keep README version info from going stale (#2064)
  • Serve the documentation pages under their declared URLs (#2052)
  • Synchronize translations with current config flow, services and entities (#2062)

🛠 Build, Testing, and Chores

  • Build: Manage the project with uv (#2027)
  • Build: Type-check the whole component, strict on the calibration modules (#2073)
  • Build: Run pyrefly type checking in CI (#2075)
  • Build: Extend strict pyrefly to telemetry, retry and the Trv object (#2077)
  • Testing: Added simulation core & scoring engine benchmark test (#2087)
  • Testing: Integration harness for real config entry against a simulated TRV (#2059)
  • Testing: Pin controller state-threading contract (#2050)
  • Testing: Validate bundled blueprints save with default inputs (#2047)
  • Lint: Enforce numpy docstring arg coverage and relax tests (#2083)
  • Translate remaining German comments to English (#2102)
  • Remove dead anti-flicker code from temperature event handler (#2099)
  • Improve source comments to describe current behavior (#2096)
  • Add diagnostic logging for TRV setpoint sync edge cases (#2048)
  • Drop stale open-caps mention from the reset_pid_learnings description (#2110)

What's Changed

  • Fix fahrenheit/celsius mishandling by @KartoffelToby in #2035
  • test: validate bundled blueprints save with default inputs by @cl445 in #2047
  • fix: remove dead calibration documentation links from config flow (#2040) by @cl445 in #2046
  • fix: read TRV temperatures in the Home Assistant system unit by @cl445 in #2043
  • fix: keep outdoor threshold working when recorder history is empty (#2038) by @cl445 in #2044
  • feat: re-evaluate outdoor threshold on outdoor sensor changes by @cl445 in #2045
  • chore: add diagnostic logging for TRV setpoint sync edge cases by @cl445 in #2048
  • test: pin controller state-threading contract by @cl445 in #2050
  • test: integration harness — real config entry against a simulated TRV by @cl445 in #2059
  • docs: serve the documentation pages under their declared URLs by @cl445 in #2052
  • Synchronize translations with current config flow, services and entities by @cl445 in #2062
  • fix: sensor handling, store loading, and window-state hardening by @cl445 in #2054
  • docs: keep README version info from going stale by @cl445 in #2064
  • Disable current Preset of target temp changes by @KartoffelToby in #2067
  • refactor: StateManager is the only owner of learned controller state by @cl445 in #2058
  • build: manage the project with uv by @cl445 in #2027
  • docs: remove stale content, fix broken doc images and 404 learn-more links by @cl445 in #2065
  • refactor: typed Trv domain object replaces the real_trvs dicts by @cl445 in #2056
  • mpc: seed fresh target-temp buckets from nearest sibling by @cl445 in #2002
  • fix: controller state poison resistance (NaN/Inf healing at compute and restore time) by @cl445 in #2057
  • build: type-check the component, strict on the calibration modules by @cl445 in #2073
  • build: run pyrefly type checking in CI by @cl445 in #2075
  • build: extend strict pyrefly to telemetry, retry and the Trv object by @cl445 in #2077
  • docs: numpy-style docstrings for the model-fix quirk hooks by @cl445 in #2078
  • chore(lint): enforce numpy docstring arg coverage and relax tests by @cl445 in #2083
  • fix: allow removing the cooler entity from the configuration by @cl445 in #2091
  • refactor: extract shared find_device_entity helper by @cl445 in #2101
  • chore: translate remaining German comments to English by @cl445 in #2102
  • fix: correct inital_tweak typo to initial_tweak by @cl445 in #2100
  • chore: remove dead anti-flicker code from temperature event handler by @cl445 in #2099
  • chore: trivial hygiene fixes (docstring, dead comment, boolean) by @cl445 in #2098
  • fix: retry critical entities at startup before raising repair issue by @cl445 in #2093
  • docs: added an algorithm selection guide to the README by @nizarbadriali in #2071
  • Fix boot missing devices errors, AC Config flow removal, devel… by @KartoffelToby in #2095
  • fix: compare group member setpoints in Celsius in group_all_members_off by @cl445 in #2107
  • chore: drop stale open-caps mention from the reset_pid_learnings description by @cl445 in #2110
  • fix: offer device automations for the Better Thermostat climate entity by @cl445 in #2112
  • fix: stop the startup retry loop when the entity is removed by @cl445 in #2109
  • chore: improve source comments to describe current behavior by @cl445 in #2096
  • fix: recheck critical entities once the startup grace window elapses by @cl445 in #2108
  • Fix dual-setpoint detection and TRV temperature handling bugs by @leow149 in #2105
  • fix: harden the quirk set_temperature implementations activated by #2105 by @cl445 in #2111
  • fix: only consider writable domains for the local calibration entity by @cl445 in #2113
  • fix: confirm HVAC mode changes against the live TRV state by @cl445 in #2115
  • fix: match setpoints with a tolerance across rounding grids by @cl445 in #2114
  • feat: expose PID calibration diagnostics as sensors by @cl445 in #2097
  • fix: register valve maintenance tick independently of calibration mode by @cl445 in #2127
  • feat: add door sensor support with independent open/close delays by @cl445 in #2116
  • test(benchmark): simulation core & scoring engine by @cl445 in #2087
  • feat: link device relations and events in activity log by @KartoffelToby in #2129

New Contributors

Full Changelog: 1.8.2...1.9.0-Beta-2

Don't miss a new better_thermostat release

NewReleases is sending notifications on new releases.