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_temperatureimplementations 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_tweaktypo toinitial_tweak(#2100) - Additional miscellaneous bugfixes, conversion issues, and CodeRabbit auto-fixes.
♻️ Refactoring
- Extract shared
find_device_entityhelper (#2101) - Typed
Trvdomain object replaces thereal_trvsdicts (#2056) StateManageris 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_learningsdescription (#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
- @nizarbadriali made their first contribution in #2071
- @leow149 made their first contribution in #2105
Full Changelog: 1.8.2...1.9.0-Beta-2