v4.0.0
·
224 commits
to refs/heads/main
since this release
What’s changed
🚀 Enhancements
🧰 Maintenance
📚 Documentation
⬆️ Dependency updates
- ⬆️ Lock file maintenance @renovate[bot] (#1300)
- ⬆️ Update dependency ty to v0.0.9 @renovate[bot] (#1303)
- ⬆️ Update dependency ty to v0.0.10 @renovate[bot] (#1305)
- ⬆️ Update dependency ruff to v0.14.11 @renovate[bot] (#1304)
- ⬆️ Update github/codeql-action action to v4 @renovate[bot] (#1299)
- ⬆️ Update dependency ty to v0.0.11 @renovate[bot] (#1306)
More details
🚀 Performance Comparison: Lazy Loading
Before (Eager Loading)
- Initialize(): ~24 seconds
- All sections validated upfront (heating, sensor, staticValues, device, hot_water)
- Hot water section alone: ~7.9 seconds (67% of total init time)
After (Lazy Loading)
- Initialize(): ~0.02 seconds (~1200x faster)
- Only fetches firmware version on init
- Sections validated on-demand when first accessed
Granular Hot Water Loading
Hot water parameters split into 3 groups for more efficient loading:
| Group | Params | Method | Use Case |
|---|---|---|---|
| Essential | 5 | hot_water_state() |
Frequent polling |
| Config | 16 | hot_water_config() |
Advanced settings |
| Schedule | 8 | hot_water_schedule() |
Time programs |
Race Condition Prevention
Added asyncio locks (double-checked locking pattern) to prevent duplicate network requests when concurrent calls access the same section before validation completes.
Home Assistant Impact
- ⚡ Integration loads almost instantly
- 📉 Reduced startup blocking time from ~24s to ~0.02s
- 🔄 Data fetched on-demand, spreading network load over time