v0.3.0rc1
Pre-releasev0.3.0rc1 Release Notes
Highlights
- ⚡ Control when optimization runs — New auto-optimize switch lets you pause automatic optimization and trigger it manually via the
haeo.optimizeservice - 🎨 Beautiful new entity selector — Configurable entities now use a sleek choose selector for a much cleaner configuration experience
- 🔋 Simplified battery modeling — Battery partitions replaced with streamlined SOC-based pricing for cleaner entity structure
- 🕐 Better forecast alignment — Optimization tiers now align with clock boundaries (e.g. every 5 minutes) for more intuitive scheduling
- 🔧 Enhanced debugging tools — New diagnostics service with time-travel capability for troubleshooting optimization behavior
- 💾 Smaller database footprint — Forecast history is no longer recorded by default, significantly reducing recorder database size
⚠️ Breaking Changes
Battery Entity Structure Changed (#265)
Battery "balance" section devices have been removed. If you have automations or dashboards referencing battery balance partition entities, you'll need to update them.
Migration: Remove any references to battery balance partition entities. The battery now uses a single, simplified entity structure with SOC-based pricing.
Update Interval Configuration Removed (#252)
The update interval configuration option has been removed as it was no longer used. HAEO now uses event-driven optimization triggered by input changes.
Migration: No action required — this setting was not functional in recent versions.
Optimization Tiers Now Align with Clock Boundaries (#236)
Optimization tiers now align with clock boundaries (e.g. 5-minute marks) rather than using fixed-size intervals from an arbitrary start time. This provides more intuitive scheduling but changes when tier boundaries occur.
Migration: No action required for most users. If you had automations that relied on exact tier timing, they may need adjustment.
User-Facing Changes
New Features
- Auto-optimize switch (#254) — Toggle automatic optimization on/off from the UI. When disabled, use the new
haeo.optimizeservice to trigger optimization manually or via automations - Diagnostics service (#247) — New service for debugging optimization behavior with detailed diagnostic output
- Time-travel diagnostics (#250) — Run diagnostics at a specific point in time to debug historical optimization decisions
- Record forecast option (#274) — Configure whether to record forecast data to the recorder database
- Interpolation mode (#275) — New interpolation mode option for the HAEO extractor for compatiblity with Amber Express
Improvements
- Clock-aligned timesteps (#236) — Optimization periods now align with clock boundaries for more predictable scheduling
- More impatient setup (#276) — Reduced setup timeout from 30s to 5s for quicker startup
Developer-Facing Changes
Developer Highlights
- Composable connection architecture (#227) — Connections are now built from composable components (efficiency, pricing, power limits), enabling flexible combinations without exponential complexity
- Declarative input entities (#239) — Input entities are now defined by configuration, making the system more maintainable and extensible
Architecture
- Deferred network updates (#277) — Element updates are now batched and applied at optimization time rather than immediately, reducing unnecessary processing
- Simplified data pipeline (#240, #242) — Removed legacy
loadfunction andbuild_config_datapipeline - NumPy array storage (#243) — Element config series now stored as numpy arrays for better performance
- Improved type safety (#230) — Model layer calls are now fully typed
Testing & Documentation
- Timezone-aware scenarios (#251) — Scenario tests now run in specified timezone for consistent results
- Updated battery documentation — Docs updated to reflect new SOC-based pricing model
Contributors
Full Changelog
- Type the calls to the model layer to improve type safety by @TrentHouliston in #230
- Add buy me a coffee links by @TrentHouliston in #232
- Replace configurable entity with choose selector by @BrendanAnnable in #226
- Make the input entities be defined by configuration by @TrentHouliston in #239
- Remove the load function by @TrentHouliston in #240
- Remove build_config_data pipeline by @TrentHouliston in #242
- Store element config series as numpy arrays by @TrentHouliston in #243
- Align timesteps with clock boundaries by @BrendanAnnable in #236
- Fix amber prices in dev by @BrendanAnnable in #246
- Add diagnostics service by @BrendanAnnable in #247
- Run scenarios in given timezone by @BrendanAnnable in #251
- Add time travelling to diagnostics service by @BrendanAnnable in #250
- Remove update interval configuration by @BrendanAnnable in #252
- Change connections to be made of composable components by @TrentHouliston in #227
- Add auto optimize switch by @BrendanAnnable in #254
- Replace battery partitions with SOC pricing by @TrentHouliston in #265
- Bump the github-actions group across 1 directory with 3 updates by @dependabot[bot] in #263
- Add record forecast config option by @BrendanAnnable in #274
- Add interpolation mode by @BrendanAnnable in #275
- Update setup timeout to 5 by @BrendanAnnable in #276
- Defer network updates until optimization time by @BrendanAnnable in #277
Full Changelog: v0.2.1...v0.3.0rc1