2026-04-24 - 2026-10-24
Overview
13 Releases published by 1 user
Published
v0.18.2
Published
v0.18.1
Published
v0.18.0
Published
v0.17.0
Published
v0.16.0
Published
v0.15.0
Published
v0.14.0
Published
v0.13.0
Published
v0.12.0
Published
v0.11.0
Published
v0.10.1
Published
v0.10.0
Published
v0.2.1
186 Pull requests merged by 1 user
Merged
#206 PRICE-02: the trading verdict skips price periods that have ended
Merged
#205 UX-46: Dutch status rows, banners, notes and wizard lines on NL pages; peak forecast label without (W)
Merged
#204 SAFETY-121: a recurring overload warns every quarter
Merged
#203 SAFETY-119: no "not keeping up" when the loop takes the wire back
Merged
#202 UX-45: Home price chart shows the 15-minute prices the add-on uses
Merged
#201 DOC-8: say EMS port, not meter bus
Merged
#200 Deploy 0.18.2 to master
Merged
#199 Release 0.18.2
Merged
#198 SAFETY-118: read the peak forecast in its own unit
Merged
#197 Deploy 0.18.1 to master
Merged
#196 Release 0.18.1
Merged
#195 UX-44: contract label says every 15 minutes, not hourly
Merged
#194 UX-43: tariff prices take 5 decimals
Merged
#193 Deploy 0.18.0 to master
Merged
#192 Release 0.18.0
Merged
#191 OPT-20: a refusal probe asks only PROBE_W, not the whole trade
Merged
#190 PRICE-01: own price server as a price source, with fallbacks
Merged
#189 MAINT-11: start or stop the maintenance cycle per battery
Merged
#157 OPT-15: price-run fixes (quarter edge, charge-end overshoot, refusal probe)
Merged
#188 SAFETY-112: say plainly that control waits for Home Assistant to start
Merged
#187 OPT-17: the solar forecast can come from several entities, summed
Merged
#186 Deploy 0.17.0 to master
Merged
#185 Release 0.17.0
Merged
#184 MAINT-15: the balancing hold ends on time with no SoC reading
Merged
#183 SAFETY-107: a refusal held under another writer is learned once
Merged
#182 MAINT-14: maintenance with no SoC reading: charge times out, drain holds at 0 W
Merged
#181 MAINT-13: a full pack that stops at 98-99 % is not a failed charge
Merged
#180 SAFETY-103: no swing on old battery readings after a drain ends
Merged
#179 Deploy 0.16.0 to master
Merged
#178 Release 0.16.0
Merged
#177 SAFETY-95: a maintenance drain that ends hands back smoothly
Merged
#176 SAFETY-96: a battery the loop cannot move does not freeze it
Merged
#159 MAINT-10: maintenance start hour in local time, default 19:00
Merged
#175 SAFETY-90: the peak guard goes on after a P1 meter gap
Merged
#174 Deploy 0.15.0 to master
Merged
#173 Release 0.15.0
Merged
#172 CI-14: infra-pin to admin/goodwe 3b4ff84 (WITNESS-09)
Merged
#171 SAFETY-94: a healthy battery that lags or reverses is not flagged as frozen or refusing
Merged
#170 Deploy 0.14.0 to master
Merged
#169 Release 0.14.0
Merged
#168 CI-13: infra-pin to admin/goodwe 0c04488 (FW-05, WITNESS-08)
Merged
#167 SAFETY-93: the maintenance charge end hands back smoothly, with no grid charging at a high house
Merged
#165 SAFETY-91: a held battery is drawn only after the others are full
Merged
#166 Deploy 0.13.0 to master
Merged
#164 Release 0.13.0
Merged
#163 SAFETY-85: no false 'not keeping up' while maintenance or the peak guard sets the battery
Merged
#162 SAFETY-87: peak guard uses every battery that can still give
Merged
#161 SAFETY-86: peak guard outranks the maintenance hold
Merged
#160 SAFETY-84: maintenance charge at N=2 no longer stalls
Merged
#158 SAFETY-83: peak guard outranks the maintenance drain at N=1
Merged
#156 OPT-11 P4: solar forecast and day plan
Merged
#154 SAFETY-78: maintenance drain at N=2 no longer stalls
Merged
#155 SAFETY-81: no false 'Load too high' alarms
Merged
#153 OPT-11 P3: price runs per battery
Merged
#151 SAFETY-79: peak guard keeps a margin below the limit
Merged
#152 OPT-11 P2: HA entities for battery modes
Merged
#150 UX-13 P3: Simple view and Batteries screen
Merged
#149 OPT-11 P1: per-battery mode limits, on/off, solar order
Merged
#148 UX-13 P5: Dutch text, STYLE check, DOCS screenshots, period editor
Merged
#147 UX-15: setup-only mode, and wizard fixes F1, F2, meter entity, step 1
Merged
#146 UX-13 P4: the setup wizard for installers
Merged
#145 UX-13 P2: the Installer settings view
Merged
#143 SAFETY-73: a battery that refuses, per inverter, with two or more
Merged
#144 UX-13 P1: page shell and Home screen on a structured /status
Merged
#142 UX-13 P0: layout table, page<->options derivation, warning tier, entity list
Merged
#141 SAFETY-52: a battery that refuses is asked for 0 W, with a 200 W probe every 15 min
Merged
#140 UX-11: safety log lines give one plain sentence and the code, the figures go to DEBUG
Merged
#139 CI: bump infra pin to d637d0b (admin/goodwe#61, UX-10)
Merged
#138 UX-10: the last plain-language leftovers (log lines, two table rows, 'Why: Other', red at 0 s)
Merged
#137 CI: bump infra pin to ecd3864 (admin/goodwe#60, UX-08)
Merged
#136 UX-08 2d: plain log lines, the rest of the status page, and DOCS
Merged
#135 UX-08 2c: short refusals, error texts and option texts
Merged
#134 UX-09: Details link for current HA, 'would' in shadow mode, plain terms
Merged
#133 UX-08 phase 2b: short, plain status rows and page banners
Merged
#132 CI: bump infra pin to 7081df4 (admin/goodwe#59, UX-08)
Merged
#131 UX-08 phase 2a: short, plain notifications, and a ratchet for the rest
Merged
#130 SAFETY-40: the integrator bound is not a BUG SIGNAL; alarm numbers from the clamp tick
Merged
#129 CI: bump infra pin to 7689816 (admin/goodwe#58, SAFETY-34)
Merged
#128 SAFETY-34: re-assert latched alarms, because a Core restart keeps the add-on
Merged
#127 CI: bump infra pin to a1d0618 (admin/goodwe#57, TOOL-9)
Merged
#126 TOOL-9: pin checks print their FAIL line under pipefail; job tokens via header, not remote URL
Merged
#125 CI-12: CI grades test_freeze.py against the real hwsim at a pinned admin/goodwe
Merged
#124 TEL-14: PV sign declared per entity (pv_invert_entities)
Merged
#123 DOC-5: tell installers to turn on the Supervisor Watchdog
Merged
#122 TEST-26: a missing value in a check is a named FAIL, not a traceback
Merged
#120 SAFETY-62/SAFETY-60: operator tools refuse input they cannot read
Merged
#121 SAFETY-61: the control task's death ends the process, after the wind-down
Merged
#119 DOC-1: operator docs name the real P1 entity and a roster that starts
Merged
#118 PKG-18: ship 0.12.0 to master, so TEL-12's pv_entities can reach an installed 0.11.0
Merged
#117 PKG-18: cut 0.12.0, so TEL-12's pv_entities can reach an installed 0.11.0
Merged
#116 TEL-12: several PV inverters, and one absent member is an absent TOTAL
Merged
#115 PKG-17: ship 0.11.0 to master - SAFETY-56's wording fix and TEL-11's pv_entity reach the battery
Merged
#114 PKG-17: cut 0.11.0, so SAFETY-56's wording fix and TEL-11's pv_entity can reach an installed 0.10.1
Merged
#113 TEL-11: PV production stops being invisible, and stays out of the control law
Merged
#102 Ci9 gateproof
Merged
#112 SAFETY-56: the gate cannot tell a dead register from a pack that cannot comply, so stop saying it can
Merged
#108 SEC-2: write down the release path, now that master refuses a direct push
Merged
#105 PKG-16: cut 0.10.1, so SAFETY-57's fix can reach an installed 0.10.0
Merged
#104 SAFETY-57: the stale-reading verdict gets an exit, because its own consequence is what stopped it being tested
Merged
#103 PKG-15: fold TEL-10 and SAFETY-48 into 0.10.0, so the version names its contents
Merged
#95 CI-9: a stacked PR is skipped, and a skipped check clears the merge gate
Merged
#96 CI-9 REVIEW PROBE (throwaway, do not merge)
Merged
#93 SAFETY-48: the slew step ceiling reaches the integrator, and what it bounds is the LEAD
Merged
#92 TEL-10: the loop's integrator stops being invisible
Merged
#91 PKG-14: cut 0.10.0, and say what an upgrade from 0.7.0 crosses
Merged
#90 SAFETY-47: what a shadow run can show, and the watts on its status row
Merged
#89 SAFETY-10: shadow mode - the whole decision path runs and nothing reaches the inverter
Merged
#88 SAFETY-45: a price-driven charge is sized by the capacity guard, not switched by it
Merged
#87 TARIFF-16: the injection leg stops being one number
Merged
#86 TARIFF-18: price_taxes_eur_kwh stops shipping at half the real Flemish figure
Merged
#85 TARIFF-17: a price component that varies by hour has somewhere to live
Merged
#84 TARIFF-11: the plan's account of itself, corrected and put on the page
Merged
#83 TARIFF-13: the coverage figure beside the peak stops resetting at a restart
Merged
#82 TARIFF-15: your own tariff card, as two coefficients the card itself grades
Merged
#81 TARIFF-07: three plugins that never fetched a price are withdrawn, and a site configured on one is told so
Merged
#80 TARIFF-14: the point whose own interval covers the instant
Merged
#79 TARIFF-12: a returned degradation is not a refresh
Merged
#78 TARIFF-10: configuring a price provider is what fetches prices
Merged
#77 TARIFF-09: ask the day-ahead feed for the horizon it was handed, on the Brussels calendar
Merged
#76 TARIFF-08: the day-ahead feed is read in the shape it actually publishes, and the fixtures stop agreeing with the parser
Merged
#75 FCST-06: "cannot persist" becomes one question, asked once, about the outcome
Merged
#74 FCST-05: one byte stops stopping the add-on, and the write path gets the read path's standard
Merged
#73 FCST-04: the carry-forward fill reaches the plan, and the day it carries survives a restart
Merged
#72 INSTR-01: grade diff()'s suppression rule at the level it is written at, one case per clause
Merged
#71 SAFETY-44: the latch migration takes the roster, and the guard stops being defeated by the key the defect wrote
Merged
#70 ARCH-02: rehearse the flat-to-roster switch - and SAFETY-44 re-confirmed by a second instrument
Merged
#69 SAFETY-43: delinquency measured against the ask, not against a flat 500 W
Merged
#68 SAFETY-31 AC 4: the alarm's attribution was graded by nothing, and a mutation proved it
Merged
#67 TEST-21: delivery_hold_s's floor re-derived — 30.0 s did not reproduce, it is 35.0 s, and 185 still stands
Merged
#66 UX-04: nothing was hidden, the defaults pin was never built, and CFG-04 was closed by UX-02
Merged
#65 PKG-13: the no-op half of the pre-deploy check has never run as documented
Merged
#64 PKG-12: bump 0.8.0 -> 0.9.0, so the five merges behind it can actually ship
Merged
#63 PKG-09: refuse a deploy that would be a no-op, or that the add-on would reject
Merged
#62 OPT-09: the weights parameter nothing ever passed, and what it cannot do
Merged
#61 UX-02: the validator's refusals, next to the field, before the save
Merged
#60 PKG-07: bump 0.7.0 -> 0.8.0, and stop the changelog calling shipped work unreleased
Merged
#59 SAFETY-42: a unit that stops delivering, and the discriminator the card asked for does not exist
Merged
#58 SAFETY-13: the output freeze gets an exit, and only where it needs one
Merged
#57 SAFETY-37: a stale reading is None, and arrival cannot be what says so
Merged
#56 SAFETY-39: slew_w is a ratio to the rail, and gain is the constant that is still wrong
Merged
#53 SAFETY-38: pin site_standing with shares that cannot answer for the site
Merged
#54 CI-06: test_peakguard.py answered two of its checks with the wall clock
Merged
#55 PKG-06: bump 0.6.0 -> 0.7.0, because the schema changed and nobody bumped
Merged
#52 SAFETY-41: raise the clamp alarm's re-assert 30 s -> 150 s
Merged
#51 TEL-07: a second MQTT device for inverter B, and A keeps the one it has
Merged
#50 UX-01: translations and task ordering for the add-on Configuration tab
Merged
#48 SAFETY-32: bms_soc_floor per pack, rule 8 per unit
Merged
#49 SPIKE-04a: inverter B is 4600 W FROM ITS DATASHEET, and the three documented copies are pinned
Merged
#47 MAINT-05: one recalibration per pack, and only one pack moves power at a time
Merged
#46 SAFETY-30: grade each inverter against its own power, and the site's total against the meter
Merged
#45 CFG-04: an operator can declare a second inverter, and the shape was measured against the Supervisor
Merged
#44 SAFETY-31: measure circulating power, which nets to zero at the meter
Merged
#43 DEV-02: per-instance Inverter objects - rating, SoC, watchdogs, heartbeat and store keys stop being scalars
Merged
#42 SAFETY-28: gate the write path on the allocation record, not on how many config keys exist
Merged
#41 ALLOC-01: allocate the site grid target across N inverters, sum-invariant
Merged
#40 ARB-03: restore Claim.actuator and make resolve() three-stage
Merged
#39 SAFETY-25: record the owner's decision - Option A, with ALLOC-01 as the revisit trigger
Merged
#38 TEST-13: grade record_block()'s policy argument, and the two import spellings SAFETY-20's check could not see
Merged
#37 TEST-16: pin the two one-sided arbitrage rungs, and un-mask them from each other
Merged
#36 TEST-11: pin the clamp guard to the write it reads
Merged
#35 TEST-10: pin max_w beside the meter_freeze_s key TEST-06 already pinned
Merged
#34 CFG-03: give maintenance option defaults one source of truth
Merged
#31 SAFETY-25: say what peak_soc_floor bounds, and measure what it does not
Merged
#30 CI-02: grade the merge, and stop a cancelled run reading as a test failure
Merged
#28 SAFETY-20: measure the freeze rail against the reachable ceiling, not max_w
Merged
#27 TEST-15: purge the bytecode cache before a mutation run, not after
Merged
#26 TEST-17: grade the status page's peak row at a stated month, not at today's
Merged
#25 DATA-01: thirty days of the real meter, and what AC 3 actually measures
Merged
#24 DATA-02: a real Belgian price year, so OPT-04's AC4 stops being unmeetable
Merged
#21 SAFETY-24: an energy floor under the peak guard's forced discharge
Merged
#23 SAFETY-26: pin the negative-price refusal from below, not only from above
Merged
#22 OPT-04: charge cheap, discharge expensive - and only when it pays
Merged
#20 FCST-03: provisional-price flagging, and what may not rest on one
Merged
#18 SAFETY-07: cap the loop before it sets the month's billed capacity peak
Merged
#19 TARIFF-03: static day/night and fully-fixed tariffs, first-class
Merged
#16 TARIFF-02: price provider plugins + the canonical all-in price format
Merged
#17 TARIFF-01: measure the month's billed capacity-tariff peak, and make it survive a restart
Merged
#14 TEST-06: pin the cycle() ordering, the NOT COVERED string and the shipped meter_freeze_s
Merged
#12 SAFETY-03: alarm when a computed setpoint exceeds the rating, do not just clip it
Merged
#13 CI-01: this repository's first automated check
Merged
#11 SAFETY-18: alarm on a meter frozen at a wrong-but-fresh value
Merged
#10 MAINT-04: refuse a maintenance charge the ceiling cannot deliver
Merged
#9 SAFETY-02 BLOCKER: persist the latch across an add-on restart
Merged
#8 SAFETY-02: the sign-disagreement watchdog
Merged
#7 SAFETY-12: a minimum loop cadence - the loop thinks on a clock, not only when the number moves
Merged
#6 CFG-01: refuse to start on a configuration that cannot be honoured