Skip to content

v1.0.4

Choose a tag to compare

@github-actions github-actions released this 16 Apr 00:43
5ef2c00

Added

  • Progressive schedule extension: discharge schedule end time is set to a dynamically computed safe horizon based on current SoC, discharge rate, and safety factor (1.5×). If HA loses connectivity, the inverter's schedule expires and reverts to self-use — battery protected without HA intervention. Horizon shown on Lovelace card time progress bar as a vertical marker.
  • SoC interpolation in REST-only mode: coordinator integrates battery power between REST polls for sub-percent SoC estimates, eliminating staircase progress bars when WebSocket is not active.
  • FoxESS simulator (simulator/): standalone aiohttp server with REST API, WebSocket, web auth, and backchannel endpoints for testing. Supports fault injection, fast-forward, and fuzzing (±2% jitter). Unit tests migrated from mock library to simulator.
  • Containerised E2E tests (e2e/): real HA instance in Podman container with Playwright browser automation. 20 tests covering card rendering, discharge/charge lifecycle, PV consistency, data source badge (API and WS modes), schedule horizon marker, and screenshot regression. Runs in ~70s with 10 parallel workers.
  • _on_session_cancel hook: WebSocket stops through all cancel paths (timer, SoC abort, exception, clear_overrides, target reached), and work mode clears immediately for the Lovelace card.

Changed

  • Stale REST values hidden in WS mode: overview card suppresses PV1/PV2 detail, grid voltage/frequency, battery temperature, and residual energy when WebSocket is the active data source — these values only update on REST polls and would be misleadingly stale.

Fixed

  • Work mode label stuck after session ends: overview card showed "Force Discharge" for minutes after the window finished. Now cleared immediately via _on_session_cancel.
  • WS not stopping when session ends via timer: the brand-agnostic cancel_smart_session didn't trigger WebSocket shutdown.
  • WASM signature test ordering dependency: module singleton heap state caused non-deterministic output across test runs.