@riddix/hamh 2.0.56 → 2.0.57

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -37,7 +37,7 @@ of port forwarding etc.
37
37
 
38
38
  | Channel | Branch | Current Version | Description |
39
39
  |---------|--------|-----------------|-------------|
40
- | **Stable** | `main` | v2.0.56 | Production-ready, recommended for most users |
40
+ | **Stable** | `main` | v2.0.57 | Production-ready, recommended for most users |
41
41
  | **Alpha** | `alpha` | v2.1.0-alpha.x | Currently level with Stable; next pre-release lands here first |
42
42
  | **Testing** | `testing` | v4.1.0-testing.x | ⚠️ **Highly unstable!** Experimental features, may break |
43
43
 
@@ -61,9 +61,46 @@ Re-assign the affected devices to their rooms after they reconnect. See the [doc
61
61
  ## 🎉 What's New
62
62
 
63
63
  <details>
64
- <summary><strong>📦 Stable Features (v2.0.56)</strong> - Click to expand</summary>
65
-
66
- **New in v2.0.56:**
64
+ <summary><strong>📦 Stable Features (v2.0.57)</strong> - Click to expand</summary>
65
+
66
+ **New in v2.0.57:**
67
+ - 🧹 **Air purifiers stop rebuilding themselves**: a composed device never listed its battery entity, so the battery auto-map retry rebuilt the endpoint on every sensor update, burning CPU and raising unhandled rejections. A sensor without a device class now needs "batt" in its id to count as the battery, so a filter life or tank level percentage is no longer taken for one ([#461](https://github.com/RiDDiX/home-assistant-matter-hub/issues/461))
68
+ - 🪟 **Covers keep their position while a controller is talking to them**: endpoint state writes are serialized per device, and an update that arrives while the endpoint is busy waits for it instead of being dropped with a warning ([#464](https://github.com/RiDDiX/home-assistant-matter-hub/issues/464))
69
+ - 🔒 **Lock PIN handling reworked**: a PIN added or cleared through a controller takes effect immediately instead of on the next state change, empty and overlong PINs are rejected, Add, Modify and the creating fabric are enforced as the Matter rules require, a code the physical lock rejected is no longer reported as programmed, and hashing moved off the event loop so a PIN protected unlock stops freezing every bridge
70
+ - 🧠 **Heap limit is configurable**: the add-on takes a `heap_size_mb` option, the automatic sizing moved from a quarter to half of the available memory, and a `NODE_OPTIONS` you set yourself is honored instead of being silently overridden ([#459](https://github.com/RiDDiX/home-assistant-matter-hub/issues/459))
71
+ - 🧩 **Third-party plugins load again**: an installed plugin package is imported through its manifest entry point instead of its directory, plugin devices report their own name to controllers, and adding or removing one tells commissioned controllers that the bridge composition changed; contributed by Patrick Gu ([#458](https://github.com/RiDDiX/home-assistant-matter-hub/pull/458))
72
+ - 🚨 **Security plugin can mirror an existing alarm panel**: the new `sourceAlarmPanel` setting turns the four mode switches and the Alarm contact into a Matter view of an `alarm_control_panel.*` entity (Alarmo etc.), with arm and disarm flowing back to Home Assistant; contributed by Patrick Gu ([#457](https://github.com/RiDDiX/home-assistant-matter-hub/pull/457)). Panels that require an alarm code reject the bridge's arm/disarm calls, the switches then fall back to the panel's real state
73
+ - 🏷️ **A device renamed in Home Assistant reaches the controller**: the registry snapshot is pushed to the endpoints on every registry refresh, a rename counts as a registry change now so that refresh runs at all, and server mode pushes the renamed identity to its root node. Apple Home takes the accessory name when the device is added and keeps its own copy, so a rename shows up there only for accessories you add after it ([#467](https://github.com/RiDDiX/home-assistant-matter-hub/issues/467))
74
+ - 🔍 **Editing the entity filter takes effect right away**: a removed entity rode the five minute outage protection meant for Home Assistant restarts. It is removed on the spot now, its endpoint number stays reserved so re-adding restores the device with its groups, and a filtered-out vacuum takes its room switches along and brings them back on their old numbers ([#468](https://github.com/RiDDiX/home-assistant-matter-hub/issues/468))
75
+ - 🍳 **An oven exposed as a climate entity mounts in a Fahrenheit install**: registration multiplied the raw Fahrenheit number by 100 before the unit conversion had a chance to run, so a template climate with `max_temp: 500` failed with "Value 50000 is above the int16 maximum". Registration values are clamped into the Matter range now and the thermostat converts them on its first update ([#470](https://github.com/RiDDiX/home-assistant-matter-hub/issues/470))
76
+ - 💡 **Siri "set to 100%" works next to Alexa**: `alexaPreserveBrightnessOnTurnOn` now only suppresses the brightness reset for commands arriving over the Alexa fabric, before it swallowed the same command from Apple Home ([#460](https://github.com/RiDDiX/home-assistant-matter-hub/issues/460))
77
+ - 🪟 **Covers keep the same Matter fingerprint for life**: a cover that had been moved used to come back from a restart advertising an extra attribute it never had when the controller paired it ([#456](https://github.com/RiDDiX/home-assistant-matter-hub/issues/456))
78
+ - 🧩 **New `composedPrimaryOnParent` bridge option, off by default**: puts the primary entity of a self-grouped composed device on the parent endpoint, so Apple Home reads the accessory as a light instead of taking an icon from one of the grouped entities. Needs `autoComposedDevices` on as well. It changes the endpoint layout, so the device has to be removed and added again in the controller, and Apple Home has been seen to stop listing the grouped entities afterwards, so try it on one bridge first ([#469](https://github.com/RiDDiX/home-assistant-matter-hub/issues/469))
79
+ - 📡 **New `omitEventsInPriming` bridge option, off by default**: for Google fabrics that acknowledge every chunk of the initial subscription report but never answer the final one, leaving the device permanently offline. With it on, the initial report carries attributes only, live events afterwards are unaffected ([#424](https://github.com/RiDDiX/home-assistant-matter-hub/issues/424))
80
+ - ❄️ **Per-entity `climateForceTurnOn`**: sends `climate.turn_on` on every Matter On command, for IR controlled ACs where Home Assistant can report on while the device is off ([#462](https://github.com/RiDDiX/home-assistant-matter-hub/issues/462))
81
+ - 🔐 **A controller that refuses the bridge certificates says so in the log**: pairing that stops right after the attestation step left only a bare "Failed" on the controller and nothing in the HAMH log. Controllers that only pair with CSA certified products, like the Ambiscape feature on Philips Ambilight TVs, cannot be used at all ([#465](https://github.com/RiDDiX/home-assistant-matter-hub/issues/465))
82
+ - 🌡️ **The HAMH device cards follow Home Assistant's temperature unit**: a Fahrenheit install saw Celsius chips on every thermostat and temperature sensor, because the card printed the raw Matter value (Matter always carries 0.01 °C) with a hardcoded unit. The chips now read the unit out of the endpoint itself: thermostats and water heaters from their UI configuration cluster, sensors and weather from the entity's own `unit_of_measurement`. What the controllers show never changed, Apple Home and Alexa convert on their side ([#472](https://github.com/RiDDiX/home-assistant-matter-hub/issues/472))
83
+ - 🔔 **A controller that stops answering is logged as a warning**: the three "Error sending subscription update message" lines that precede a dropped subscription were logged at INFO, so a dying controller link was invisible to anyone filtering for warnings. The first two retries stay at INFO, the third one and the "Giving up on subscription" line are warnings now ([#471](https://github.com/RiDDiX/home-assistant-matter-hub/issues/471))
84
+ - 🌡️ **A temperature sensor outside the usual range keeps updating**: the sensor endpoint declared a -40 to 125 °C measurement window while writing anything int16 could hold, so an oven probe, a grill thermometer or a deep freezer was rejected by matter.js and the endpoint kept its last in-range reading forever. The declared window now covers everything the bridge can send
85
+ - 🔌 **A docked vacuum stops claiming it is charging**: with no charging signal of its own the bridge assumed a docked robot below 100% was charging, so Apple Home showed "Charging" for a robot that had long finished. If the vacuum's device has a charging sensor in Home Assistant (a `battery_charging` binary sensor, or a `..._charging_state` sensor as Xiaomi exposes), it is mapped automatically now and drives both the battery charge state and the status line. Devices without one keep the old assumption, and a charging sensor picked up this way still stays available as its own device ([#450](https://github.com/RiDDiX/home-assistant-matter-hub/issues/450))
86
+ - 🔌 **EV charger mode works from SmartThings**: SmartThings addresses EnergyEvseMode modes by list position, so the single Manual mode numbered 1 never showed and every mode change was refused. It is mode 0 now; a node that stored the old number still mounts. UserMaximumChargeCurrent is optional and read by no known controller, ModeSelect is not part of the EVSE device type, neither was added ([#475](https://github.com/RiDDiX/home-assistant-matter-hub/issues/475))
87
+ - 🧩 **Auto Composed Devices says what it does**: the description claimed a master toggle merging power and energy; those never depended on it. It changes the shape of a temperature sensor with humidity/pressure sensors (one device with a sub-device per reading), forces battery, humidity and pressure auto-mapping on and unlocks Composed Sub-Entities. Stored key unchanged ([#474](https://github.com/RiDDiX/home-assistant-matter-hub/issues/474))
88
+ - 🔋 **Battery percentage goes out with the write**: the percentage is a quieter Matter attribute, and matter.js reported its change ten seconds after the write, on its own. The charge state went with the write, the percentage late or, on Apple Home, never. Both go together now ([#450](https://github.com/RiDDiX/home-assistant-matter-hub/issues/450))
89
+ - 🔋 **A short outage no longer blanks the battery**: a device marked unavailable for a moment (a missed Roborock poll, an HA restart) got a null percentage and a flipped charge state, then the old values back 15 s later. The bridge keeps what the controller has; only a battery never seen stays null ([#450](https://github.com/RiDDiX/home-assistant-matter-hub/issues/450))
90
+ - 🧪 **Loopback subscription test**: a matter.js commissioner pairs with the vacuum node over loopback, subscribes, and checks that battery percentage and charge state arrive with the write. Off by default, `HAMH_LOOPBACK=1` runs it. This settled the Apple Home battery question: the bridge sends the value, Apple's framework treats `BatPercentRemaining` as changes-omitted and keeps only the value from pairing or from a read ([#450](https://github.com/RiDDiX/home-assistant-matter-hub/issues/450))
91
+ - 🔎 **Diagnostic export shows the connection attempts**: the export now keeps the PASE and CASE session setup lines and the failsafe expiry, lists every open session with its subscriptions, the host's network interfaces and mDNS settings (addresses replaced by their kind when anonymized), and the log levels it was taken at. A controller that never connects, or connects and never subscribes, is readable from the file instead of a debug log ([#477](https://github.com/RiDDiX/home-assistant-matter-hub/issues/477), [#478](https://github.com/RiDDiX/home-assistant-matter-hub/issues/478))
92
+ - 🧹 **Factory reset goes through the stop path**: the reset restarted the bridge without stopping it first, so the built-in plugins stayed registered and every reset logged "Plugin camera is already registered" ([#477](https://github.com/RiDDiX/home-assistant-matter-hub/issues/477), [#478](https://github.com/RiDDiX/home-assistant-matter-hub/issues/478))
93
+ - 💡 **Cool white lights load again after a restart**: a light that ran above 6800 K kept its color temperature in storage, and on the next start the bridge's default range no longer covered it, so matter.js refused the endpoint and the light was missing until the value changed. The range now widens around the stored value first ([#477](https://github.com/RiDDiX/home-assistant-matter-hub/issues/477)).
94
+ - 🔐 **The devices API keeps the camera's Home Assistant token to itself**: the WebRTC bridge lives in the camera endpoint's state, and the devices JSON behind the endpoint inspector printed its `haUrl` and `haToken`. The credentials are a private field now, and any key named token, secret or password is redacted in that output ([#155](https://github.com/RiDDiX/home-assistant-matter-hub/issues/155), [#373](https://github.com/RiDDiX/home-assistant-matter-hub/issues/373))
95
+ - 🏷️ **Prefer Entity Registry Name applies in server mode**: only bridged devices read the flag, a standalone device kept the friendly name ([#276](https://github.com/RiDDiX/home-assistant-matter-hub/issues/276))
96
+ - 🚫 **Water Leak Detector is marked unsupported on Alexa**: the mapping dialog warns before you pick the type that took a whole Alexa bridge offline ([#365](https://github.com/RiDDiX/home-assistant-matter-hub/issues/365))
97
+ - 🧹 **A rebuilt composed device drops its pending update**: after a mapping change the old endpoint was closed with a 50 ms update still queued, which then failed on the closed endpoint ([#461](https://github.com/RiDDiX/home-assistant-matter-hub/issues/461))
98
+ - 🔇 **Deleting a bridge no longer logs a mutex warning**: the shutdown guard looked for a message matter.js never sends
99
+ - 📖 **Docs**: the vacuum "Updating" section describes the Wedge Watchdog and the 60 s report interval ([#287](https://github.com/RiDDiX/home-assistant-matter-hub/issues/287)), the Alexa section covers the 11-digit manual code, the Echo models that stop after the certification prompt and the Unique ID Suffix ([#478](https://github.com/RiDDiX/home-assistant-matter-hub/issues/478), [#449](https://github.com/RiDDiX/home-assistant-matter-hub/issues/449), [#385](https://github.com/RiDDiX/home-assistant-matter-hub/issues/385)), heap warnings name the add-on's `heap_size_mb` option ([#459](https://github.com/RiDDiX/home-assistant-matter-hub/issues/459))
100
+ - 🧭 **The interface warning names your LAN interface**: on a Docker host the Network Diagnostics card and the startup log listed every interface, Docker bridges included, and left the choice to you. A compose bridge on a 172.x address no longer counts as a candidate, the suggestion reads "eth0 (192.168.5.161)", and the text says the warning only matters when a controller shows devices offline ([#482](https://github.com/RiDDiX/home-assistant-matter-hub/issues/482))
101
+ - 📖 **Docs**: the Alexa "never connects" entry lists the checks that helped in [#478](https://github.com/RiDDiX/home-assistant-matter-hub/issues/478) (firewall on UDP 5540, manual code, fresh bridge) instead of a theory
102
+
103
+ **Previously in v2.0.56:**
67
104
  - 🔋 **Vacuum battery after HA 2026.8**: integrations that moved the battery to a separate sensor are picked up as the sensor appears, a missing percentage reports an unknown charge state instead of "charging forever", and terminal states like "not charging" stop counting as charging ([#450](https://github.com/RiDDiX/home-assistant-matter-hub/issues/450))
68
105
  - 💡 **RGB-only lights pass controller conformance again**: the Extended Color Light always advertises the full mandatory feature set, which brings WLED and similar lights back to Alexa ([#452](https://github.com/RiDDiX/home-assistant-matter-hub/issues/452))
69
106
  - 🌫️ **PM2.5, PM10 and CO₂ sensor overrides**: map a single-pollutant sensor to an Air Quality Sensor endpoint carrying just that concentration cluster via the Entity Mapping UI (Aqara renders them, Alexa partially)
@@ -313,7 +350,7 @@ Re-assign the affected devices to their rooms after they reconnect. See the [doc
313
350
  <details>
314
351
  <summary><strong>🧪 Alpha Features (v2.1.0-alpha.x)</strong> - Click to expand</summary>
315
352
 
316
- **Alpha is currently level with Stable (v2.0.56).** All alpha work up to the latest pre-release has been promoted into v2.0.56. New alpha work continues from the next pre-release tag onward and will appear here as development progresses.
353
+ **Alpha is currently level with Stable (v2.0.57).** All alpha work up to the latest pre-release has been promoted into v2.0.57. New alpha work continues from the next pre-release tag onward and will appear here as development progresses.
317
354
 
318
355
  </details>
319
356