Compare commits
base: admin/goodwe-addon:f0f7b30098b3efdc39be8f2cf51d18baea33a4fc
admin/goodwe-addon:master
admin/goodwe-addon:release/1.0
admin/goodwe-addon:PRICE-02
admin/goodwe-addon:UX-46
admin/goodwe-addon:SAFETY-121
admin/goodwe-addon:SAFETY-119
admin/goodwe-addon:UX-45
admin/goodwe-addon:DOC-8
admin/goodwe-addon:deploy-0.18.2
admin/goodwe-addon:release-0.18.2
admin/goodwe-addon:SAFETY-118
admin/goodwe-addon:deploy-0.18.1
admin/goodwe-addon:release-0.18.1
admin/goodwe-addon:UX-44
admin/goodwe-addon:UX-43
admin/goodwe-addon:deploy-0.18.0
admin/goodwe-addon:release-0.18.0
admin/goodwe-addon:OPT-20
admin/goodwe-addon:PRICE-01
admin/goodwe-addon:MAINT-11
admin/goodwe-addon:opt15-price-run-fixes
admin/goodwe-addon:SAFETY-112
admin/goodwe-addon:OPT-17-forecast-entities
admin/goodwe-addon:deploy-0.17.0
admin/goodwe-addon:release-0.17.0
admin/goodwe-addon:MAINT-15
admin/goodwe-addon:SAFETY-107
admin/goodwe-addon:MAINT-14
admin/goodwe-addon:MAINT-13-full-pack-complete
admin/goodwe-addon:SAFETY-103
admin/goodwe-addon:deploy-0.16.0
admin/goodwe-addon:release-0.16.0
admin/goodwe-addon:safety-95-drain-end-reseed
admin/goodwe-addon:safety-96-stale-unit-site-total
admin/goodwe-addon:maint-10-local-start-hour
admin/goodwe-addon:safety-90-peak-guard-gap
admin/goodwe-addon:deploy-0.15.0
admin/goodwe-addon:release-0.15.0
admin/goodwe-addon:ci-14-infra-pin-3b4ff84
admin/goodwe-addon:safety-94-no-false-stale-or-refusal
admin/goodwe-addon:deploy-0.14.0
admin/goodwe-addon:release-0.14.0
admin/goodwe-addon:ci-13-infra-pin-0c04488
admin/goodwe-addon:safety-93-no-grid-charge-at-charge-end
admin/goodwe-addon:safety-91-held-battery-last
admin/goodwe-addon:deploy-0.13.0
admin/goodwe-addon:release-0.13.0
admin/goodwe-addon:safety-85-no-false-not-keeping-up
admin/goodwe-addon:safety-87-guard-uses-able-batteries
admin/goodwe-addon:safety-86-peak-over-hold
admin/goodwe-addon:safety-84-n2-maint-charge
admin/goodwe-addon:safety-83-peak-over-drain
admin/goodwe-addon:opt11-p4-solar-forecast
admin/goodwe-addon:safety-78-drain-at-two
admin/goodwe-addon:safety-81-load-too-high
admin/goodwe-addon:opt11-p3-price-runs
admin/goodwe-addon:safety-79-peak-margin
admin/goodwe-addon:opt11-p2-ha-entities
admin/goodwe-addon:UX-13-p3-batteries
admin/goodwe-addon:opt11-p1-modes
admin/goodwe-addon:UX-13-p5
admin/goodwe-addon:UX-15-setup-only
admin/goodwe-addon:UX-13-p4-setup
admin/goodwe-addon:UX-13-p2-installer
admin/goodwe-addon:SAFETY-73-per-unit-refusal
admin/goodwe-addon:UX-13-p1-home
admin/goodwe-addon:UX-13-P0-foundation
admin/goodwe-addon:SAFETY-52-refused-hold
admin/goodwe-addon:UX-11-short-safety-lines
admin/goodwe-addon:pin-bump-d637d0b
admin/goodwe-addon:UX-10-plain-leftovers
admin/goodwe-addon:pin-bump-ecd3864
admin/goodwe-addon:UX-08-2d-logs-docs
admin/goodwe-addon:UX-08-2c-refusals
admin/goodwe-addon:UX-09-2a-fixes
admin/goodwe-addon:UX-08-status-rows
admin/goodwe-addon:pin-bump-7081df4
admin/goodwe-addon:UX-08-plain-notifications
admin/goodwe-addon:SAFETY-40-clamp-alarm
admin/goodwe-addon:pin-bump-7689816
admin/goodwe-addon:SAFETY-34
admin/goodwe-addon:pin-bump-a1d0618
admin/goodwe-addon:TOOL-9
admin/goodwe-addon:CI-12
admin/goodwe-addon:TEL-14-pv-sign
admin/goodwe-addon:DOC-5-watchdog
admin/goodwe-addon:TEST-26
admin/goodwe-addon:SAFETY-62-refuse-unread-input
admin/goodwe-addon:safety-61-control-task-death
admin/goodwe-addon:doc-1-operator-docs
admin/goodwe-addon:PKG-18-cut-0.12.0
admin/goodwe-addon:TEL-12
admin/goodwe-addon:PKG-17
admin/goodwe-addon:TEL-11
admin/goodwe-addon:ci9-gateproof
admin/goodwe-addon:SAFETY-56
admin/goodwe-addon:SEC-2-release-procedure
admin/goodwe-addon:PKG-16-release-0.10.1
admin/goodwe-addon:SAFETY-57
admin/goodwe-addon:pkg15-changelog
admin/goodwe-addon:CI-9
admin/goodwe-addon:SAFETY-48
admin/goodwe-addon:TEL-10
admin/goodwe-addon:PKG-14
admin/goodwe-addon:SAFETY-47
admin/goodwe-addon:SAFETY-10
admin/goodwe-addon:SAFETY-45
admin/goodwe-addon:TARIFF-16
admin/goodwe-addon:TARIFF-18
admin/goodwe-addon:TARIFF-17
admin/goodwe-addon:TARIFF-11
admin/goodwe-addon:TARIFF-13
admin/goodwe-addon:TARIFF-15
admin/goodwe-addon:TARIFF-07
admin/goodwe-addon:TARIFF-14
admin/goodwe-addon:TARIFF-12
admin/goodwe-addon:TARIFF-10
admin/goodwe-addon:TARIFF-09
admin/goodwe-addon:TARIFF-08
admin/goodwe-addon:FCST-06
admin/goodwe-addon:FCST-05
admin/goodwe-addon:FCST-04
admin/goodwe-addon:INSTR-01
admin/goodwe-addon:SAFETY-44
admin/goodwe-addon:ARCH-02
admin/goodwe-addon:SAFETY-43
admin/goodwe-addon:TEST-21
admin/goodwe-addon:SAFETY-31-attribution
admin/goodwe-addon:UX-04
admin/goodwe-addon:PKG-13
admin/goodwe-addon:PKG-12
admin/goodwe-addon:PKG-09
admin/goodwe-addon:OPT-09
admin/goodwe-addon:UX-02
admin/goodwe-addon:PKG-07
admin/goodwe-addon:SAFETY-42
admin/goodwe-addon:SAFETY-13
admin/goodwe-addon:SAFETY-37
admin/goodwe-addon:SAFETY-39
admin/goodwe-addon:SAFETY-38
admin/goodwe-addon:CI-06
admin/goodwe-addon:PKG-06-version-0.7.0
admin/goodwe-addon:SAFETY-41-reassert
admin/goodwe-addon:TEL-07
admin/goodwe-addon:UX-01
admin/goodwe-addon:SAFETY-32
admin/goodwe-addon:SPIKE-04a
admin/goodwe-addon:MAINT-05
admin/goodwe-addon:SAFETY-30
admin/goodwe-addon:CFG-04
admin/goodwe-addon:DATA-01
admin/goodwe-addon:DATA-02
admin/goodwe-addon:SAFETY-24
admin/goodwe-addon:SAFETY-26
admin/goodwe-addon:OPT-04
admin/goodwe-addon:FCST-03
admin/goodwe-addon:SAFETY-07
admin/goodwe-addon:TARIFF-03
admin/goodwe-addon:TARIFF-02
admin/goodwe-addon:TARIFF-01
admin/goodwe-addon:TEST-06
admin/goodwe-addon:SAFETY-03
admin/goodwe-addon:SAFETY-18
admin/goodwe-addon:MAINT-04
admin/goodwe-addon:safety-02-latch-persistence
admin/goodwe-addon:safety-02-sign-watchdog
admin/goodwe-addon:safety-12-loop-floor
admin/goodwe-addon:CFG-01
admin/goodwe-addon:TEL-05
admin/goodwe-addon:TEL-04
admin/goodwe-addon:DEPLOY-01
admin/goodwe-addon:TEL-01
admin/goodwe-addon:SAFETY-04
admin/goodwe-addon:v0.18.2
admin/goodwe-addon:v0.18.1
admin/goodwe-addon:v0.18.0
admin/goodwe-addon:v0.17.0
admin/goodwe-addon:v0.16.0
admin/goodwe-addon:v0.15.0
admin/goodwe-addon:v0.14.0
admin/goodwe-addon:v0.13.0
admin/goodwe-addon:v0.12.0
admin/goodwe-addon:v0.11.0
admin/goodwe-addon:v0.10.1
admin/goodwe-addon:v0.10.0
admin/goodwe-addon:v0.2.1
..
compare: admin/goodwe-addon:fdaf3fb54f3308ca71ed418f77d2d49a70971b62
admin/goodwe-addon:release/1.0
admin/goodwe-addon:PRICE-02
admin/goodwe-addon:UX-46
admin/goodwe-addon:SAFETY-121
admin/goodwe-addon:SAFETY-119
admin/goodwe-addon:UX-45
admin/goodwe-addon:DOC-8
admin/goodwe-addon:master
admin/goodwe-addon:deploy-0.18.2
admin/goodwe-addon:release-0.18.2
admin/goodwe-addon:SAFETY-118
admin/goodwe-addon:deploy-0.18.1
admin/goodwe-addon:release-0.18.1
admin/goodwe-addon:UX-44
admin/goodwe-addon:UX-43
admin/goodwe-addon:deploy-0.18.0
admin/goodwe-addon:release-0.18.0
admin/goodwe-addon:OPT-20
admin/goodwe-addon:PRICE-01
admin/goodwe-addon:MAINT-11
admin/goodwe-addon:opt15-price-run-fixes
admin/goodwe-addon:SAFETY-112
admin/goodwe-addon:OPT-17-forecast-entities
admin/goodwe-addon:deploy-0.17.0
admin/goodwe-addon:release-0.17.0
admin/goodwe-addon:MAINT-15
admin/goodwe-addon:SAFETY-107
admin/goodwe-addon:MAINT-14
admin/goodwe-addon:MAINT-13-full-pack-complete
admin/goodwe-addon:SAFETY-103
admin/goodwe-addon:deploy-0.16.0
admin/goodwe-addon:release-0.16.0
admin/goodwe-addon:safety-95-drain-end-reseed
admin/goodwe-addon:safety-96-stale-unit-site-total
admin/goodwe-addon:maint-10-local-start-hour
admin/goodwe-addon:safety-90-peak-guard-gap
admin/goodwe-addon:deploy-0.15.0
admin/goodwe-addon:release-0.15.0
admin/goodwe-addon:ci-14-infra-pin-3b4ff84
admin/goodwe-addon:safety-94-no-false-stale-or-refusal
admin/goodwe-addon:deploy-0.14.0
admin/goodwe-addon:release-0.14.0
admin/goodwe-addon:ci-13-infra-pin-0c04488
admin/goodwe-addon:safety-93-no-grid-charge-at-charge-end
admin/goodwe-addon:safety-91-held-battery-last
admin/goodwe-addon:deploy-0.13.0
admin/goodwe-addon:release-0.13.0
admin/goodwe-addon:safety-85-no-false-not-keeping-up
admin/goodwe-addon:safety-87-guard-uses-able-batteries
admin/goodwe-addon:safety-86-peak-over-hold
admin/goodwe-addon:safety-84-n2-maint-charge
admin/goodwe-addon:safety-83-peak-over-drain
admin/goodwe-addon:opt11-p4-solar-forecast
admin/goodwe-addon:safety-78-drain-at-two
admin/goodwe-addon:safety-81-load-too-high
admin/goodwe-addon:opt11-p3-price-runs
admin/goodwe-addon:safety-79-peak-margin
admin/goodwe-addon:opt11-p2-ha-entities
admin/goodwe-addon:UX-13-p3-batteries
admin/goodwe-addon:opt11-p1-modes
admin/goodwe-addon:UX-13-p5
admin/goodwe-addon:UX-15-setup-only
admin/goodwe-addon:UX-13-p4-setup
admin/goodwe-addon:UX-13-p2-installer
admin/goodwe-addon:SAFETY-73-per-unit-refusal
admin/goodwe-addon:UX-13-p1-home
admin/goodwe-addon:UX-13-P0-foundation
admin/goodwe-addon:SAFETY-52-refused-hold
admin/goodwe-addon:UX-11-short-safety-lines
admin/goodwe-addon:pin-bump-d637d0b
admin/goodwe-addon:UX-10-plain-leftovers
admin/goodwe-addon:pin-bump-ecd3864
admin/goodwe-addon:UX-08-2d-logs-docs
admin/goodwe-addon:UX-08-2c-refusals
admin/goodwe-addon:UX-09-2a-fixes
admin/goodwe-addon:UX-08-status-rows
admin/goodwe-addon:pin-bump-7081df4
admin/goodwe-addon:UX-08-plain-notifications
admin/goodwe-addon:SAFETY-40-clamp-alarm
admin/goodwe-addon:pin-bump-7689816
admin/goodwe-addon:SAFETY-34
admin/goodwe-addon:pin-bump-a1d0618
admin/goodwe-addon:TOOL-9
admin/goodwe-addon:CI-12
admin/goodwe-addon:TEL-14-pv-sign
admin/goodwe-addon:DOC-5-watchdog
admin/goodwe-addon:TEST-26
admin/goodwe-addon:SAFETY-62-refuse-unread-input
admin/goodwe-addon:safety-61-control-task-death
admin/goodwe-addon:doc-1-operator-docs
admin/goodwe-addon:PKG-18-cut-0.12.0
admin/goodwe-addon:TEL-12
admin/goodwe-addon:PKG-17
admin/goodwe-addon:TEL-11
admin/goodwe-addon:ci9-gateproof
admin/goodwe-addon:SAFETY-56
admin/goodwe-addon:SEC-2-release-procedure
admin/goodwe-addon:PKG-16-release-0.10.1
admin/goodwe-addon:SAFETY-57
admin/goodwe-addon:pkg15-changelog
admin/goodwe-addon:CI-9
admin/goodwe-addon:SAFETY-48
admin/goodwe-addon:TEL-10
admin/goodwe-addon:PKG-14
admin/goodwe-addon:SAFETY-47
admin/goodwe-addon:SAFETY-10
admin/goodwe-addon:SAFETY-45
admin/goodwe-addon:TARIFF-16
admin/goodwe-addon:TARIFF-18
admin/goodwe-addon:TARIFF-17
admin/goodwe-addon:TARIFF-11
admin/goodwe-addon:TARIFF-13
admin/goodwe-addon:TARIFF-15
admin/goodwe-addon:TARIFF-07
admin/goodwe-addon:TARIFF-14
admin/goodwe-addon:TARIFF-12
admin/goodwe-addon:TARIFF-10
admin/goodwe-addon:TARIFF-09
admin/goodwe-addon:TARIFF-08
admin/goodwe-addon:FCST-06
admin/goodwe-addon:FCST-05
admin/goodwe-addon:FCST-04
admin/goodwe-addon:INSTR-01
admin/goodwe-addon:SAFETY-44
admin/goodwe-addon:ARCH-02
admin/goodwe-addon:SAFETY-43
admin/goodwe-addon:TEST-21
admin/goodwe-addon:SAFETY-31-attribution
admin/goodwe-addon:UX-04
admin/goodwe-addon:PKG-13
admin/goodwe-addon:PKG-12
admin/goodwe-addon:PKG-09
admin/goodwe-addon:OPT-09
admin/goodwe-addon:UX-02
admin/goodwe-addon:PKG-07
admin/goodwe-addon:SAFETY-42
admin/goodwe-addon:SAFETY-13
admin/goodwe-addon:SAFETY-37
admin/goodwe-addon:SAFETY-39
admin/goodwe-addon:SAFETY-38
admin/goodwe-addon:CI-06
admin/goodwe-addon:PKG-06-version-0.7.0
admin/goodwe-addon:SAFETY-41-reassert
admin/goodwe-addon:TEL-07
admin/goodwe-addon:UX-01
admin/goodwe-addon:SAFETY-32
admin/goodwe-addon:SPIKE-04a
admin/goodwe-addon:MAINT-05
admin/goodwe-addon:SAFETY-30
admin/goodwe-addon:CFG-04
admin/goodwe-addon:DATA-01
admin/goodwe-addon:DATA-02
admin/goodwe-addon:SAFETY-24
admin/goodwe-addon:SAFETY-26
admin/goodwe-addon:OPT-04
admin/goodwe-addon:FCST-03
admin/goodwe-addon:SAFETY-07
admin/goodwe-addon:TARIFF-03
admin/goodwe-addon:TARIFF-02
admin/goodwe-addon:TARIFF-01
admin/goodwe-addon:TEST-06
admin/goodwe-addon:SAFETY-03
admin/goodwe-addon:SAFETY-18
admin/goodwe-addon:MAINT-04
admin/goodwe-addon:safety-02-latch-persistence
admin/goodwe-addon:safety-02-sign-watchdog
admin/goodwe-addon:safety-12-loop-floor
admin/goodwe-addon:CFG-01
admin/goodwe-addon:TEL-05
admin/goodwe-addon:TEL-04
admin/goodwe-addon:DEPLOY-01
admin/goodwe-addon:TEL-01
admin/goodwe-addon:SAFETY-04
admin/goodwe-addon:v0.18.2
admin/goodwe-addon:v0.18.1
admin/goodwe-addon:v0.18.0
admin/goodwe-addon:v0.17.0
admin/goodwe-addon:v0.16.0
admin/goodwe-addon:v0.15.0
admin/goodwe-addon:v0.14.0
admin/goodwe-addon:v0.13.0
admin/goodwe-addon:v0.12.0
admin/goodwe-addon:v0.11.0
admin/goodwe-addon:v0.10.1
admin/goodwe-addon:v0.10.0
admin/goodwe-addon:v0.2.1
1
Commits
| Author | SHA1 | Message | Date | |
|---|---|---|---|---|
|
|
fdaf3fb54f |
UX-02: the validator's refusals, next to the field, before the save
checks / unit (pull_request) Successful in 6m17s
The Configuration tab can only render types and ranges. `validate.py`'s most
useful refusals are CROSS-FIELD - two inverters naming one `setpoint_entity`, a
`maintenance_charge_w` above `max_w`, a flat `setpoint_entity` left set beside a
declared roster - and the Supervisor's UI has no way to express a rule spanning
two keys. Today the operator meets those as exit 78 in a log, after saving and
restarting. This puts them on the screen beside the field they name, before
anything is written.
WHAT IT ADDS
app/configui.py the field model, built from `GET /addons/self/info`'s own
`schema` + `translations`. No option key, no label, no
rule of its own. UX-01's `Group · ` label prefix becomes a
real section heading, in whichever language resolved.
app/selfconfig.py the Supervisor conversation and the write gate.
app/config_page.py the page. Its longest function decides which HTML input a
type deserves; it contains no rule.
app/web.py five routes. Still the only file a reviewer has to read to
answer "does anything here reach the inverter".
THE FOUR THINGS THAT COULD HURT SOMEBODY, AND HOW EACH IS HELD
1. A blob the SHIPPED validator refuses is never written - not warned about,
not written. An invalid blob plus a restart is exit 78, and the panel is
gone with the add-on that serves it.
2. A blob that moved underneath is refused, not clobbered. Read hands out a
sha256 of the canonical blob, save hands it back, and the stored blob is
re-read IMMEDIATELY BEFORE the write. This is SAFETY-28's discipline
applied to configuration - "a blob reaches the Supervisor only if it was
derived from the blob stored right now" - with the honest weakening stated
in the decision record: a second writer is DETECTED, not made
inexpressible.
3. Every message is the validator's own, byte for byte. test_selfconfig.py
part 6 inserts ONE new rule into a COPY of validate.py, hashes every file
under app/ to show validate.py is the only one that differs, and serves the
real /config/validate route out of that copy in a subprocess. The new
sentence arrives, filed under the key it names.
4. Nothing on the surface commands an inverter or clears a latch. Saving does
not restart: applying costs a control interruption - the wind-down commands
0 W on every inverter - so that is a separate, confirmed button that says
so first.
MEASURED, NOT CITED (tools/supervisor_selfapi_probe.py, run against
Supervisor 2026.08.0's own code; it contacts nothing)
- the three self-paths are permitted, and `/addons/self/info` is admitted by
the `default` role too while `options` and `restart` rest on the bypass
ALONE. The probe's first draft claimed the role admitted none of the three
and went red.
- `/addons/self/options/validate` is NOT reachable from inside an add-on, so
the only validator this panel can call is ours - which is the one with the
cross-field rules.
- a POST that omits a key does not preserve it: the key reverts to
config.yaml's default. Hence whole-blob read-modify-write.
- the Configuration tab CAN be removed, and doing so drops 0-of-71 options
through and takes the add-on down. The card said it could not be; it stays
by decision, which is a better reason.
DOES NOT TOUCH config.yaml, main.py or any control path. UX-01 is a dependency,
not something this supersedes: its translations are where every label,
description and section heading on this page comes from, and the Configuration
tab is still the recovery surface. DECISIONS/UX-02-two-config-surfaces.md
records which surface is authoritative (neither: the stored blob is) and what
the second surface costs.
Also corrects a stale "70 options" in three prose spots to the 71 the probe
counts - config.yaml grew a key in SAFETY-42 and the sentences did not follow.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01BwRLw7eKYj2byVdwB6kbjU
---
⚠️ REBASED ONTO release/1.0 @
|