2025-10-24 - 2026-10-24

Overview

186 Active Pull Requests
0 Active Issues
Excluding merges, 2 authors have pushed 8 commits to master and 406 commits to all branches. On master, 33 files have changed and there have been 4513 additions and 482 deletions.

13 Releases published by 1 user

Published v0.18.2 2026-10-17 02:04:08 +02:00

Published v0.18.1 2026-10-16 15:07:41 +02:00

Published v0.18.0 2026-10-16 00:44:39 +02:00

Published v0.17.0 2026-10-11 01:43:41 +02:00

Published v0.16.0 2026-10-08 01:52:22 +02:00

Published v0.15.0 2026-10-05 10:18:30 +02:00

Published v0.14.0 2026-10-03 12:33:03 +02:00

Published v0.13.0 2026-10-02 15:52:29 +02:00

Published v0.12.0 2026-09-24 23:23:23 +02:00

Published v0.11.0 2026-09-24 20:30:41 +02:00

Published v0.10.1 2026-09-22 15:54:36 +02:00

Published v0.10.0 2026-09-20 12:43:05 +02:00

Published v0.2.1 2026-08-25 10:21:17 +02:00

186 Pull requests merged by 1 user

Merged #206 PRICE-02: the trading verdict skips price periods that have ended 2026-10-22 18:57:38 +02:00

Merged #205 UX-46: Dutch status rows, banners, notes and wizard lines on NL pages; peak forecast label without (W) 2026-10-22 06:10:37 +02:00

Merged #204 SAFETY-121: a recurring overload warns every quarter 2026-10-21 12:41:12 +02:00

Merged #203 SAFETY-119: no "not keeping up" when the loop takes the wire back 2026-10-21 03:32:39 +02:00

Merged #202 UX-45: Home price chart shows the 15-minute prices the add-on uses 2026-10-19 12:15:57 +02:00

Merged #201 DOC-8: say EMS port, not meter bus 2026-10-17 04:09:34 +02:00

Merged #200 Deploy 0.18.2 to master 2026-10-17 01:59:55 +02:00

Merged #199 Release 0.18.2 2026-10-16 22:31:10 +02:00

Merged #198 SAFETY-118: read the peak forecast in its own unit 2026-10-16 19:53:55 +02:00

Merged #197 Deploy 0.18.1 to master 2026-10-16 15:05:07 +02:00

Merged #196 Release 0.18.1 2026-10-16 13:46:25 +02:00

Merged #195 UX-44: contract label says every 15 minutes, not hourly 2026-10-16 06:59:19 +02:00

Merged #194 UX-43: tariff prices take 5 decimals 2026-10-16 04:30:10 +02:00

Merged #193 Deploy 0.18.0 to master 2026-10-16 00:42:55 +02:00

Merged #192 Release 0.18.0 2026-10-15 23:17:11 +02:00

Merged #191 OPT-20: a refusal probe asks only PROBE_W, not the whole trade 2026-10-15 14:56:17 +02:00

Merged #190 PRICE-01: own price server as a price source, with fallbacks 2026-10-14 22:47:44 +02:00

Merged #189 MAINT-11: start or stop the maintenance cycle per battery 2026-10-14 01:18:43 +02:00

Merged #157 OPT-15: price-run fixes (quarter edge, charge-end overshoot, refusal probe) 2026-10-13 15:04:12 +02:00

Merged #188 SAFETY-112: say plainly that control waits for Home Assistant to start 2026-10-13 02:48:32 +02:00

Merged #187 OPT-17: the solar forecast can come from several entities, summed 2026-10-11 05:49:38 +02:00

Merged #186 Deploy 0.17.0 to master 2026-10-11 01:37:02 +02:00

Merged #185 Release 0.17.0 2026-10-11 00:58:30 +02:00

Merged #184 MAINT-15: the balancing hold ends on time with no SoC reading 2026-10-10 01:38:30 +02:00

Merged #183 SAFETY-107: a refusal held under another writer is learned once 2026-10-09 04:29:48 +02:00

Merged #182 MAINT-14: maintenance with no SoC reading: charge times out, drain holds at 0 W 2026-10-08 22:50:53 +02:00

Merged #181 MAINT-13: a full pack that stops at 98-99 % is not a failed charge 2026-10-08 13:45:11 +02:00

Merged #180 SAFETY-103: no swing on old battery readings after a drain ends 2026-10-08 04:48:27 +02:00

Merged #179 Deploy 0.16.0 to master 2026-10-08 01:43:38 +02:00

Merged #178 Release 0.16.0 2026-10-08 01:02:21 +02:00

Merged #177 SAFETY-95: a maintenance drain that ends hands back smoothly 2026-10-07 17:48:53 +02:00

Merged #176 SAFETY-96: a battery the loop cannot move does not freeze it 2026-10-06 06:19:13 +02:00

Merged #159 MAINT-10: maintenance start hour in local time, default 19:00 2026-10-05 23:56:19 +02:00

Merged #175 SAFETY-90: the peak guard goes on after a P1 meter gap 2026-10-05 13:23:33 +02:00

Merged #174 Deploy 0.15.0 to master 2026-10-05 10:17:39 +02:00

Merged #173 Release 0.15.0 2026-10-05 01:52:41 +02:00

Merged #172 CI-14: infra-pin to admin/goodwe 3b4ff84 (WITNESS-09) 2026-10-05 00:45:16 +02:00

Merged #171 SAFETY-94: a healthy battery that lags or reverses is not flagged as frozen or refusing 2026-10-04 17:27:21 +02:00

Merged #170 Deploy 0.14.0 to master 2026-10-03 12:32:17 +02:00

Merged #169 Release 0.14.0 2026-10-03 11:29:13 +02:00

Merged #168 CI-13: infra-pin to admin/goodwe 0c04488 (FW-05, WITNESS-08) 2026-10-03 10:27:03 +02:00

Merged #167 SAFETY-93: the maintenance charge end hands back smoothly, with no grid charging at a high house 2026-10-03 00:58:38 +02:00

Merged #165 SAFETY-91: a held battery is drawn only after the others are full 2026-10-02 15:53:34 +02:00

Merged #166 Deploy 0.13.0 to master 2026-10-02 15:26:47 +02:00

Merged #164 Release 0.13.0 2026-10-02 10:04:13 +02:00

Merged #163 SAFETY-85: no false 'not keeping up' while maintenance or the peak guard sets the battery 2026-10-01 20:52:18 +02:00

Merged #162 SAFETY-87: peak guard uses every battery that can still give 2026-10-01 12:06:42 +02:00

Merged #161 SAFETY-86: peak guard outranks the maintenance hold 2026-10-01 02:27:37 +02:00

Merged #160 SAFETY-84: maintenance charge at N=2 no longer stalls 2026-09-30 21:00:56 +02:00

Merged #158 SAFETY-83: peak guard outranks the maintenance drain at N=1 2026-09-30 14:58:42 +02:00

Merged #156 OPT-11 P4: solar forecast and day plan 2026-09-29 23:01:49 +02:00

Merged #154 SAFETY-78: maintenance drain at N=2 no longer stalls 2026-09-29 22:20:30 +02:00

Merged #155 SAFETY-81: no false 'Load too high' alarms 2026-09-29 21:45:21 +02:00

Merged #153 OPT-11 P3: price runs per battery 2026-09-29 11:37:47 +02:00

Merged #151 SAFETY-79: peak guard keeps a margin below the limit 2026-09-29 01:01:35 +02:00

Merged #152 OPT-11 P2: HA entities for battery modes 2026-09-29 00:13:50 +02:00

Merged #150 UX-13 P3: Simple view and Batteries screen 2026-09-28 23:44:27 +02:00

Merged #149 OPT-11 P1: per-battery mode limits, on/off, solar order 2026-09-28 19:53:23 +02:00

Merged #148 UX-13 P5: Dutch text, STYLE check, DOCS screenshots, period editor 2026-09-28 17:06:19 +02:00

Merged #147 UX-15: setup-only mode, and wizard fixes F1, F2, meter entity, step 1 2026-09-28 15:27:28 +02:00

Merged #146 UX-13 P4: the setup wizard for installers 2026-09-28 06:23:16 +02:00

Merged #145 UX-13 P2: the Installer settings view 2026-09-28 03:54:24 +02:00

Merged #143 SAFETY-73: a battery that refuses, per inverter, with two or more 2026-09-28 02:27:15 +02:00

Merged #144 UX-13 P1: page shell and Home screen on a structured /status 2026-09-28 01:29:31 +02:00

Merged #142 UX-13 P0: layout table, page<->options derivation, warning tier, entity list 2026-09-27 23:49:32 +02:00

Merged #141 SAFETY-52: a battery that refuses is asked for 0 W, with a 200 W probe every 15 min 2026-09-27 18:21:22 +02:00

Merged #140 UX-11: safety log lines give one plain sentence and the code, the figures go to DEBUG 2026-09-27 14:31:06 +02:00

Merged #139 CI: bump infra pin to d637d0b (admin/goodwe#61, UX-10) 2026-09-27 12:30:15 +02:00

Merged #138 UX-10: the last plain-language leftovers (log lines, two table rows, 'Why: Other', red at 0 s) 2026-09-27 12:18:23 +02:00

Merged #137 CI: bump infra pin to ecd3864 (admin/goodwe#60, UX-08) 2026-09-27 08:52:22 +02:00

Merged #136 UX-08 2d: plain log lines, the rest of the status page, and DOCS 2026-09-27 08:40:34 +02:00

Merged #135 UX-08 2c: short refusals, error texts and option texts 2026-09-27 07:01:26 +02:00

Merged #134 UX-09: Details link for current HA, 'would' in shadow mode, plain terms 2026-09-27 04:54:42 +02:00

Merged #133 UX-08 phase 2b: short, plain status rows and page banners 2026-09-27 03:19:55 +02:00

Merged #132 CI: bump infra pin to 7081df4 (admin/goodwe#59, UX-08) 2026-09-27 01:41:38 +02:00

Merged #131 UX-08 phase 2a: short, plain notifications, and a ratchet for the rest 2026-09-27 01:29:47 +02:00

Merged #130 SAFETY-40: the integrator bound is not a BUG SIGNAL; alarm numbers from the clamp tick 2026-09-26 23:19:12 +02:00

Merged #129 CI: bump infra pin to 7689816 (admin/goodwe#58, SAFETY-34) 2026-09-26 16:15:24 +02:00

Merged #128 SAFETY-34: re-assert latched alarms, because a Core restart keeps the add-on 2026-09-26 16:03:17 +02:00

Merged #127 CI: bump infra pin to a1d0618 (admin/goodwe#57, TOOL-9) 2026-09-25 20:53:00 +02:00

Merged #126 TOOL-9: pin checks print their FAIL line under pipefail; job tokens via header, not remote URL 2026-09-25 20:39:48 +02:00

Merged #125 CI-12: CI grades test_freeze.py against the real hwsim at a pinned admin/goodwe 2026-09-25 18:19:44 +02:00

Merged #124 TEL-14: PV sign declared per entity (pv_invert_entities) 2026-09-25 01:30:34 +02:00

Merged #123 DOC-5: tell installers to turn on the Supervisor Watchdog 2026-09-25 01:17:36 +02:00

Merged #122 TEST-26: a missing value in a check is a named FAIL, not a traceback 2026-09-25 00:57:21 +02:00

Merged #120 SAFETY-62/SAFETY-60: operator tools refuse input they cannot read 2026-09-25 00:25:23 +02:00

Merged #121 SAFETY-61: the control task's death ends the process, after the wind-down 2026-09-25 00:07:42 +02:00

Merged #119 DOC-1: operator docs name the real P1 entity and a roster that starts 2026-09-24 23:42:14 +02:00

Merged #118 PKG-18: ship 0.12.0 to master, so TEL-12's pv_entities can reach an installed 0.11.0 2026-09-24 23:22:35 +02:00

Merged #117 PKG-18: cut 0.12.0, so TEL-12's pv_entities can reach an installed 0.11.0 2026-09-24 23:09:29 +02:00

Merged #116 TEL-12: several PV inverters, and one absent member is an absent TOTAL 2026-09-24 22:41:20 +02:00

Merged #115 PKG-17: ship 0.11.0 to master - SAFETY-56's wording fix and TEL-11's pv_entity reach the battery 2026-09-24 20:28:36 +02:00

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 2026-09-24 19:20:07 +02:00

Merged #113 TEL-11: PV production stops being invisible, and stays out of the control law 2026-09-24 15:55:30 +02:00

Merged #102 Ci9 gateproof 2026-09-24 14:37:16 +02:00

Merged #112 SAFETY-56: the gate cannot tell a dead register from a pack that cannot comply, so stop saying it can 2026-09-23 21:27:41 +02:00

Merged #108 SEC-2: write down the release path, now that master refuses a direct push 2026-09-23 04:08:19 +02:00

Merged #105 PKG-16: cut 0.10.1, so SAFETY-57's fix can reach an installed 0.10.0 2026-09-22 15:52:26 +02:00

Merged #104 SAFETY-57: the stale-reading verdict gets an exit, because its own consequence is what stopped it being tested 2026-09-21 15:49:36 +02:00

Merged #103 PKG-15: fold TEL-10 and SAFETY-48 into 0.10.0, so the version names its contents 2026-09-19 19:08:05 +02:00

Merged #95 CI-9: a stacked PR is skipped, and a skipped check clears the merge gate 2026-09-19 14:55:13 +02:00

Merged #96 CI-9 REVIEW PROBE (throwaway, do not merge) 2026-09-19 14:13:45 +02:00

Merged #93 SAFETY-48: the slew step ceiling reaches the integrator, and what it bounds is the LEAD 2026-09-19 11:05:26 +02:00

Merged #92 TEL-10: the loop's integrator stops being invisible 2026-09-19 10:54:03 +02:00

Merged #91 PKG-14: cut 0.10.0, and say what an upgrade from 0.7.0 crosses 2026-09-16 02:58:28 +02:00

Merged #90 SAFETY-47: what a shadow run can show, and the watts on its status row 2026-09-15 01:36:42 +02:00

Merged #89 SAFETY-10: shadow mode - the whole decision path runs and nothing reaches the inverter 2026-09-14 17:44:27 +02:00

Merged #88 SAFETY-45: a price-driven charge is sized by the capacity guard, not switched by it 2026-09-14 16:20:40 +02:00

Merged #87 TARIFF-16: the injection leg stops being one number 2026-09-13 18:51:26 +02:00

Merged #86 TARIFF-18: price_taxes_eur_kwh stops shipping at half the real Flemish figure 2026-09-13 16:33:38 +02:00

Merged #85 TARIFF-17: a price component that varies by hour has somewhere to live 2026-09-13 15:40:18 +02:00

Merged #84 TARIFF-11: the plan's account of itself, corrected and put on the page 2026-09-13 14:07:08 +02:00

Merged #83 TARIFF-13: the coverage figure beside the peak stops resetting at a restart 2026-09-13 13:03:31 +02:00

Merged #82 TARIFF-15: your own tariff card, as two coefficients the card itself grades 2026-09-13 03:58:46 +02:00

Merged #81 TARIFF-07: three plugins that never fetched a price are withdrawn, and a site configured on one is told so 2026-09-13 02:55:00 +02:00

Merged #80 TARIFF-14: the point whose own interval covers the instant 2026-09-13 01:56:05 +02:00

Merged #79 TARIFF-12: a returned degradation is not a refresh 2026-09-12 21:39:24 +02:00

Merged #78 TARIFF-10: configuring a price provider is what fetches prices 2026-09-12 21:07:55 +02:00

Merged #77 TARIFF-09: ask the day-ahead feed for the horizon it was handed, on the Brussels calendar 2026-09-10 10:44:16 +02:00

Merged #76 TARIFF-08: the day-ahead feed is read in the shape it actually publishes, and the fixtures stop agreeing with the parser 2026-09-10 09:14:50 +02:00

Merged #75 FCST-06: "cannot persist" becomes one question, asked once, about the outcome 2026-09-10 08:52:10 +02:00

Merged #74 FCST-05: one byte stops stopping the add-on, and the write path gets the read path's standard 2026-09-10 01:13:41 +02:00

Merged #73 FCST-04: the carry-forward fill reaches the plan, and the day it carries survives a restart 2026-09-10 00:03:09 +02:00

Merged #72 INSTR-01: grade diff()'s suppression rule at the level it is written at, one case per clause 2026-09-09 01:05:37 +02:00

Merged #71 SAFETY-44: the latch migration takes the roster, and the guard stops being defeated by the key the defect wrote 2026-09-08 19:16:33 +02:00

Merged #70 ARCH-02: rehearse the flat-to-roster switch - and SAFETY-44 re-confirmed by a second instrument 2026-09-08 15:09:28 +02:00

Merged #69 SAFETY-43: delinquency measured against the ask, not against a flat 500 W 2026-09-08 05:56:45 +02:00

Merged #68 SAFETY-31 AC 4: the alarm's attribution was graded by nothing, and a mutation proved it 2026-09-08 04:27:17 +02:00

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 2026-09-07 22:41:36 +02:00

Merged #66 UX-04: nothing was hidden, the defaults pin was never built, and CFG-04 was closed by UX-02 2026-09-07 19:03:36 +02:00

Merged #65 PKG-13: the no-op half of the pre-deploy check has never run as documented 2026-09-07 17:34:18 +02:00

Merged #64 PKG-12: bump 0.8.0 -> 0.9.0, so the five merges behind it can actually ship 2026-09-07 00:53:45 +02:00

Merged #63 PKG-09: refuse a deploy that would be a no-op, or that the add-on would reject 2026-09-07 00:04:33 +02:00

Merged #62 OPT-09: the weights parameter nothing ever passed, and what it cannot do 2026-09-06 23:33:18 +02:00

Merged #61 UX-02: the validator's refusals, next to the field, before the save 2026-09-06 22:45:49 +02:00

Merged #60 PKG-07: bump 0.7.0 -> 0.8.0, and stop the changelog calling shipped work unreleased 2026-09-06 20:23:23 +02:00

Merged #59 SAFETY-42: a unit that stops delivering, and the discriminator the card asked for does not exist 2026-09-06 19:43:18 +02:00

Merged #58 SAFETY-13: the output freeze gets an exit, and only where it needs one 2026-09-06 19:19:07 +02:00

Merged #57 SAFETY-37: a stale reading is None, and arrival cannot be what says so 2026-09-06 13:06:27 +02:00

Merged #56 SAFETY-39: slew_w is a ratio to the rail, and gain is the constant that is still wrong 2026-09-06 10:41:05 +02:00

Merged #53 SAFETY-38: pin site_standing with shares that cannot answer for the site 2026-09-06 00:00:49 +02:00

Merged #54 CI-06: test_peakguard.py answered two of its checks with the wall clock 2026-09-05 19:45:38 +02:00

Merged #55 PKG-06: bump 0.6.0 -> 0.7.0, because the schema changed and nobody bumped 2026-09-05 19:23:16 +02:00

Merged #52 SAFETY-41: raise the clamp alarm's re-assert 30 s -> 150 s 2026-09-05 18:31:31 +02:00

Merged #51 TEL-07: a second MQTT device for inverter B, and A keeps the one it has 2026-09-05 15:51:55 +02:00

Merged #50 UX-01: translations and task ordering for the add-on Configuration tab 2026-09-05 13:11:52 +02:00

Merged #48 SAFETY-32: bms_soc_floor per pack, rule 8 per unit 2026-09-05 08:10:51 +02:00

Merged #49 SPIKE-04a: inverter B is 4600 W FROM ITS DATASHEET, and the three documented copies are pinned 2026-09-05 02:55:25 +02:00

Merged #47 MAINT-05: one recalibration per pack, and only one pack moves power at a time 2026-09-04 21:39:26 +02:00

Merged #46 SAFETY-30: grade each inverter against its own power, and the site's total against the meter 2026-09-04 12:28:44 +02:00

Merged #45 CFG-04: an operator can declare a second inverter, and the shape was measured against the Supervisor 2026-09-04 11:51:58 +02:00

Merged #44 SAFETY-31: measure circulating power, which nets to zero at the meter 2026-09-04 02:40:51 +02:00

Merged #43 DEV-02: per-instance Inverter objects - rating, SoC, watchdogs, heartbeat and store keys stop being scalars 2026-09-04 00:36:07 +02:00

Merged #42 SAFETY-28: gate the write path on the allocation record, not on how many config keys exist 2026-09-02 15:44:41 +02:00

Merged #41 ALLOC-01: allocate the site grid target across N inverters, sum-invariant 2026-09-02 12:13:34 +02:00

Merged #40 ARB-03: restore Claim.actuator and make resolve() three-stage 2026-09-02 04:16:45 +02:00

Merged #39 SAFETY-25: record the owner's decision - Option A, with ALLOC-01 as the revisit trigger 2026-09-02 00:58:15 +02:00

Merged #38 TEST-13: grade record_block()'s policy argument, and the two import spellings SAFETY-20's check could not see 2026-09-01 09:16:38 +02:00

Merged #37 TEST-16: pin the two one-sided arbitrage rungs, and un-mask them from each other 2026-09-01 08:02:58 +02:00

Merged #36 TEST-11: pin the clamp guard to the write it reads 2026-09-01 07:45:16 +02:00

Merged #35 TEST-10: pin max_w beside the meter_freeze_s key TEST-06 already pinned 2026-09-01 07:00:03 +02:00

Merged #34 CFG-03: give maintenance option defaults one source of truth 2026-09-01 06:28:57 +02:00

Merged #31 SAFETY-25: say what peak_soc_floor bounds, and measure what it does not 2026-09-01 05:23:38 +02:00

Merged #30 CI-02: grade the merge, and stop a cancelled run reading as a test failure 2026-09-01 04:06:27 +02:00

Merged #28 SAFETY-20: measure the freeze rail against the reachable ceiling, not max_w 2026-09-01 02:57:59 +02:00

Merged #27 TEST-15: purge the bytecode cache before a mutation run, not after 2026-09-01 02:22:16 +02:00

Merged #26 TEST-17: grade the status page's peak row at a stated month, not at today's 2026-09-01 01:32:45 +02:00

Merged #25 DATA-01: thirty days of the real meter, and what AC 3 actually measures 2026-08-31 11:35:46 +02:00

Merged #24 DATA-02: a real Belgian price year, so OPT-04's AC4 stops being unmeetable 2026-08-31 11:12:49 +02:00

Merged #21 SAFETY-24: an energy floor under the peak guard's forced discharge 2026-08-31 10:24:37 +02:00

Merged #23 SAFETY-26: pin the negative-price refusal from below, not only from above 2026-08-31 07:37:47 +02:00

Merged #22 OPT-04: charge cheap, discharge expensive - and only when it pays 2026-08-31 01:53:31 +02:00

Merged #20 FCST-03: provisional-price flagging, and what may not rest on one 2026-08-31 00:23:41 +02:00

Merged #18 SAFETY-07: cap the loop before it sets the month's billed capacity peak 2026-08-30 23:56:21 +02:00

Merged #19 TARIFF-03: static day/night and fully-fixed tariffs, first-class 2026-08-30 23:24:54 +02:00

Merged #16 TARIFF-02: price provider plugins + the canonical all-in price format 2026-08-30 22:35:49 +02:00

Merged #17 TARIFF-01: measure the month's billed capacity-tariff peak, and make it survive a restart 2026-08-30 19:33:58 +02:00

Merged #14 TEST-06: pin the cycle() ordering, the NOT COVERED string and the shipped meter_freeze_s 2026-08-30 18:39:08 +02:00

Merged #12 SAFETY-03: alarm when a computed setpoint exceeds the rating, do not just clip it 2026-08-30 17:22:31 +02:00

Merged #13 CI-01: this repository's first automated check 2026-08-30 16:00:42 +02:00

Merged #11 SAFETY-18: alarm on a meter frozen at a wrong-but-fresh value 2026-08-30 03:20:38 +02:00

Merged #10 MAINT-04: refuse a maintenance charge the ceiling cannot deliver 2026-08-30 03:01:15 +02:00

Merged #9 SAFETY-02 BLOCKER: persist the latch across an add-on restart 2026-08-28 23:09:28 +02:00

Merged #8 SAFETY-02: the sign-disagreement watchdog 2026-08-28 21:55:52 +02:00

Merged #7 SAFETY-12: a minimum loop cadence - the loop thinks on a clock, not only when the number moves 2026-08-28 21:18:21 +02:00

Merged #6 CFG-01: refuse to start on a configuration that cannot be honoured 2026-08-28 20:17:56 +02:00