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

3.9 KiB

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.