Files
gree-controller-ha-addon/gree-controller/CHANGELOG.md
T

185 lines
15 KiB
Markdown

# Changelog
## 0.14.20
- Fixes ARM cross-build startup by removing the invalid `xx-cargo --version` probe; `xx-cargo build` remains the cross-compilation entry point.
- Installs the Rust target standard library in a cacheable layer before project sources are copied, so source-only changes do not redownload/reinstall it.
- Fetches Cargo dependencies before target-specific setup so amd64/arm64 reuse the same registry/git cache.
- Separates compiled `target/` caches by target architecture to avoid multi-platform build contention while retaining incremental dependency reuse.
- Keeps the existing `build.sh` workflow and `DISTRO=alpine` (musl/Alpine) versus `DISTRO=trixie` (GNU/glibc Debian Trixie) runtime selection unchanged.
## 0.14.19
- Speeds up multi-architecture OCI builds by running Rust/Cargo on `BUILDPLATFORM` and cross-compiling to amd64/arm64 instead of compiling ARM under QEMU.
- Keeps `DISTRO=alpine` as a musl/Alpine target and `DISTRO=trixie` as a GNU/glibc Debian Trixie target; `build.sh` remains the build entry point.
- Adds persistent BuildKit caches for Cargo registry/git data and compiled target artifacts; target Rust/C toolchains are prepared before project manifests so normal version/source changes keep the cross-toolchain layer cached.
- Reduces Docker build context and avoids invalidating Rust compilation for unrelated documentation/repository changes; only `docs/openapi.json` is copied because it is embedded by the binary.
- Deduplicates `/api/integrations/gree-cloud/status` across the initial HTTP bootstrap and immediate WebSocket bootstrap render while keeping manual Cloud reconnect refreshes forced.
## 0.14.18
- Renames the shared segmented navigation class from feature-specific `automation-tabs` to generic `segmented-tabs`.
- Generalizes shared configuration layout classes to `config-form`, `form-section`, `form-section-head`, `form-grid`, `sticky-form-actions` and `full-width-form`.
- Generalizes reusable chart, enable-toggle and diagram classes used across History/public charts, Zones/Flow and Simulator/Flow editor.
- Replaces Flow-palette-specific category modifiers with shared `block-category-*` classes also used by the block library.
- Removes all references to the replaced shared class names without changing component behavior or visual styling.
## 0.14.17
- Makes History navigation visually identical to the Flow / Schedules / Automations segmented navigation.
- Reuses the shared `automation-tabs` component for Overview, Zones, GREE devices, Energy, Pings, HA sensors and Custom chart.
- Removes redundant History-only tab CSS, including its separate mobile overrides.
## 0.14.16
- Adds an explicit Saved Charts list to History → Custom Chart with load, edit, update and delete actions.
- Keeps chart name, selected series and range editable when updating an existing saved chart instead of creating duplicates.
- Adds a range selector to standalone public Custom Chart links; the public data endpoint accepts an optional `hours` override while keeping the shared series definition fixed.
- Fits the standalone public chart to the viewport and prevents vertical page scrolling, including compact/mobile layouts.
## 0.14.15
- Treats TCP `8787` as the fixed internal Home Assistant add-on application/ingress port and validates the Supervisor-reported ingress port at startup.
- Makes the add-on build fail when `run.sh`, `ingress_port` and watchdog port metadata diverge.
- Uses the Home Assistant Supervisor network API to resolve the primary host IPv4 for generated chart-only share links instead of depending on the browser/ingress hostname.
- Adds optional `public_chart_base_url` for reverse proxies, alternate hostnames or non-standard external routing while keeping the public surface limited to generated Custom Chart shares.
- Uses Home Assistant's `[PORT:8787]` watchdog placeholder so Supervisor resolves the effective watchdog port from the add-on port contract.
- Keeps standalone installations fully port-configurable through `GREE_CONTROLLER_BIND`.
## 0.14.14
- Changes History → Custom Charts links to open a standalone chart-only page instead of the full dashboard.
- Persists chart shares behind random bearer URLs whose token is stored only as a hash; shared URLs do not expose metric/device selectors.
- In Supervisor mode, requires `app_token` for direct dashboard/API/WebSocket access on port `8787`, while trusted HA ingress remains automatic.
- Keeps only generated Custom Chart data public to the network; the add-on watchdog may call `/api/health` anonymously only from the Supervisor peer.
- Makes the Home Assistant entity picker in `Reusable data -> Shared Flow input` explicit with a separate search box and selected `entity_id` field.
- Filters the live Home Assistant entity catalog by friendly name, `entity_id`, current state, unit and device class while typing.
- Keeps automatic Supervisor authentication, failed-test manual fallback and standalone Home Assistant behavior unchanged.
## 0.14.13
- Shows Home Assistant Supervisor authentication as automatic in the add-on and hides manual URL/token/TLS fields by default.
- Unlocks a persisted manual Home Assistant URL/token fallback only after an automatic HA test fails; standalone installations keep their existing manual behavior.
- Extends `Test HA` to verify the state registry and show a live sample entity/state in the success toast.
- Adds a searchable live Home Assistant entity picker to `Reusable data -> Shared Flow input`, with source-type-aware fields and numeric filtering for numeric HA inputs.
- Adds an authenticated compact Home Assistant entity-catalog endpoint for UI suggestions.
## 0.14.12
- Home Assistant add-on now uses the Supervisor-managed Home Assistant Core API connection automatically.
- Enables `homeassistant_api` for the add-on and authenticates Core API requests with runtime `SUPERVISOR_TOKEN`.
- Keeps the Supervisor token out of SQLite and prevents add-on UI edits from replacing stored standalone Home Assistant URL/token settings.
- Standalone installations keep the existing manual Home Assistant URL and Long-Lived Access Token behavior unchanged.
- Fixes custom select mouse hover/click inside modal dialogs by keeping each dropdown popover inside the same modal top-layer subtree; keyboard behavior is unchanged.
## 0.14.11
- Replaces font-dependent Unicode glyphs used as Web UI icons with a shared inline SVG icon set.
- Covers navigation, theme/refresh controls, dialogs, menus, Flow editor/statuses, chart zoom/fullscreen controls, thermostat/device +/- controls, custom-select checks/chevrons and event-category icons.
- Leaves semantic text symbols such as `°C`, `±`, comparison operators, mathematical multiplication and Flow expression notation as text.
- Keeps the 0.14.10 full-width Night mode and Home Assistant / Sensors layout fix.
## 0.14.10
- Makes the standalone Night mode and Home Assistant / Sensors forms use the full available page width, matching the other application sections on desktop and responsive layouts.
## 0.14.9
- Replaces the font-dependent Unicode power symbol in Manual Control and thermostat quick power controls with an embedded SVG icon for consistent Android/Chrome rendering.
- Home Assistant room-sensor stale/error event messages now include the affected `entity_id` and zone name.
- Event rendering enriches older `ha.sensor_*` rows with the sensor alias/entity and zone when that context is available in saved metadata.
## 0.14.8
- Removes the remaining non-device `502 Bad Gateway` mappings from Home Assistant connection/entity diagnostics and notification tests.
- Returns `400 Bad Request` for missing/invalid integration configuration and `424 Failed Dependency` when a configured external service cannot be reached or rejects the request.
- Reclassifies background Home Assistant energy-read failures as external-dependency errors.
- Keeps `502 Bad Gateway` only for actual Local/LAN GREE device transport failures.
- Aligns API/OpenAPI error documentation with the runtime status mapping.
## 0.14.7
- Treats an unconfigured Home Assistant integration as an optional unavailable source when listing HA energy sensors instead of emitting a 502 error while opening split/multisplit installation settings.
- Maps configured-but-failing Home Assistant energy discovery to the external-dependency response path rather than a device communication 502.
- Fixes short custom-select menus near the bottom of dialogs opening far above their trigger by positioning from the menu's rendered height.
## 0.14.6
- Fixes custom select duplication when a select is moved in the DOM, including repeated History → Energy refreshes.
- Hides the Energy history controls and Refresh action when no energy source is configured, leaving a single empty-state message.
- Hardens global custom-select cleanup so dynamically removed controls do not leave stale wrappers or popup menus.
## 0.14.5
- Fixed the outdoor-temperature modal chart returning from fullscreen with fullscreen-sized layout remnants.
- Added quick links from the outdoor-temperature modal to 7-day, 30-day, yearly and full History views.
- Replaces native single-choice dropdown UI across the Web UI with one consistent custom select matching the energy chart picker, including language/theme controls and dynamically generated Flow/history forms.
- Loads only the active language pack at startup and fetches other language packs when selected.
- Makes the dashboard outdoor temperature clickable and opens a modal with its last 24 hours of history.
## 0.14.4
- Removes the obsolete Home Assistant connection-test/default entity; HA connection testing uses only the configured URL and token.
- `outdoor_entity_id` / `HA_OUTDOOR_ENTITY_ID` is the global Home Assistant outdoor-temperature sensor.
- Adds optional per-zone `ha_outdoor_entity_id`; when empty, the zone uses the global outdoor sensor, and when set it overrides the outdoor source only for that zone.
- Keeps Home Assistant room temperature sensors per zone via `ha_entity_id`.
- Global and per-zone outdoor sensors are available in aliases, metrics/history and Home Assistant entity suggestions used by Visual Flow.
## 0.14.3
- Home Assistant connection test now validates the configured server and token without requiring any entity.
## 0.14.2
- Improves connectivity controls: Local/LAN ping measurement can be explicitly enabled/disabled in Settings, disabled workers gray out their interval/sample fields, Cloud REST/MQTT measurement settings live in a dedicated block, and History → Pings can hide/show jitter with one button while rendering jitter as a dashed line.
- Adds a configurable background connectivity worker for Local/LAN units with measurement interval and sample-count settings.
- Adds a History → Connectivity/Pings view with per-endpoint latency, jitter and packet-loss charts plus latest batch summaries.
- Stores connectivity readings in SQLite using the same retention/compaction lifecycle as other history metrics and archives them to InfluxDB when enabled.
- Keeps direct unit probing Local/LAN-only; GREE Cloud diagnostics instead measure optional REST response time and MQTT PINGRESP round-trip.
- Adds opt-in GREE Cloud connectivity metrics with configurable interval/sample count; Cloud measurements are disabled by default.
- Adds separate vertical and horizontal swing controls for local units in Manual Control, respecting per-device capabilities.
- Adds vertical and horizontal swing controls to thermostat zone cards without switching the zone into manual device ownership.
- Adds optional `swing_vertical` and `swing_horizontal` actions to legacy direct-device automations.
- Extends Visual Flow so both `device_action` and `zone_thermostat` can control vertical/horizontal swing, and device-state selectors use readable swing labels.
- Prevents swing-enabled thermostat Flows from being reduced to native schedules, preserving the auxiliary swing action at runtime.
- Exposes vertical and horizontal swing on Home Assistant zone thermostat climate entities when supported by the assigned unit.
## 0.14.1
- Adds split and multisplit installation groups in the Devices section, including assignment of indoor units to a shared outdoor installation.
- Adds installation-level energy sources so a multisplit can use one cumulative GREE Cloud meter or one Home Assistant energy entity instead of reporting duplicated per-unit consumption.
- Shows on each grouped device that its energy is provided by the assigned split/multisplit installation and identifies the configured shared source.
- Adds an optional shared outdoor-temperature source for an installation, allowing all member units to use the outdoor temperature reported by one selected unit.
- Adds installation groups to configuration export/import, bootstrap/API data and persistence, with validation that prevents duplicate membership and invalid energy/outdoor source references.
- Keeps installation configuration consistent when devices are removed, including removing empty groups and resetting a deleted GREE Cloud energy source safely.
- Adds multi-select energy charts so several devices and/or installations can be displayed together.
- Adds energy period comparison against the previous day, previous equivalent period or previous year.
- Fixes daily energy chart labels so daily aggregation is rendered as calendar dates instead of timestamps such as `02:00`.
- Unifies GREE Cloud validation/error alerts with the alert style used for device errors and removes redundant styling paths.
- Hides empty GREE Cloud status fields such as disabled/disconnected, `0 / 0` and `Unavailable`; status details are shown only when useful data or an actionable error exists.
- Preserves and updates the Polish/English translations used by the new installation, energy and Cloud UI, including the simplified Cloud details label (`Details` / `Szczegóły`).
- Fixes repeated `GREE Cloud MQTT message does not match a registered device` warnings after deleting all Cloud devices by ignoring in-flight stale MQTT frames when no devices are registered and closing the now-unused MQTT session after the last device is unregistered.
- Adds regression coverage ensuring stale MQTT payloads are ignored only when no Cloud devices remain, while unknown-device payloads still fail when registered devices exist.
## 0.14.0
- Adds GREE Cloud as a first-class provider while preserving the existing LAN/UDP transport.
- Adds MQTT/TLS status push, Cloud commands, reconnect/resubscribe lifecycle and safe Cloud diagnostics.
- Adds per-device capabilities and Cloud-specific Devices/Manual Control UI.
- Adds GREE Cloud and Home Assistant cumulative-energy sources, delta conversion, energy history, aggregation, charts and InfluxDB archive support.
- Keeps Local and Cloud entries independent and never performs automatic transport fallback.
## 0.13.10
- Accepts multi-state non-zero values for optional GREE feature flags without dropping an otherwise valid status frame.
- Preserves unit-specific active `Quiet` encodings (`1`, `2` or `3`) and reuses them when Quiet is enabled; legacy units still default to `Quiet=1`.
- Prevents units reporting `Quiet=2` from being marked offline because of parser validation.
## 0.13.9
- Home Assistant add-on with `amd64` + `aarch64` multi-arch OCI image.
- Host networking for GREE UDP discovery and multi-interface/VLAN hosts.
- Home Assistant ingress, watchdog and cold backup support.
- Polish and English documentation consolidated into one `DOCS.md`.