This commit is contained in:
Mateusz Gruszczyński
2026-08-26 22:30:10 +02:00
parent 6a35096c5d
commit f8d6bc2304
21 changed files with 410 additions and 84 deletions
+41 -1
View File
@@ -1,4 +1,4 @@
# GREE Controller v0.7.5 - build and validation report
# GREE Controller v0.7.7 - build and validation report
## Scope
@@ -334,3 +334,43 @@ Validation in this packaging environment:
- Validation: `node --check` passed for the web scripts, PL/EN language packs parse with identical 587-key sets, version declarations are consistent and the package SHA-256 manifest verifies.
- `cargo check` remains unavailable in this environment because the Rust toolchain is not installed.
## 2026-08-26 manual takeover, per-unit quick power and restart safety
Implemented against the supplied v0.7.5 source archive:
- Manual/remote takeover now stores the pre-takeover physical climate state in the persisted zone payload.
- If the user restores that operational state, the takeover clears automatically. When the previous state was OFF, returning to OFF is sufficient even if the remote retained a different dormant target/mode, so a stale **Resume automation** prompt is not shown.
- If the manual state is not restored, the existing next-schedule-boundary expiry remains unchanged; zones without a future transition still require an explicit resume.
- Dashboard **Quick thermostats** now include per-unit ON/OFF controls. They intentionally use manual/remote semantics, affect only that physical unit and do not enable its climate group.
- Cooling controlled by a valid external/combined room sensor now applies a small pre-rounding demand bias so the unit selects the next lower whole-degree target (normally 0.5-1.0 C below the room target). The bias is disabled during GREE fallback/discrepancy fallback and is not added on top of a larger outdoor-assist correction.
- Startup thermostat/schedule/automation command emission is gated until one complete poll attempt of all enabled devices finishes. This prevents stale persisted device state from producing a restart-only command while leaving manual API control available.
- `/api/health`, bootstrap system data and `/api/system/info` expose `control_ready` for startup diagnostics.
- Advanced the PWA cache key to `gree-controller-v075-zone-manual-power-restart` so changed dashboard assets are refreshed.
Validation performed in this packaging environment:
- `node --check web/app.js` - passed.
- `node --check web/sw.js` - passed.
- EN/PL JSON parsing and translation-key parity - passed (590/590 keys).
- Static `tr(...)`/`data-i18n` references in the Web UI - all resolved.
- `web/manifest.webmanifest` JSON parsing - passed.
- `bash -n scripts/*.sh` - passed.
- Home Assistant Python modules and helper Python scripts compiled with `python3 -m py_compile` - passed.
- All direct `Zone { ... }` constructors were updated for the new persisted baseline field.
Rust compiler note: this packaging environment still does not provide `cargo`, `rustc` or `rustfmt`, so the Rust unit tests and release build cannot be executed here. The normal deployment/update compile gate must still run `cargo test --all-targets` and `cargo build --release` before replacing the running binary.
## 2026-08-26 Home Assistant state-bounce fix
- Added bounded post-command GREE status settling retries (0/150/350/650 ms) so an acknowledged write is not immediately contradicted by a firmware status frame that still contains the pre-command state.
- Added a three-second Home Assistant pending-command guard for physical-unit climate and optional-feature switches. Fresh command intent survives overlapping/stale coordinator refreshes, then automatically yields to factual controller polling.
- Kept the guard intentionally short and non-persistent; it does not change restart behavior or permanently mask a failed command.
## 2026-08-26 v0.7.7 quick-control desktop label fit
- Reproduced the dashboard quick-device layout issue from the supplied screenshot: five equal columns left too little usable width after button padding for Polish `Chłodzenie`/`Osuszanie`.
- Rebalanced only the five quick-device mode columns and reduced their horizontal padding from 5 px to 3 px. This keeps all five labels on one line without reducing the shared 9 px control font.
- Verified the Home Assistant integration already exposes every controller zone as an independent climate thermostat with `TURN_ON`/`TURN_OFF`, plus a separate per-zone Enabled switch. Turning on a zone thermostat sends only `enabled: true` for that zone; it does not power the whole group. Physical indoor units also remain independently controllable through their own climate entities.
- Bumped application/Home Assistant package metadata to `0.7.7` and rotated the PWA cache key.