Skip to content

v0.94.460

Choose a tag to compare

@github-actions github-actions released this 16 Oct 06:23
· 185 commits to main since this release
51fb20b

The Solver tab shows the price guards at a glance; Charge By holds its
target for the whole final hour instead of selling off the top and
refilling.

  • Devhub validation: confirmed live on devhub (HA 2026.10.1) at 9973495,
    installed untagged via HACS from the release cut's branch (installed_version
    release/0.94.460) and restarted 15:53:52 AEST 16 Oct; the PR's head
    (89b9e3d) was validated the same way at 15:31:39.
    • devhub's own entities stamp 0.94.460 (the other 119 are production's
      mirrored entities on 0.94.459); 145 / 145 nimbus_load entities
      available. The four Price safety cards are in the Solver tab, under the
      price-day cards.
    • No Traceback, and no ERROR line this release introduces. The start
      logs 200 nimbus_load "does not generate unique IDs" errors. A
      v0.94.459 control, installed and restarted 15:07:11, logged the same
      200 with 145 / 145 entities. These are devhub-only: production logged
      none after v0.94.459's restart.
    • The cards on real data: each card's template was rendered against
      production's live state (read-only /api/template): Watching / Fresh,
      rebuilt 1 min ago / Hold / Shadow.
    • Charge By: tests/test_charge_by.py reproduces 16 Oct's 14:34 plan.
      The deadline alone sells off the top and refills; the final hour bound
      stays full. Not claimed: a live charge window under the new rule (the
      next is 17 Oct's).
    • CI passed all 10 checks on #1802 and this release PR.
  • Consumer check: the Solver tab gains a row of four cards that show whether
    a price guard is acting; Charge By, where set, is full an hour before its
    deadline and stays full. An install without Charge By sees no change in
    dispatch.

Added

  • A Price safety row on the Solver tab (household, 16 Oct 2026: "why
    release features which are not visible"). Four equal cards under the price
    chart, one per guard, each opening with a coloured band: green all well,
    red a guard acting now, orange hold or live, grey not running.
    • False-spike guard (#1778): watching, or holding a spike out, with the
      reason, constraint and expiry.
    • Price source (#1793): fresh, or stale and using AEMO, with how long
      ago the provider rebuilt its forecast.
    • Battery hold (#1654): whether the plan means "hold" now.
    • Consolidated prices (#1786): shadow, or driving the plan.

Fixed

  • Charge By holds the target for the whole final hour (household, 16 Oct
    2026: "no matter what I do it just defers"). The target bound at only two
    instants: the deadline and an hour before it. Once "now" passed the
    earlier one, the plan could sell off the top and refill. On 16 Oct, with
    15:30 / 100%, the 14:34 plan sold 40 kW for a minute into an 8.9c interval
    to buy back at a forecast 0.7c, and the battery hovered at 97-99% instead
    of sitting at 100%, the taper making the last percent slow to recover.
    Every period ending in the hour before the deadline now binds, so the
    battery is full an hour early and stays full. A spike worth more than the
    $2/kWh-per-period shortfall penalty can still be sold into.