@riddix/hamh 2.0.40 → 2.0.42

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.
Files changed (130) hide show
  1. package/README.md +44 -5
  2. package/dist/backend/cli.js +1546 -1054
  3. package/dist/frontend/assets/index-COXfpHPr.js +473 -0
  4. package/dist/frontend/assets/index-G-pxPqsB.css +1 -0
  5. package/dist/frontend/assets/javascript-BQ_IDdmx.js +1 -0
  6. package/dist/frontend/assets/roboto-cyrillic-300-normal-DEFNdjk5.woff +0 -0
  7. package/dist/frontend/assets/roboto-cyrillic-300-normal-DzUz0kzv.woff2 +0 -0
  8. package/dist/frontend/assets/{roboto-cyrillic-400-normal-DZJji7Rx.woff → roboto-cyrillic-400-normal-Bjg-1-sg.woff} +0 -0
  9. package/dist/frontend/assets/roboto-cyrillic-400-normal-CBPI_iaY.woff2 +0 -0
  10. package/dist/frontend/assets/{roboto-cyrillic-500-normal-BI4HuXre.woff → roboto-cyrillic-500-normal-CBKMylY4.woff} +0 -0
  11. package/dist/frontend/assets/roboto-cyrillic-500-normal-CLao9AfR.woff2 +0 -0
  12. package/dist/frontend/assets/roboto-cyrillic-700-normal-C2o7G-SM.woff2 +0 -0
  13. package/dist/frontend/assets/{roboto-cyrillic-700-normal-KqaQ5bNp.woff → roboto-cyrillic-700-normal-DhZFXDSN.woff} +0 -0
  14. package/dist/frontend/assets/roboto-cyrillic-ext-300-normal-D7ank4TF.woff +0 -0
  15. package/dist/frontend/assets/roboto-cyrillic-ext-300-normal-DIxttMbC.woff2 +0 -0
  16. package/dist/frontend/assets/{roboto-cyrillic-ext-400-normal-DtZHuW6i.woff → roboto-cyrillic-ext-400-normal-CaK1767H.woff} +0 -0
  17. package/dist/frontend/assets/roboto-cyrillic-ext-400-normal-qHufge6k.woff2 +0 -0
  18. package/dist/frontend/assets/roboto-cyrillic-ext-500-normal-BWC_xYeb.woff2 +0 -0
  19. package/dist/frontend/assets/roboto-cyrillic-ext-500-normal-DqF2hftb.woff +0 -0
  20. package/dist/frontend/assets/roboto-cyrillic-ext-700-normal-CI7FH63F.woff +0 -0
  21. package/dist/frontend/assets/roboto-cyrillic-ext-700-normal-DmFxo5wj.woff2 +0 -0
  22. package/dist/frontend/assets/roboto-greek-300-normal-C_Dgaih9.woff +0 -0
  23. package/dist/frontend/assets/roboto-greek-300-normal-DJEM9B4Z.woff2 +0 -0
  24. package/dist/frontend/assets/{roboto-greek-400-normal-CcizSnRP.woff → roboto-greek-400-normal-Bb5mj_fZ.woff} +0 -0
  25. package/dist/frontend/assets/roboto-greek-400-normal-ai2Z1K3C.woff2 +0 -0
  26. package/dist/frontend/assets/roboto-greek-500-normal-C9AnhcmC.woff2 +0 -0
  27. package/dist/frontend/assets/{roboto-greek-500-normal-BLLWU9W-.woff → roboto-greek-500-normal-oCqhoyfc.woff} +0 -0
  28. package/dist/frontend/assets/roboto-greek-700-normal-0aHWxGLu.woff2 +0 -0
  29. package/dist/frontend/assets/{roboto-greek-700-normal-D3kmAf0K.woff → roboto-greek-700-normal-DjRqqLBV.woff} +0 -0
  30. package/dist/frontend/assets/roboto-latin-300-normal-BARJ-h6h.woff +0 -0
  31. package/dist/frontend/assets/roboto-latin-300-normal-CCzlftfr.woff2 +0 -0
  32. package/dist/frontend/assets/roboto-latin-400-normal-BqEyEoaF.woff2 +0 -0
  33. package/dist/frontend/assets/{roboto-latin-400-normal-068yxgMN.woff → roboto-latin-400-normal-DyYNIH4P.woff} +0 -0
  34. package/dist/frontend/assets/roboto-latin-500-normal-7RbcRiD8.woff2 +0 -0
  35. package/dist/frontend/assets/roboto-latin-500-normal-DQZyH_nt.woff +0 -0
  36. package/dist/frontend/assets/roboto-latin-700-normal-BZpUvMxY.woff2 +0 -0
  37. package/dist/frontend/assets/roboto-latin-700-normal-DLgJJpmK.woff +0 -0
  38. package/dist/frontend/assets/roboto-latin-ext-300-normal-B90pq-BC.woff2 +0 -0
  39. package/dist/frontend/assets/roboto-latin-ext-300-normal-CTCCHkZF.woff +0 -0
  40. package/dist/frontend/assets/roboto-latin-ext-400-normal-C3tdtHj3.woff2 +0 -0
  41. package/dist/frontend/assets/roboto-latin-ext-400-normal-scX0fKtV.woff +0 -0
  42. package/dist/frontend/assets/roboto-latin-ext-500-normal-Cyc0AKLz.woff +0 -0
  43. package/dist/frontend/assets/roboto-latin-ext-500-normal-pMCM9Ixg.woff2 +0 -0
  44. package/dist/frontend/assets/roboto-latin-ext-700-normal-BUhwtWwy.woff +0 -0
  45. package/dist/frontend/assets/roboto-latin-ext-700-normal-DSBUz0N1.woff2 +0 -0
  46. package/dist/frontend/assets/roboto-math-300-normal-5dF_7mZP.woff2 +0 -0
  47. package/dist/frontend/assets/roboto-math-300-normal-Ds0YpBw2.woff +0 -0
  48. package/dist/frontend/assets/roboto-math-400-normal-BEFej5gc.woff2 +0 -0
  49. package/dist/frontend/assets/{roboto-math-400-normal-rzxYvyVt.woff → roboto-math-400-normal-C9RxBKAh.woff} +0 -0
  50. package/dist/frontend/assets/{roboto-math-500-normal-DaFX-ZC8.woff → roboto-math-500-normal-C-7mKPO3.woff} +0 -0
  51. package/dist/frontend/assets/roboto-math-500-normal-C4NU9gLX.woff2 +0 -0
  52. package/dist/frontend/assets/roboto-math-700-normal-B8YqGHVc.woff2 +0 -0
  53. package/dist/frontend/assets/roboto-math-700-normal-DVoD5t2k.woff +0 -0
  54. package/dist/frontend/assets/roboto-symbols-300-normal-BCnjhQd_.woff +0 -0
  55. package/dist/frontend/assets/roboto-symbols-300-normal-DDU7avhj.woff2 +0 -0
  56. package/dist/frontend/assets/roboto-symbols-400-normal-CB1Ce4Gk.woff2 +0 -0
  57. package/dist/frontend/assets/roboto-symbols-400-normal-DLYbZahX.woff +0 -0
  58. package/dist/frontend/assets/roboto-symbols-500-normal-B_CZKVJS.woff2 +0 -0
  59. package/dist/frontend/assets/roboto-symbols-500-normal-F7c8nfcH.woff +0 -0
  60. package/dist/frontend/assets/roboto-symbols-700-normal-BiFDindJ.woff2 +0 -0
  61. package/dist/frontend/assets/roboto-symbols-700-normal-BoS6HWkc.woff +0 -0
  62. package/dist/frontend/assets/roboto-vietnamese-300-normal-BPvXm_f1.woff2 +0 -0
  63. package/dist/frontend/assets/roboto-vietnamese-300-normal-INUupD3o.woff +0 -0
  64. package/dist/frontend/assets/roboto-vietnamese-400-normal-D2PTxGxD.woff2 +0 -0
  65. package/dist/frontend/assets/{roboto-vietnamese-400-normal-DmXaN3yE.woff → roboto-vietnamese-400-normal-DnpnVwnf.woff} +0 -0
  66. package/dist/frontend/assets/roboto-vietnamese-500-normal-B3ncpOoB.woff2 +0 -0
  67. package/dist/frontend/assets/{roboto-vietnamese-500-normal-DW96CsrR.woff → roboto-vietnamese-500-normal-D380IkQ8.woff} +0 -0
  68. package/dist/frontend/assets/roboto-vietnamese-700-normal-BEVeWqJt.woff2 +0 -0
  69. package/dist/frontend/assets/{roboto-vietnamese-700-normal-Dz0HwF-w.woff → roboto-vietnamese-700-normal-DsFyXAL4.woff} +0 -0
  70. package/dist/frontend/assets/vitesse-dark-tyNGF42e.js +1 -0
  71. package/dist/frontend/assets/vitesse-light-B2NYzK0e.js +1 -0
  72. package/dist/frontend/index.html +2 -2
  73. package/package.json +5 -7
  74. package/dist/backend/cli.js.map +0 -7
  75. package/dist/frontend/assets/index-BNdBOwwe.css +0 -1
  76. package/dist/frontend/assets/index-DRgMVTsn.js +0 -499
  77. package/dist/frontend/assets/javascript-ySlJ1b_l.js +0 -1
  78. package/dist/frontend/assets/roboto-cyrillic-300-normal-BoeCr7ev.woff2 +0 -0
  79. package/dist/frontend/assets/roboto-cyrillic-300-normal-D568C3aM.woff +0 -0
  80. package/dist/frontend/assets/roboto-cyrillic-400-normal-DAIM1_dR.woff2 +0 -0
  81. package/dist/frontend/assets/roboto-cyrillic-500-normal-hCeO1jFL.woff2 +0 -0
  82. package/dist/frontend/assets/roboto-cyrillic-700-normal-BiSG5NnW.woff2 +0 -0
  83. package/dist/frontend/assets/roboto-cyrillic-ext-300-normal-CUPJdUZp.woff2 +0 -0
  84. package/dist/frontend/assets/roboto-cyrillic-ext-300-normal-DQdcc27I.woff +0 -0
  85. package/dist/frontend/assets/roboto-cyrillic-ext-400-normal-DzMWdK87.woff2 +0 -0
  86. package/dist/frontend/assets/roboto-cyrillic-ext-500-normal-B7rQpwPu.woff2 +0 -0
  87. package/dist/frontend/assets/roboto-cyrillic-ext-500-normal-C927yMrb.woff +0 -0
  88. package/dist/frontend/assets/roboto-cyrillic-ext-700-normal-BuQgZIrO.woff +0 -0
  89. package/dist/frontend/assets/roboto-cyrillic-ext-700-normal-UFn0vR9r.woff2 +0 -0
  90. package/dist/frontend/assets/roboto-greek-300-normal-CTj2MfNN.woff +0 -0
  91. package/dist/frontend/assets/roboto-greek-300-normal-Cnub06j7.woff2 +0 -0
  92. package/dist/frontend/assets/roboto-greek-400-normal-jFM2czAU.woff2 +0 -0
  93. package/dist/frontend/assets/roboto-greek-500-normal-BJMS0heP.woff2 +0 -0
  94. package/dist/frontend/assets/roboto-greek-700-normal-BcGn9doz.woff2 +0 -0
  95. package/dist/frontend/assets/roboto-latin-300-normal-CztWkFGs.woff2 +0 -0
  96. package/dist/frontend/assets/roboto-latin-300-normal-KByCBsad.woff +0 -0
  97. package/dist/frontend/assets/roboto-latin-400-normal-CNwBRw8h.woff2 +0 -0
  98. package/dist/frontend/assets/roboto-latin-500-normal-CC5nhZkh.woff +0 -0
  99. package/dist/frontend/assets/roboto-latin-500-normal-CkrA1NAy.woff2 +0 -0
  100. package/dist/frontend/assets/roboto-latin-700-normal-CXeAXeti.woff2 +0 -0
  101. package/dist/frontend/assets/roboto-latin-700-normal-DUekQERp.woff +0 -0
  102. package/dist/frontend/assets/roboto-latin-ext-300-normal-BOz0oSmX.woff2 +0 -0
  103. package/dist/frontend/assets/roboto-latin-ext-300-normal-Tcf9y2tg.woff +0 -0
  104. package/dist/frontend/assets/roboto-latin-ext-400-normal-ZYmyxeOy.woff2 +0 -0
  105. package/dist/frontend/assets/roboto-latin-ext-400-normal-eTRLN0Nt.woff +0 -0
  106. package/dist/frontend/assets/roboto-latin-ext-500-normal-C_ARlJGk.woff2 +0 -0
  107. package/dist/frontend/assets/roboto-latin-ext-500-normal-FFcS8vBN.woff +0 -0
  108. package/dist/frontend/assets/roboto-latin-ext-700-normal-70GS1MYH.woff2 +0 -0
  109. package/dist/frontend/assets/roboto-latin-ext-700-normal-BS1OuQqR.woff +0 -0
  110. package/dist/frontend/assets/roboto-math-300-normal-BMxwzQmU.woff2 +0 -0
  111. package/dist/frontend/assets/roboto-math-300-normal-BU9CUCyj.woff +0 -0
  112. package/dist/frontend/assets/roboto-math-400-normal-B3wgz80t.woff2 +0 -0
  113. package/dist/frontend/assets/roboto-math-500-normal-CFNaIMFC.woff2 +0 -0
  114. package/dist/frontend/assets/roboto-math-700-normal-VUAI6Bz2.woff2 +0 -0
  115. package/dist/frontend/assets/roboto-math-700-normal-pYD1nhov.woff +0 -0
  116. package/dist/frontend/assets/roboto-symbols-300-normal-BtHl5mYl.woff2 +0 -0
  117. package/dist/frontend/assets/roboto-symbols-300-normal-kyoSXp-d.woff +0 -0
  118. package/dist/frontend/assets/roboto-symbols-400-normal-Tzuungub.woff +0 -0
  119. package/dist/frontend/assets/roboto-symbols-400-normal-fF1SLJBj.woff2 +0 -0
  120. package/dist/frontend/assets/roboto-symbols-500-normal-BXFTxrNR.woff2 +0 -0
  121. package/dist/frontend/assets/roboto-symbols-500-normal-CAhAe-ik.woff +0 -0
  122. package/dist/frontend/assets/roboto-symbols-700-normal-CuuvBBxy.woff +0 -0
  123. package/dist/frontend/assets/roboto-symbols-700-normal-rJi6RjIy.woff2 +0 -0
  124. package/dist/frontend/assets/roboto-vietnamese-300-normal-CNeuLW5X.woff2 +0 -0
  125. package/dist/frontend/assets/roboto-vietnamese-300-normal-DXBG9gdz.woff +0 -0
  126. package/dist/frontend/assets/roboto-vietnamese-400-normal-CDDxGrUb.woff2 +0 -0
  127. package/dist/frontend/assets/roboto-vietnamese-500-normal-HYpufUYk.woff2 +0 -0
  128. package/dist/frontend/assets/roboto-vietnamese-700-normal-iKxYNAzq.woff2 +0 -0
  129. package/dist/frontend/assets/vitesse-dark-D0r3Knsf.js +0 -1
  130. package/dist/frontend/assets/vitesse-light-CVO1_9PV.js +0 -1
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.38 | Production-ready, recommended for most users |
40
+ | **Stable** | `main` | v2.0.42 | 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,15 +52,47 @@ of port forwarding etc.
52
52
  ## 🎉 What's New
53
53
 
54
54
  <details>
55
- <summary><strong>📦 Stable Features (v2.0.38)</strong> - Click to expand</summary>
55
+ <summary><strong>📦 Stable Features (v2.0.42)</strong> - Click to expand</summary>
56
56
 
57
- **HOTFIX (post v2.0.38):**
57
+ **New in v2.0.42 (hotfix release):**
58
+
59
+ - 🇯🇵 Aqara bridge registration no longer stalls — root `softwareVersionString` now matches the numeric `softwareVersion` ([#316](https://github.com/RiDDiX/home-assistant-matter-hub/issues/316))
60
+ - ❄️ Climate `auto` mode is clamped to `heat`/`cool` on devices without an `AutoMode` base ([#319](https://github.com/RiDDiX/home-assistant-matter-hub/issues/319))
61
+ - 🌀 Per-entity `disableClimateFanControl` mapping flag — falls back to `ThermostatDevice` when controllers like Aqara don't recognise `RoomAirConditioner` (`0x0072`) ([#318](https://github.com/RiDDiX/home-assistant-matter-hub/issues/318))
62
+ - 🗺️ Vacuum service area `selectedAreas` is kept after dispatch instead of being cleared
63
+
64
+ **Previously in v2.0.41:**
65
+
66
+ | Feature | Description |
67
+ |---------|-------------|
68
+ | 🌡️ Google Home AC offline fix | `DeadFrontBehavior` on climate OnOff cluster so RoomAirConditioner stops showing offline on Google Home ([#302](https://github.com/RiDDiX/home-assistant-matter-hub/issues/302)) |
69
+ | 🪟 Cover device_class mapping | Map HA `garage`/`gate`/`window`/`awning`/etc. to the matching Matter WindowCovering type so voice commands hit the right device type ([#304](https://github.com/RiDDiX/home-assistant-matter-hub/issues/304)) |
70
+ | 📺 LG TV commissioning patch | Local patch on matter.js 0.16.11 to accept long NOC operational cert serials ([#305](https://github.com/RiDDiX/home-assistant-matter-hub/issues/305)) |
71
+ | 💡 Alexa brightness-reset behind flag | Old Alexa brightness-reset heuristic moved behind `alexaPreserveBrightnessOnTurnOn`, default off — Apple Home "set room to 100%" works again ([#306](https://github.com/RiDDiX/home-assistant-matter-hub/issues/306)) |
72
+ | 🌀 Google Home fan speed | Uses `fan.set_percentage` so already-on fans pick up speed changes from Google Home ([#308](https://github.com/RiDDiX/home-assistant-matter-hub/issues/308)) |
73
+ | ❄️ Climate auto mode | Expose Matter Auto mode when HA reports `auto` in `hvac_modes` ([#309](https://github.com/RiDDiX/home-assistant-matter-hub/issues/309)) |
74
+ | 🆔 Server-mode root identity | Root identity now applies as a single transaction, so controllers don't drop devices mid-swap ([#311](https://github.com/RiDDiX/home-assistant-matter-hub/issues/311)) |
75
+ | 🪟 Lift-only blinds | No more `TiltBlindTiltOnly` on covers without tilt — fixes Alexa routines for roller blinds ([#312](https://github.com/RiDDiX/home-assistant-matter-hub/issues/312)) |
76
+ | 🏷️ Per-entity `disableClimateOnOff` | Turn off the OnOff cluster on climate endpoints per entity for controllers that prefer mode-only control |
77
+ | 🔢 `serialNumberSuffix` per bridge | Append a suffix to every entity serial — useful if controllers like Aqara cache stale device data |
78
+ | 📝 `protocolLogLevel` option | Quiet matter.js logs independently from the app log level |
79
+ | 🖥️ Bridge HW/SW version strings | HA device-registry `hw_version`/`sw_version` now show up in Matter BasicInformation on server-mode endpoints |
80
+ | 🎨 Extended color light: XY + enhancedColorMode | XY feature added as mandatory, `enhancedColorMode` mirrors `colorMode` |
81
+ | 🎭 Groups + Scenes | Scenes and Groups clusters added on light, plug, and fan endpoints |
82
+ | 💧 Boolean state configuration | Cluster added on leak, freeze, rain, and contact sensors |
83
+ | 🌍 Spanish translation | New `es` locale ([#314](https://github.com/RiDDiX/home-assistant-matter-hub/pull/314), thanks [@Yllelder](https://github.com/Yllelder)) |
84
+ | 🧵 Matter.js 0.16.11 (pinned) | Kept pinned, local NOC serial patch applied |
85
+ | ⬆️ Dep bumps | Vite 8, jsdom 29, MUI x-tree-view 9, i18next 26, react-i18next 17, TypeScript 6.0.3, biome pinned 2.4.3, pnpm overrides for transitive CVEs |
86
+
87
+ **Reliability & resilience:** parallel bridge stop in `stopAll`/`restartAll`, parallel HA registry fetches, serialized bridge start/stop lifecycle, serialized `updateStates` with plugin listener detach, HA reconnect retry on transient network errors, 30s timeout on `sendMessagePromise`, port-conflict reject on web-api start, graceful shutdown on `/api/backup/restart`, `AppEnvironment` disposal on SIGINT, stale optimistic state sweep, pending debouncer clear, healthcheck 401 fix under basic auth, deep-equal entity attribute comparison, overlap guard for auto-refresh, safer mireds conversion, aligned `colorMode` publishing, surfaced bridge import errors, corrected thermostat running state for unknown modes + drying, unified Node version across Dockerfiles, sourcemaps excluded from npm tarball, unused deps dropped (rxjs, strip-color, lodash), unused `config-validator` utility removed.
88
+
89
+ **Previously in v2.0.39 & v2.0.40 (hotfix releases):**
58
90
  - Fixed crash loop on startup caused by Node 22 native WebSocket dropping connections ([#297](https://github.com/RiDDiX/home-assistant-matter-hub/issues/297), [#299](https://github.com/RiDDiX/home-assistant-matter-hub/issues/299)) — affects both aarch64 (RPi) and amd64
59
91
  - Fixed service initialization errors being silently swallowed, causing the process to hang instead of exiting
60
92
  - Registry fetch now waits for WebSocket reconnect between retries and has increased retry tolerance
61
93
  - Fixed `select`, `input_select`, `siren` domains showing as unsupported in filter preview ([#298](https://github.com/RiDDiX/home-assistant-matter-hub/issues/298))
62
94
 
63
- **New in v2.0.38:**
95
+ **Previously in v2.0.38:**
64
96
 
65
97
  | Feature | Description |
66
98
  |---------|-------------|
@@ -102,7 +134,7 @@ of port forwarding etc.
102
134
  <details>
103
135
  <summary><strong>🧪 Alpha Features (v2.1.0-alpha.x)</strong> - Click to expand</summary>
104
136
 
105
- **Alpha is currently level with Stable (v2.0.38).** All alpha features from the v2.1.0-alpha.600 line have been promoted into v2.0.38. New alpha work continues from `v2.1.0-alpha.601` onward and will appear here as development progresses.
137
+ **Alpha is currently level with Stable (v2.0.42).** All alpha work through `v2.1.0-alpha.633` has been promoted into v2.0.42. New alpha work continues from `v2.1.0-alpha.634` onward and will appear here as development progresses.
106
138
 
107
139
  </details>
108
140
 
@@ -128,6 +160,12 @@ of port forwarding etc.
128
160
  <details>
129
161
  <summary><strong>📜 Previous Stable Versions</strong> - Click to expand</summary>
130
162
 
163
+ ### v2.0.40
164
+ Filter preview domain fix — `select`, `input_select`, `siren` now show as supported ([#298](https://github.com/RiDDiX/home-assistant-matter-hub/issues/298))
165
+
166
+ ### v2.0.39
167
+ Node 22 WebSocket crash loop fix ([#297](https://github.com/RiDDiX/home-assistant-matter-hub/issues/297), [#299](https://github.com/RiDDiX/home-assistant-matter-hub/issues/299)), service init error surfacing, registry retry hardening, support link added
168
+
131
169
  ### v2.0.37
132
170
  Aqara productNameFromNodeLabel flag, Matter.js 0.16.11, Swedish locale update
133
171
 
@@ -434,6 +472,7 @@ This project thrives thanks to the amazing community! Special thanks to everyone
434
472
  | [@omerfaruk-aran](https://github.com/omerfaruk-aran) | 🔧 **Network Debugging Expert** - Systematic mDNS/multicast root cause analysis for "No Response" issues ([#129](https://github.com/RiDDiX/home-assistant-matter-hub/issues/129)) |
435
473
  | [@gustavakerstrom](https://github.com/gustavakerstrom) | 🤖 **Code Contributor** - Template description display fix ([#215](https://github.com/RiDDiX/home-assistant-matter-hub/pull/215)) |
436
474
  | [@aetasoul](https://github.com/aetasoul) | 🤖 **Code Contributor** - Immediate force sync on startup to beat stale Alexa queues ([#282](https://github.com/RiDDiX/home-assistant-matter-hub/pull/282)) |
475
+ | [@Yllelder](https://github.com/Yllelder) | 🌐 **Translator** - Spanish translation ([#314](https://github.com/RiDDiX/home-assistant-matter-hub/pull/314)) |
437
476
 
438
477
  <details>
439
478
  <summary><strong>📋 Issue Tracker - All Contributors</strong> (click to expand)</summary>