Files
gree-controller/BUILD_REPORT.md
T
2026-08-28 10:04:35 +02:00

54 lines
3.9 KiB
Markdown

# GREE Controller v0.8.4 - build and validation report
## 0.8.4 Scheduled Temporary Quick Thermostat start and ownership hardening
Source baseline: v0.8.3.
### Changes
- Added independent Temporary Quick Thermostat start rules: immediately, after a delay, or at an absolute date/time.
- Delayed sessions are persisted without taking local thermostat ownership before `started_at`; the controller wakes at the scheduled start and activates the saved target then.
- Duration, absolute finish validation, safety timeout and next-schedule-boundary calculations are anchored to the effective start time.
- Added pending-session countdown/status to the Quick Thermostat button and modal; after activation the same control switches to the existing finish countdown/status.
- Active Temporary Quick Thermostat targets keep priority over schedule transitions and schedule edits.
- Direct device automations remain blocked by local thermostat ownership while the temporary session is active; group climate mode/preset actions are deferred for an actively owned zone, while group power state may change underneath and becomes effective after hand-back.
- Before a delayed start, normal schedule/automation ownership is unchanged unless another pre-existing local/manual override already owns the zone.
- Local Quick Thermostat ON can use the zone's last Heat/Cool mode when inherited house climate mode is `off`; whole-house master power remains authoritative.
- Cancelling a pending session does not clear unrelated manual quick-control state.
- Added Rust regression tests for delayed-session ownership, pre-start temperature conditions, schedule target priority and local Quick Thermostat operation with inherited house mode `off`.
- Bumped controller and Home Assistant integration version to 0.8.4 and rotated the PWA service-worker cache key.
### Ownership/priority scenarios reviewed
| Scenario | Expected result |
| --- | --- |
| Delayed session before start | Normal schedule and automations continue; pending session owns nothing yet. |
| Start time reached | Session acquires local thermostat ownership, enables the zone if needed and applies its saved target. |
| Schedule transitions while active | Schedule may advance internally, but `manual_setpoint` from Temporary Quick Thermostat remains effective. |
| Schedule edited while active | Generic schedule-boundary override timer is not re-armed, so the temporary target is not cleared. |
| Direct-device automation while active | Suppressed by local thermostat ownership. |
| Group mode/preset automation while active | Climate change is deferred for the owned zone; it cannot clear/change the temporary target. |
| Group power automation while active | Group gate can change underneath, but local temporary ownership keeps the zone running; the gate applies after hand-back. |
| Temporary finish | Local ownership is cleared and the currently applicable schedule/group/house state is recalculated. |
| Session started from disabled zone | Zone is temporarily enabled, then restored to disabled and its unit is stopped after hand-back. |
### Validation executed in this environment
- `node --check web/app.js`
- `node --check web/theme-init.js`
- `node --check web/sw.js`
- parsed all JSON files, including PL/EN language packs and Home Assistant manifest
- checked duplicate HTML IDs
- checked that newly referenced PL/EN translation keys exist
- `python3 -m compileall -q home-assistant scripts make_zip.py`
- `bash -n scripts/*.sh`
- checked version consistency across Cargo.toml, Cargo.lock, README and Home Assistant manifest
- regenerated and verified `FILE_MANIFEST.sha256`
- tested the final ZIP with `unzip -t`
### Rust toolchain note
This execution environment does not contain `cargo`, `rustc` or `rustfmt`, so the Rust regression tests and full compilation cannot be executed here. The tests are included in `src/engine.rs`, and the installer/updater still runs `cargo test --all-targets` before replacing the running service.
---