@riddix/hamh 2.1.0-alpha.575 → 2.1.0-alpha.577

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.30 | Production-ready, recommended for most users |
40
+ | **Stable** | `main` | v2.0.36 | Production-ready, recommended for most users |
41
41
  | **Alpha** | `alpha` | v2.1.0-alpha.x | Pre-release with new features, for early adopters |
42
42
  | **Testing** | `testing` | v4.1.0-testing.x | ⚠️ **Highly unstable!** Experimental features, may break |
43
43
 
@@ -52,30 +52,39 @@ of port forwarding etc.
52
52
  ## 🎉 What's New
53
53
 
54
54
  <details>
55
- <summary><strong>📦 Stable Features (v2.0.30)</strong> - Click to expand</summary>
55
+ <summary><strong>📦 Stable Features (v2.0.36)</strong> - Click to expand</summary>
56
56
 
57
- **New in v2.0.30:**
57
+ **New in v2.0.36:**
58
58
 
59
59
  | Feature | Description |
60
60
  |---------|-------------|
61
- | **� Mapped Entity Propagation Fix** | Propagate mapped entity changes (battery, humidity, etc.) to Matter endpoints — fixes stale sensor readings |
62
- | **🖥️ API Error Surfacing** | Surface API errors instead of silently swallowing them ([#232](https://github.com/RiDDiX/home-assistant-matter-hub/issues/232)) |
63
-
64
- **Previously in v2.0.29:**
61
+ | **🏗️ User-Defined Composed Devices** | Create custom composed devices via composedEntities mapping ([#220](https://github.com/RiDDiX/home-assistant-matter-hub/issues/220)) |
62
+ | **🔌 Plugin Domain Mappings** | Domain mapping support in plugin API with cloud-mock example |
63
+ | **🔋 Valve & Pump Battery** | Battery support for valve and pump endpoints |
64
+ | **🌐 German + Russian Translations** | Complete German translation and new Russian language |
65
+ | **📡 Session Recovery** | Graceful session close, dead session cleanup, mDNS re-announcement ([#266](https://github.com/RiDDiX/home-assistant-matter-hub/issues/266)) |
66
+ | **🔗 Quick Link to Failed Devices** | Dashboard quick link to failed devices ([#270](https://github.com/RiDDiX/home-assistant-matter-hub/issues/270)) |
67
+ | **🌡️ Thermostat Fix** | Skip climate.turn_on when already on ([#269](https://github.com/RiDDiX/home-assistant-matter-hub/issues/269)) |
68
+ | **🪟 Cover Fix** | Correct stale targetPosition during external movement ([#268](https://github.com/RiDDiX/home-assistant-matter-hub/issues/268)) |
69
+ | **🌬️ Air Purifier Fix** | Sub-endpoints for composed air purifier, manual temp/humidity mapping ([#265](https://github.com/RiDDiX/home-assistant-matter-hub/issues/265)) |
70
+ | **🔥 Cooling-Only Thermostat Fix** | Prevent HeatingOnly on cooling-only thermostat ([#264](https://github.com/RiDDiX/home-assistant-matter-hub/issues/264)) |
71
+ | **↔️ Per-Entity Cover Swap** | Individual coverSwapOpenClose per cover ([#263](https://github.com/RiDDiX/home-assistant-matter-hub/issues/263)) |
72
+
73
+ **Previously in v2.0.35:**
65
74
 
66
75
  | Feature | Description |
67
76
  |---------|-------------|
68
- | **� Light currentLevel Fix** | Retain light currentLevel when off to prevent Apple Home 100% brightness on turn-on ([#225](https://github.com/RiDDiX/home-assistant-matter-hub/issues/225)) |
69
- | **�️ Bridge Config Save Fix** | Decouple save button from RJSF schema validation errors ([#232](https://github.com/RiDDiX/home-assistant-matter-hub/issues/232)) |
70
- | **🌀 Fan Device Feature Fix** | Correct FanDeviceFeature TURN_ON/TURN_OFF enum values to match Home Assistant |
71
- | **🌡️ Humidity Auto-Mapping Fix** | Correct autoHumidityMapping schema default to match runtime behavior |
77
+ | **🏠 HA 2026.3 Clean Area Support** | Native support for the new `vacuum.clean_area` action |
78
+ | **🤖 Valetudo Identifier Mapping** | Custom `valetudoIdentifier` for MQTT topic case mismatches |
79
+ | **🔌 Plugin System Hardening** | Validation, API version check, tgz upload/local install |
80
+ | **📖 Docusaurus Docs** | New documentation site with improved search and navigation |
72
81
 
73
82
  </details>
74
83
 
75
84
  <details>
76
85
  <summary><strong>🧪 Alpha Features (v2.1.0-alpha.x)</strong> - Click to expand</summary>
77
86
 
78
- **Alpha is currently in sync with Stable (v2.0.30).** All alpha features have been promoted to stable. New alpha features will appear here as development continues.
87
+ **Alpha is currently in sync with Stable (v2.0.36).** All alpha features have been promoted to stable. New alpha features will appear here as development continues.
79
88
 
80
89
  </details>
81
90
 
@@ -101,6 +110,24 @@ of port forwarding etc.
101
110
  <details>
102
111
  <summary><strong>📜 Previous Stable Versions</strong> - Click to expand</summary>
103
112
 
113
+ ### v2.0.35
114
+ HA 2026.3 Clean Area Support, Valetudo Identifier Mapping, Plugin System Hardening, Registry Fingerprint Fix, Roomba Battery Fix, Contact Sensor Fix, Script Momentary Fix, Docusaurus Docs
115
+
116
+ ### v2.0.34
117
+ Automatic Backup, Vacuum Battery Auto-Map, Deprecated Feature Flags Fix
118
+
119
+ ### v2.0.33
120
+ Endpoint Number Preservation, Binary Sensor Battery Auto-Map
121
+
122
+ ### v2.0.32
123
+ Multi-Language Support, Plugin System, New Device Types (PIR, Rain, Electrical, AQ Sensors), Cluster Diagnostics, Dashboard Enhancements, Mapping Profile Export/Import, Fan & Air Purifier Fixes, Stale Session Cleanup, KNX Cover Fix
124
+
125
+ ### v2.0.31
126
+ Controller Profiles & Area Setup, Fan Speed/Preset Fix, Optimistic State Fix, Cover Target Fix, Humidity Auto-Mapping Default
127
+
128
+ ### v2.0.30
129
+ Mapped Entity Propagation Fix, API Error Surfacing
130
+
104
131
  ### v2.0.29
105
132
  Light currentLevel Fix, Bridge Config Save Fix, Fan Device Feature Fix, Humidity Auto-Mapping Fix
106
133
 
@@ -441,7 +468,7 @@ Thank you to everyone who helps improve this project by reporting issues!
441
468
  | 💎 StefanS | 💎 Manny B. | 💎 Bonjon |
442
469
  | 💎 TobiR | 💎 Franz Huber | 💎 Michele Larese de Prata |
443
470
  | 💎 [@CNCB](https://github.com/CNCB) | 💎 [@pelican1997](https://github.com/pelican1997) | 💎 [@PeJanNL](https://github.com/PeJanNL) |
444
- | 💎 [@bra1nbuster](https://github.com/bra1nbuster) | | |
471
+ | 💎 [@bra1nbuster](https://github.com/bra1nbuster) | 💎 [@knuti1960](https://github.com/knuti1960) | |
445
472
 
446
473
  🙏 *...and anonymous supporters who prefer not to be named.*
447
474
 
@@ -175949,8 +175949,8 @@ function isRoomMode(mode) {
175949
175949
  return mode >= ROOM_MODE_BASE;
175950
175950
  }
175951
175951
  var cleaningSessions = /* @__PURE__ */ new WeakMap();
175952
- function getSession(agent) {
175953
- let session = cleaningSessions.get(agent);
175952
+ function getSession(endpoint) {
175953
+ let session = cleaningSessions.get(endpoint);
175954
175954
  if (!session) {
175955
175955
  session = {
175956
175956
  completedAreas: /* @__PURE__ */ new Set(),
@@ -175958,7 +175958,7 @@ function getSession(agent) {
175958
175958
  activeAreas: [],
175959
175959
  loggedShortCircuits: /* @__PURE__ */ new Set()
175960
175960
  };
175961
- cleaningSessions.set(agent, session);
175961
+ cleaningSessions.set(endpoint, session);
175962
175962
  }
175963
175963
  return session;
175964
175964
  }
@@ -175973,7 +175973,7 @@ var RvcRunModeServerBase = class extends RvcRunModeServer {
175973
175973
  if (!entity.state || !entity.state.attributes) {
175974
175974
  return;
175975
175975
  }
175976
- const s = getSession(this.agent);
175976
+ const s = getSession(this.endpoint);
175977
175977
  const previousMode = this.state.currentMode;
175978
175978
  const newMode = this.state.config.getCurrentMode(entity.state, this.agent);
175979
175979
  applyPatchState(
@@ -176009,7 +176009,7 @@ var RvcRunModeServerBase = class extends RvcRunModeServer {
176009
176009
  * surfacing the silent paths that would otherwise be invisible.
176010
176010
  */
176011
176011
  logShortCircuitOnce(reason, message) {
176012
- const s = getSession(this.agent);
176012
+ const s = getSession(this.endpoint);
176013
176013
  if (s.loggedShortCircuits.has(reason)) return;
176014
176014
  s.loggedShortCircuits.add(reason);
176015
176015
  logger189.info(message);
@@ -176020,7 +176020,7 @@ var RvcRunModeServerBase = class extends RvcRunModeServer {
176020
176020
  */
176021
176021
  updateCurrentRoomFromSensor() {
176022
176022
  try {
176023
- const s = getSession(this.agent);
176023
+ const s = getSession(this.endpoint);
176024
176024
  const homeAssistant = this.agent.get(HomeAssistantEntityBehavior);
176025
176025
  const currentRoomEntityId = homeAssistant.state.mapping?.currentRoomEntity;
176026
176026
  if (!currentRoomEntityId) {
@@ -176121,7 +176121,7 @@ var RvcRunModeServerBase = class extends RvcRunModeServer {
176121
176121
  * matter.js property getters during transaction pre-commit.
176122
176122
  */
176123
176123
  updateProgress(serviceArea, areaId) {
176124
- const s = getSession(this.agent);
176124
+ const s = getSession(this.endpoint);
176125
176125
  if (s.activeAreas.length === 0) return;
176126
176126
  const state = serviceArea.state;
176127
176127
  if (areaId === null) {
@@ -176154,7 +176154,7 @@ var RvcRunModeServerBase = class extends RvcRunModeServer {
176154
176154
  }
176155
176155
  }
176156
176156
  changeToMode(request) {
176157
- const s = getSession(this.agent);
176157
+ const s = getSession(this.endpoint);
176158
176158
  const homeAssistant = this.agent.get(HomeAssistantEntityBehavior);
176159
176159
  const { newMode } = request;
176160
176160
  if (newMode !== this.state.currentMode && !this.state.supportedModes.some((m) => m.mode === newMode)) {