From d8e02ad3f8776ba34bf3cbabf5dbc64b0ee4484c Mon Sep 17 00:00:00 2001 From: glenn schrooyen Date: Sat, 5 Sep 2026 18:38:41 +0200 Subject: [PATCH] PKG-06: bump 0.6.0 -> 0.7.0, because the schema changed and nobody bumped MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Six merges landed since 0.6.0 was deployed and the version never moved. Disk and box both read 0.6.0, so `ha apps update` would have been a NO-OP: Supervisor keys the built image by `version:`, and the update path installs `version_latest`, which cannot differ from `version` without a bump. Found while pre-checking the deploy, not after it silently did nothing. ⚠️ MINOR RATHER THAN PATCH, BECAUSE THE SCHEMA CHANGED. SAFETY-32 added `bms_soc_floor: int(0,50)` as a REQUIRED per-entry key on the `inverters` roster - no trailing `?` - so a config declaring a roster and omitting it on any entry is refused at startup. Verified against the deployed 2d025ee: the per-entry schema went from 6 keys to 7. Top-level options and schema are unchanged at 63 each. An install running `inverters: []` is unaffected, which is every single-inverter install including the reference one: the flat `bms_soc_floor` still describes the one pack. But CFG-04 recorded the rule this follows - "a schema change without a bump is a schema nobody reads" - and this is exactly that shape. The CHANGELOG gains a 0.7.0 section listing the six merges by SHA. It also records, rather than papers over, that 0.6.0 was never sectioned: its content sits below the new heading because the earlier bump shipped without cutting a section. Splitting it retroactively would mean guessing a boundary; the deployed 0.6.0 is 2d025ee and the table says what is new since it. Full suite: 21 passed, 0 failed. Co-Authored-By: Claude Opus 5 Claude-Session: https://claude.ai/code/session_01BwRLw7eKYj2byVdwB6kbjU --- goodwe_controller/CHANGELOG.md | 29 +++++++++++++++++++++++++++++ goodwe_controller/config.yaml | 2 +- 2 files changed, 30 insertions(+), 1 deletion(-) diff --git a/goodwe_controller/CHANGELOG.md b/goodwe_controller/CHANGELOG.md index b3fae63..0988b6b 100644 --- a/goodwe_controller/CHANGELOG.md +++ b/goodwe_controller/CHANGELOG.md @@ -1,5 +1,34 @@ # Changelog +## 0.7.0 + +⚠️ **SCHEMA CHANGE, AND IT IS WHY THIS IS A MINOR BUMP RATHER THAN A PATCH.** +[[SAFETY-32]] adds `bms_soc_floor: int(0,50)` as a **required** per-entry key on +the `inverters` roster - no trailing `?`. A config that declares a roster and +omits it on any entry is REFUSED at startup. An install running `inverters: []`, +which is every single-inverter install including the reference one, is +unaffected: the flat `bms_soc_floor` still describes the one pack. + +CFG-04 recorded the rule this follows - the Supervisor keys the built image by +`version:`, so a schema change without a bump is a schema nobody reads. + +Contents, in merge order since 0.6.0 (`2d025ee`): + +| | | +|---|---| +| `3934ad7` | MAINT-05 - one recalibration per pack, migration graded against the roster | +| `67e649a` | SPIKE-04a - inverter B and pack B recorded, from datasheet and serial | +| `3993f9f` | SAFETY-32 - per-pack `bms_soc_floor`, rule 8 per unit, package-wide roster pin | +| `f72c48d` | UX-01 - add-on configuration in English and Dutch | +| `86eaef2` | TEL-07 - a second MQTT device for inverter B; A's identity byte-identical | +| `4482cd8` | SAFETY-41 - the clamp alarm stops narrating normal anti-windup | + +⚠️ **0.6.0 WAS NEVER SECTIONED.** Its content sits below this heading rather than +under one of its own, because the bump shipped without cutting the section. That +is a defect in this file, not in the release: the deployed 0.6.0 is `2d025ee` and +the table above is what is new since it. Splitting it retroactively would mean +guessing a boundary; saying so is more useful than a guess. + ## Unreleased **Inverter B gets its own MQTT device, and inverter A keeps the one it has diff --git a/goodwe_controller/config.yaml b/goodwe_controller/config.yaml index d82273a..eb601e0 100644 --- a/goodwe_controller/config.yaml +++ b/goodwe_controller/config.yaml @@ -1,5 +1,5 @@ name: GoodWe RS485 Controller -version: "0.6.0" +version: "0.7.0" slug: goodwe_controller description: >- Drives a GoodWe ES/BP battery inverter over RS485 by emulating its smart