What's Changed
IOG Charging
car_charging_now can now be used to determine if the car is charging and if not cancel the IOG slot plan.
If no sensor is set then house load is used, unless charger is outside CT clamp.
- fix(car): default car_charging_plan_smart to on (#5237) by @chalfontchubby in #5251
- feat(octopus): octopus_intelligent_dynamic - confirm Intelligent slots only well inside a dispatch by @springfall2008 in #5248
- car_charging_now holds the battery for the car, never adds a car slot by @springfall2008 in #5245
- feat(dynamic-load): cancel a car's slots and IOG cheap rate while it is not charging, with an option to distrust Intelligent slots until seen charging by @springfall2008 in #5229
Small features
- Add Lead Hours Configuration for Octopus Saving Session Auto Join by @TCWORLD in #5010
- Move the off option to the top of the manual override dropdowns by @springfall2008 in #5108
- Add a filter box to the Apps tab of the web console by @springfall2008 in #5211
- feat(fetch): warn when export_more_solar is enabled but has no effect by @chalfontchubby in #5226
- Expose load_ml_source on the ML load stats entity by @Speshman in #5200
Solis modbus FB00
- docs(solis): add a separate template for FB00 firmware by @springfall2008 in #5246
Bugs
- fix(octopus): don't re-read a rate-limited GraphQL response by @springfall2008 in #5249
- fix(output): the plan's first row shows its rates from now by @springfall2008 in #5253
- fix(solis): manage the Energy Storage Control Switch on FB00 firmware by @springfall2008 in #5256
- fix(solis): apply slot events immediately so Predbat's read-back sees them by @springfall2008 in #5247
- Honour day_of_week when seeding rates beyond the modelled days (#5168) by @springfall2008 in #5173
- fix(gecloud): re-read EMS battery inverter settings and warn on a slot 1 override by @springfall2008 in #5109
- fix(givtcp): fill per-inverter arg slots by REST endpoint index, not discovery order (#5209) by @springfall2008 in #5216
- GE Cloud: parse option validation text with bracketed labels without crashing (#5217) by @springfall2008 in #5218
- fix(web): let /apps Edit reveal a masked credential instead of offering "xxx" by @springfall2008 in #5243
- fix(gateway): send each hub command once and wait for its ack by @mgazza in #5231
- feat(gateway): expose the gateway's enforced read-only flag as an entity and warn on mismatch by @mgazza in #5220
Dev
- fix(inverter): Persist inverters across planning cycles by @chalfontchubby in #5126
- Triage bot: pass review comment bodies as files, not inline arguments by @springfall2008 in #5234
- Triage bot: queue cleanup after review on PRs it opens by @springfall2008 in #5235
- feat(discovery): inverter records carry entities, capabilities and Predbat-named ratings (observe-only, piece 1) by @springfall2008 in #5228
- docs(debug-journal): fold in the 2026-09-25 queue slice; correct the #5103/#5186/#5053-adjacent entries by @springfall2008 in #5223
- fix(triage-bot): stop a cleanup run that exits early from wedging the daemon by @springfall2008 in #5244
- docs(debug-journal): fold in the 2026-09-26 queue slice (15 candidates); correct entries overtaken by the #5109/#5173/#5185/#5188/#5189 merge batch by @springfall2008 in #5240
New Contributors
Full Changelog: v9.2.0...v9.3.0