This commit is contained in:
Mateusz Gruszczyński
2026-08-25 22:14:14 +02:00
parent 0d65a6a946
commit 9fa0a5399e
16 changed files with 540 additions and 84 deletions
+44 -1
View File
@@ -1,4 +1,4 @@
# GREE Controller v0.7.3 - build and validation report
# GREE Controller v0.7.4 - build and validation report
## Scope
@@ -282,3 +282,46 @@ Validation for the 0.7.1 package:
- `bash -n scripts/*.sh` passed.
- HTML parsing and CSS brace-balance checks passed.
- The validation environment does not provide `cargo`/`rustc`, so the Rust test/build step must run on the target host/LXC (the normal `scripts/update.sh` performs `cargo test --all-targets` before installation).
## 2026-08-25 disabled-zone and standby-command hotfix
- Disabled thermostat zones are excluded from normal house, group-loop and direct-device automation ownership while sensor polling/history continue normally.
- Disabling an active zone now sends one immediate power-off command to its assigned unit. Later manual operation remains possible through the technical Devices control path.
- Whole-house ON only powers devices assigned to enabled thermostat zones; unassigned devices and devices belonging to disabled zones are not started.
- Whole-house OFF now cascades group power gates to OFF and powers off all enabled physical devices. Whole-house ON restores group gates but still respects disabled zones.
- Restricted Home Assistant direct-device commands are rejected for devices assigned to disabled zones; zone/group/house endpoints keep their managed semantics.
- Dashboard direct-device controls are locked for devices assigned to disabled zones and point the operator to the Devices view for explicit technical/manual control.
- Smart Quiet now follows demand transitions instead of being reasserted throughout steady standby. Outside the night window it no longer fights Smart Fan by toggling Quiet off/on on successive cycles.
- Standby Low fan is sent on a relevant transition/core thermostat change rather than retried forever when firmware reports a different fan state, preventing periodic command/beep loops with unchanged room temperature and setpoint.
- Added regression assertions for steady-standby Smart Quiet behavior and night-mode/Smart-Fan interaction.
- PWA cache key changed so browsers fetch the corrected frontend and language strings after deployment.
Validation in this packaging environment:
- `node --check web/app.js` and `node --check web/sw.js` passed.
- PL/EN application language JSON parsed successfully and translation-key parity passed.
- `web/index.html` parsed successfully with Python's HTML parser.
- Home Assistant Python modules and JSON manifests/translations passed syntax/parse checks.
- Shell scripts passed `bash -n`.
- Rust source was statically reviewed and delimiter-checked. This environment does not provide `cargo`, `rustc` or `rustfmt`; the normal target update path must run `cargo test --all-targets` and `cargo build --release` before installation.
## 0.7.4 physical/manual takeover
- Added persistent per-zone device manual override state with source fields, start time and optional next-schedule expiry.
- Polling detects external power/mode/setpoint/fan changes relative to the last controller-known state and suspends automatic correction for that zone.
- Known standby Low-to-Auto fan normalization is ignored to avoid false remote-control detection.
- Technical climate commands from the Devices endpoint enter the same takeover; light-only/non-thermostat feature changes do not.
- Manual takeover has priority over zone modulation, climate groups and direct-device automations. Whole-house power-off is the explicit exception and clears all takeovers.
- Added Web UI Manual control / remote state and Resume automation action, plus control-plan fields for integrations/simulation.
- Added regression tests for external climate-state detection, Low-to-Auto suppression and takeover reset state.
### 0.7.4 validation
- `node --check` passed for `web/app.js` and `web/sw.js`.
- PL/EN language packs parse successfully, have identical key sets (586 keys each), and all UI translation references resolve.
- Home Assistant Python modules and helper Python scripts pass `py_compile`; shell scripts pass `bash -n`.
- Cargo metadata parses from `Cargo.toml`; package, Cargo lock root package and Home Assistant manifest report `0.7.4`.
- `web/index.html` parses successfully and CSS braces are balanced.
- Rust source delimiter/static invariant checks pass, including poll detection, group/automation guards, whole-house override clear and technical manual-command routing.
- The packaging environment has no `cargo`, `rustc` or `rustfmt`; the target update path remains the compile gate and must run `cargo test --all-targets` and `cargo build --release` before replacing the running binary.