Files
gree-controller/ha-addon/repository/gree-controller/CHANGELOG.md
T
2026-09-19 21:51:51 +02:00

21 KiB

Changelog

0.15.10

  • Visual Flow adds keyboard-first authoring: A, Insert or Ctrl/Cmd+K opens block search, and Enter inserts the first matching block.
  • Flow editing now supports Ctrl/Cmd+S save, Ctrl/Cmd+A/C/X/V/D, Delete/Backspace, Escape, arrow-key movement, precise Shift+arrow movement, Ctrl/Cmd+0 fit-to-view and Ctrl/Cmd++/- zoom.
  • The Flow editor includes an in-app keyboard shortcut reference available from the toolbar/mobile actions and with ?.
  • Every Flow card can now export its .flow.json directly from the Flow list without opening the editor; the existing export endpoint/portable format is reused.

0.15.9

  • Visual Flow on_change events are now latched while their upstream condition remains true and are acknowledged only after the downstream action executes successfully, so cooldowns, ownership suppression and same-cycle target conflicts no longer silently consume a change event.
  • Rolling mean/median blocks now require one complete configured time window after their runtime window starts or restarts before they can match; unavailable sources reset the rolling window instead of reusing partial history.
  • Thermostat action summaries now show explicit power and HVAC mode alongside the preset/target, so power=false is displayed as OFF instead of looking like a preset-only Auto action.
  • The Flow canvas adds drag-box multi-selection, keeps Shift/Ctrl/Cmd additive selection and moves the whole selection together.
  • Selected Flow blocks can be copied/pasted or duplicated with internal connections preserved; Ctrl/Cmd+C, Ctrl/Cmd+V and Ctrl/Cmd+D are supported.

0.15.8

  • Visual Flow exports now include the Shared Input definitions referenced by the graph.
  • Flow import creates missing Shared Inputs automatically, reuses equivalent local sources and safely remaps conflicting IDs without overwriting local definitions; Flow and imported inputs are persisted atomically without changing the Flow format version.
  • The Flow editor keeps the Interpretation / Flow cycle section collapsed by default on desktop, tablet and mobile, with details available through the existing disclosure button.

0.15.7

  • Fixes mixed V1/V2 Local discovery: legacy/plain discovery envelopes are no longer treated as proof that a unit is V1.
  • Uses the inner GREE ver metadata as a discovery protocol hint (V1.* -> V1, V2.*/newer -> V2), while keeping unknown results in Auto mode.
  • Auto discovery now verifies the protocol during bind with V1/V2 fallback and persists the generation that actually succeeds; explicit V1/V2 discovery remains locked to the selected protocol.
  • The discovery review UI shows Auto for unresolved candidates instead of incorrectly labeling them V1.

0.15.6

  • Removes the obsolete add-all POST /api/discovery endpoint and its compatibility-only merge path.
  • Local discovery now has one flow only: POST /api/discovery/scan followed by POST /api/discovery/add.
  • Simplifies selected-device binding: /api/discovery/add no longer accepts a redundant top-level protocol_version; each unit is bound strictly with the protocol detected during scan.
  • Removes unused discovery merge/export code and the matching obsolete OpenAPI schema.

0.15.5

  • Local discovery no longer adds every detected unit automatically; scan results are reviewed first and only selected units are persisted and bound.
  • Discovery results show each unit model, MAC address, IP address and detected protocol, with already-added units clearly marked.
  • Explicit V1 AES-ECB or V2 AES-GCM discovery now strictly filters the other protocol and binds only with the selected protocol; Auto keeps V1/V2 fallback.
  • Adds POST /api/discovery/scan and POST /api/discovery/add for the selective local-discovery flow.

0.15.4

  • Updates the Rust dependency stack to current major/minor releases, including Axum 0.8, Reqwest 0.13, Rusqlite 0.40, Rand 0.10, AES 0.9, AES-GCM 0.11, Base64 0.23, SHA-2 0.11, Tower HTTP 0.7 and utoipa-swagger-ui 9.
  • Migrates Axum route parameters and WebSocket text frames, Rand APIs, RustCrypto AES/AES-GCM APIs and Reqwest TLS configuration for the new dependency versions.
  • Updates the Home Assistant add-on Rust builder to Rust 1.98.1.
  • Pins direct Rust dependencies to exact updated releases; container builds generate a fresh lockfile before fetching and compiling with --locked.
  • Uses ring as the single Rustls crypto provider across Reqwest and the direct MQTT TLS client, avoiding the Rustls provider ambiguity introduced by Reqwest 0.13.

0.15.3

  • Simplifies the built-in Swagger API documentation: removes the embedded release-history changelog, starts with all endpoint groups collapsed and hides the global Schemas section.
  • Documents the HTTP/WebSocket API, Swagger UI (/api-docs) and OpenAPI document (/api-docs/openapi.json) in the main documentation and Home Assistant add-on package.

0.15.2

  • Adds a dedicated Visual Flow action for changing exactly one GREE unit function without modifying unrelated settings.
  • Legacy device automations now expose fan speed plus Quiet, Turbo, Panel Light, Air, X-Fan, Health and Sleep as optional single-field controls.

0.15.1

  • Web UI now treats temporary WebSocket loss as a reconnecting state, escalates to a connection error only after 15 seconds, and returns cleanly to connected after recovery while preserving the existing HTTP fallback.

0.15.0

  • Adds full vertical and horizontal louver positions to manual unit control and thermostat cards, with compact dropdowns that preserve the existing view layout.
  • Extends legacy automations, Visual Flow and the bundled Home Assistant climate entities with granular louver positions; legacy boolean swing API payloads remain accepted.
  • Direct add-on access no longer shows Invalid access token on initial page load; that validation message appears only after a token is submitted.
  • Home Assistant climate cards localize direct-control names, fan modes, thermostat presets and all vertical/horizontal louver positions while keeping stable technical mode IDs for services and automations.

0.14.24

  • Public Custom Charts fetch chart metadata before language assets, so a chart loads only its selected language pack; missing chart IDs fall back to English.
  • Public Custom Charts support pinch-to-zoom, one-finger horizontal panning while zoomed and per-metric visibility toggles through the legend.
  • Missing public chart IDs now return chart id not found, the favicon is no longer redundantly pre-cached, and invalid Access Tokens show an inline authentication error.

0.14.23

  • Code cleanup and small UX changes.

0.14.22

  • Code cleanup and small UX changes.

0.14.21

  • Code cleanup and small UX changes.

0.14.20

  • 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.

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.
  • 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.