@homebridge-plugins/homebridge-updater 3.1.7 → 3.1.9-beta.0
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/CHANGELOG.md +287 -0
- package/CLAUDE.md +43 -0
- package/README.md +59 -117
- package/config.schema.json +7 -0
- package/dist/Platform.HAP.js +1 -1
- package/dist/Platform.HAP.js.map +1 -1
- package/dist/Platform.HAP.test.js +12 -11
- package/dist/Platform.HAP.test.js.map +1 -1
- package/dist/Platform.Matter.js +1 -1
- package/dist/Platform.Matter.js.map +1 -1
- package/dist/Platform.Matter.test.js +1 -1
- package/dist/configMigration.d.ts.map +1 -1
- package/dist/configMigration.js +1 -1
- package/dist/configMigration.js.map +1 -1
- package/dist/configMigration.test.js +3 -3
- package/dist/configMigration.test.js.map +1 -1
- package/dist/configTypes.d.ts +1 -0
- package/dist/configTypes.d.ts.map +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/sensorBase.d.ts +2 -0
- package/dist/sensorBase.d.ts.map +1 -1
- package/dist/sensorBase.js +16 -4
- package/dist/sensorBase.js.map +1 -1
- package/dist/ui-api.d.ts +22 -0
- package/dist/ui-api.d.ts.map +1 -1
- package/dist/ui-api.js +80 -9
- package/dist/ui-api.js.map +1 -1
- package/dist/updateCheckCore.autoupdate.test.d.ts +2 -0
- package/dist/updateCheckCore.autoupdate.test.d.ts.map +1 -0
- package/dist/updateCheckCore.autoupdate.test.js +55 -0
- package/dist/updateCheckCore.autoupdate.test.js.map +1 -0
- package/dist/updateCheckCore.beta.test.d.ts +2 -0
- package/dist/updateCheckCore.beta.test.d.ts.map +1 -0
- package/dist/updateCheckCore.beta.test.js +48 -0
- package/dist/updateCheckCore.beta.test.js.map +1 -0
- package/dist/updateCheckCore.d.ts +29 -0
- package/dist/updateCheckCore.d.ts.map +1 -1
- package/dist/updateCheckCore.js +181 -19
- package/dist/updateCheckCore.js.map +1 -1
- package/dist/updateCheckCore.route.test.d.ts +2 -0
- package/dist/updateCheckCore.route.test.d.ts.map +1 -0
- package/dist/updateCheckCore.route.test.js +71 -0
- package/dist/updateCheckCore.route.test.js.map +1 -0
- package/dist/updateSensor.d.ts.map +1 -1
- package/dist/updateSensor.js +16 -2
- package/dist/updateSensor.js.map +1 -1
- package/dist/updateSensor.test.js +61 -15
- package/dist/updateSensor.test.js.map +1 -1
- package/dist/utils.test.js +6 -6
- package/dist/utils.test.js.map +1 -1
- package/package.json +22 -30
- package/typedoc.json +17 -0
package/CHANGELOG.md
ADDED
|
@@ -0,0 +1,287 @@
|
|
|
1
|
+
## v3.1.9 (Pending Release)
|
|
2
|
+
|
|
3
|
+
### Changed
|
|
4
|
+
|
|
5
|
+
- chore(github): release on a published github release, not every push to latest
|
|
6
|
+
- chore(github): align workflows, funding and issue templates with the other org plugins
|
|
7
|
+
- chore: standardise the eslint setup and apply the org lint rules
|
|
8
|
+
- chore: align the npm publishing files with the other org plugins
|
|
9
|
+
- chore: standardise the package manifest with the other org plugins
|
|
10
|
+
- docs: add claude and copilot instructions files
|
|
11
|
+
- docs: use the standard org readme banner
|
|
12
|
+
- chore(deps): dependency updates
|
|
13
|
+
- fix(matter): register a carbon dioxide sensor on the air quality cluster so its state updates instead of failing (#256)
|
|
14
|
+
- fix: propagate a renamed sensor from the config to the cached accessory so the new name reaches homekit (#251)
|
|
15
|
+
- feat: detect homebridge ui beta updates when the ui update policy is set to beta (#255)
|
|
16
|
+
- fix: stop auto-update restarting homebridge in a loop when an update installs but is still reported as out of date (#257)
|
|
17
|
+
- feat: add an option to auto-update only minor and patch versions, leaving major versions to install manually (#263)
|
|
18
|
+
- fix: perform auto-updates through the homebridge ui so they install to the correct plugin path and actually take effect on hb-service and docker setups (#257)
|
|
19
|
+
- fix: detect when running under the homebridge docker image so docker image updates are actually checked (#264)
|
|
20
|
+
|
|
21
|
+
## [3.1.7](https://github.com/homebridge-plugins/homebridge-updater/compare/tag/v3.1.7) (2026-06-03)
|
|
22
|
+
|
|
23
|
+
### Changes
|
|
24
|
+
|
|
25
|
+
* chore: update `.gitignore` to ignore webstorm files
|
|
26
|
+
* chore: dependency updates
|
|
27
|
+
* fix(ui-api): send correct instanceId so JWTs pass UI auth on v5.24.0+
|
|
28
|
+
|
|
29
|
+
## [3.1.2](https://github.com/homebridge-plugins/homebridge-updater/compare/tag/v3.1.2) (2026-05-05)
|
|
30
|
+
|
|
31
|
+
### Bug Fixes
|
|
32
|
+
|
|
33
|
+
* persist failureSensorType to JSON config by marking it required in schema ([#245](https://github.com/homebridge-plugins/homebridge-updater/issues/245)) ([accf14b](https://github.com/homebridge-plugins/homebridge-updater/commit/accf14b8343609b4534bdf9224d9866505dd056f))
|
|
34
|
+
* fix scoped plugin upgrade clearing config: migrate `PluginUpdate` → `HomebridgeUpdater` by reading `config.json` directly instead of relying on the Homebridge UI API, which cannot return legacy platform entries for the new plugin name ([#246](https://github.com/homebridge-plugins/homebridge-updater/issues/246))
|
|
35
|
+
|
|
36
|
+
**Full Changelog**: https://github.com/homebridge-plugins/homebridge-updater/compare/v3.1.0...v3.1.2
|
|
37
|
+
|
|
38
|
+
## [3.1.0](https://github.com/homebridge-plugins/homebridge-updater/compare/tag/v3.1.0) (2026-05-04)
|
|
39
|
+
|
|
40
|
+
### Enhancements
|
|
41
|
+
|
|
42
|
+
* **Config `Platform` must be manually updated to `HomebridgeUpdater` instead of `PluginUpdate`.**
|
|
43
|
+
|
|
44
|
+
**Full Changelog**: https://github.com/homebridge-plugins/homebridge-updater/compare/v3.0.7...v3.1.0
|
|
45
|
+
|
|
46
|
+
## [3.0.7](https://github.com/homebridge-plugins/homebridge-updater/compare/tag/v3.0.7) (2026-05-04)
|
|
47
|
+
|
|
48
|
+
### Bug Fixes
|
|
49
|
+
|
|
50
|
+
* Fixed Homebridge Config UI layout rendering by moving `layout` to the top level of `config.schema.json` so the collapsible **Advanced Settings** fieldset is shown and applied correctly.
|
|
51
|
+
|
|
52
|
+
**Full Changelog**: https://github.com/homebridge-plugins/homebridge-updater/compare/v3.0.6...v3.0.7
|
|
53
|
+
|
|
54
|
+
## [3.0.6](https://github.com/homebridge-plugins/homebridge-updater/compare/tag/v3.0.6) (2026-05-03)
|
|
55
|
+
|
|
56
|
+
### Enhancements
|
|
57
|
+
|
|
58
|
+
* Added npm update support:
|
|
59
|
+
* New `checkNpmUpdates` option to detect newer npm versions.
|
|
60
|
+
* New `autoUpdateNpm` option to automatically update npm.
|
|
61
|
+
* npm support is now environment-safe:
|
|
62
|
+
* If npm is unavailable, npm checks are skipped without crashing.
|
|
63
|
+
* If `autoUpdateNpm` is enabled but npm is unavailable, a clear warning is logged and failure state is tracked.
|
|
64
|
+
* Simplified Matter selection config:
|
|
65
|
+
* Removed `preferMatter` from user config and schema.
|
|
66
|
+
* Protocol selection now auto-prefers Matter when available and `enableMatter` is true.
|
|
67
|
+
* Reordered Config UI fields in `config.schema.json` into a more logical top-to-bottom flow.
|
|
68
|
+
|
|
69
|
+
### Bug Fixes
|
|
70
|
+
|
|
71
|
+
* Improved Homebridge UI action request compatibility for restart/backup flows:
|
|
72
|
+
* Added JSON request headers/content-length for action endpoints.
|
|
73
|
+
* Added restart method fallback (`PUT` then `POST`) to support API variations across UI versions.
|
|
74
|
+
* Reduces `HTTP 415 Unsupported Media Type` restart failures.
|
|
75
|
+
|
|
76
|
+
### Documentation
|
|
77
|
+
|
|
78
|
+
* Updated README for new npm options and behavior when npm is not installed.
|
|
79
|
+
* Removed `preferMatter` from README examples and option table.
|
|
80
|
+
|
|
81
|
+
**Full Changelog**: https://github.com/homebridge-plugins/homebridge-updater/compare/v3.0.5...v3.0.6
|
|
82
|
+
|
|
83
|
+
## [3.0.5](https://github.com/homebridge-plugins/homebridge-updater/compare/tag/v3.0.5) (2026-05-03)
|
|
84
|
+
|
|
85
|
+
### Bug Fixes
|
|
86
|
+
|
|
87
|
+
* Fixed restart API calls not detecting HTTP error responses (4xx/5xx) — error responses are now properly rejected instead of treated as successful
|
|
88
|
+
* Improved restart logging to show actual API response details and endpoint-specific error messages for better diagnostics
|
|
89
|
+
|
|
90
|
+
**Full Changelog**: https://github.com/homebridge-plugins/homebridge-updater/compare/v3.0.4...v3.0.5
|
|
91
|
+
|
|
92
|
+
## [3.0.4](https://github.com/homebridge-plugins/homebridge-updater/compare/tag/v3.0.4) (2026-05-03)
|
|
93
|
+
|
|
94
|
+
### Bug Fixes
|
|
95
|
+
|
|
96
|
+
* Fix update checks not starting after Homebridge restart ([#233](https://github.com/homebridge-plugins/homebridge-updater/pull/233)) — Cached accessory restoration was preventing scheduled checks and cron jobs from being initialized. Now checks are always started regardless of whether the accessory was newly created or restored from cache.
|
|
97
|
+
|
|
98
|
+
**Full Changelog**: https://github.com/homebridge-plugins/homebridge-updater/compare/v3.0.3...v3.0.4
|
|
99
|
+
|
|
100
|
+
## [3.0.3](https://github.com/homebridge-plugins/homebridge-updater/compare/tag/v3.0.3) (2026-05-03)
|
|
101
|
+
### Bug Fixes
|
|
102
|
+
|
|
103
|
+
* respect `failureSensorType: "none"` and auto-disable failure sensor when no auto-updates are configured ([#231](https://github.com/homebridge-plugins/homebridge-updater/issues/231)) ([c007709](https://github.com/homebridge-plugins/homebridge-updater/commit/c007709301063abe5df1ca3b24fae12c1f50e75e))
|
|
104
|
+
|
|
105
|
+
**Full Changelog**: https://github.com/homebridge-plugins/homebridge-updater/compare/v3.0.2...v3.0.3
|
|
106
|
+
|
|
107
|
+
## [3.0.2](https://github.com/homebridge-plugins/homebridge-updater/releases/tag/v3.0.2) (2026-05-02)
|
|
108
|
+
|
|
109
|
+
### Enhancements
|
|
110
|
+
- Refactored sensor handling into shared protocol abstractions with a new unified sensor base:
|
|
111
|
+
- Added `MatterSensor` and `HAPSensor` implementations in `src/sensorBase.ts`.
|
|
112
|
+
- Added `UpdateSensor` orchestration in `src/updateSensor.ts`.
|
|
113
|
+
- Simplified platform classes by delegating sensor behavior to shared abstractions.
|
|
114
|
+
- Improved runtime platform selection and startup behavior:
|
|
115
|
+
- Strengthened HAP/Matter proxy logic in `src/utils.ts`.
|
|
116
|
+
- Added explicit protocol selection flow from platform constructors to update sensor initialization.
|
|
117
|
+
- Added debug-level protocol selection logs for easier troubleshooting without noisy normal logs.
|
|
118
|
+
|
|
119
|
+
### Bug Fixes
|
|
120
|
+
- Fixed Matter startup regression where cached Matter accessories could be treated as orphaned on restart:
|
|
121
|
+
- Ensured stable proxy instantiation/delegation for Homebridge platform lifecycle handling.
|
|
122
|
+
- Improved Matter capability detection compatibility across Homebridge API shapes.
|
|
123
|
+
- Prevented mixed protocol registration by explicitly selecting `hap` or `matter` for sensor wiring.
|
|
124
|
+
- Hardened accessory handling across platform implementations:
|
|
125
|
+
- Improved update/failure sensor registration and restore behavior in both HAP and Matter paths.
|
|
126
|
+
|
|
127
|
+
### Other
|
|
128
|
+
- Updated tests for platform proxy behavior and protocol selection edge cases in `src/utils.test.ts`.
|
|
129
|
+
- Updated dependencies and lockfile metadata.
|
|
130
|
+
- Regenerated docs and TypeDoc assets.
|
|
131
|
+
|
|
132
|
+
**Full Changelog**: https://github.com/homebridge-plugins/homebridge-updater/compare/v3.0.1...v3.0.2
|
|
133
|
+
|
|
134
|
+
## [3.0.1](https://github.com/homebridge-plugins/homebridge-updater/releases/tag/v3.0.1) (2026-04-29)
|
|
135
|
+
|
|
136
|
+
### Bug Fixes
|
|
137
|
+
- Fixed crash in Matter platform when running under ESM: removed use of `require` and now initialize Docker detection synchronously for compatibility with Homebridge v2.0+ and Node.js ESM environments.
|
|
138
|
+
|
|
139
|
+
### Other
|
|
140
|
+
- Internal refactor: clarified ESM limitations for Docker detection in Matter platform constructor.
|
|
141
|
+
|
|
142
|
+
**Full Changelog**: https://github.com/homebridge-plugins/homebridge-updater/compare/v3.0.0...v3.0.1
|
|
143
|
+
|
|
144
|
+
## [3.0.0](https://github.com/homebridge-plugins/homebridge-updater/releases/tag/v3.0.0) (2026-04-29)
|
|
145
|
+
|
|
146
|
+
## What's Changed
|
|
147
|
+
### Enhancements
|
|
148
|
+
- Node.js update check and auto-update:
|
|
149
|
+
- The plugin can now check for new Node.js LTS versions and notify if an update is available. Controlled by the new `checkNodeUpdates` config option. Implements [#206](https://github.com/homebridge-plugins/homebridge-updater/issues/206).
|
|
150
|
+
- New config option: `autoUpdateNode` — If enabled, the plugin will attempt to automatically update Node.js using `hb-service update-node` when a new LTS version is detected and the system supports it.
|
|
151
|
+
- The plugin checks for `hb-service update-node` support before attempting the update, and logs the result (success or failure).
|
|
152
|
+
- If a Node.js update is available, a log line is emitted when the HomeKit/Matter sensor is tripped due to Node.js.
|
|
153
|
+
- The HomeKit/Matter sensor is now tripped if any update is available, including Node.js, Homebridge, UI, plugins, or Docker.
|
|
154
|
+
- Suppress or log at debug level when no updates are found, instead of always logging "Found 0 available update(s)". Fixes [#224](https://github.com/homebridge-plugins/homebridge-updater/issues/224).
|
|
155
|
+
- Log level for update notifications is now correct per update type (Homebridge, UI, plugins, Docker). Each update logs as info only if a new update is found for that type, otherwise as debug. Fixes [#225](https://github.com/homebridge-plugins/homebridge-updater/issues/225).
|
|
156
|
+
- Full Homebridge v2.0 Matter support with HAP fallback. Matter is now the default platform when available and enabled, with seamless fallback to HAP if not.
|
|
157
|
+
- Refactored to use a runtime proxy/factory pattern for platform selection (HAP vs Matter).
|
|
158
|
+
- Added `preferMatter`, `enableMatter`, `disableMatter`, and `externalAccessory` options to configuration and schema.
|
|
159
|
+
- Improved accessory registration and cleanup logic for both HAP and Matter, including external accessory support.
|
|
160
|
+
- Switched all HTTP(S) requests to native Node.js http/https modules with manual retry and DNS caching (cacheable-lookup). Removed axios and axios-retry dependencies.
|
|
161
|
+
- Updated documentation and schema for new features and options.
|
|
162
|
+
|
|
163
|
+
### Bug Fixes
|
|
164
|
+
- Croner cron jobs are now unref'd so they do not prevent Node.js from exiting cleanly. Fixes [#222](https://github.com/homebridge-plugins/homebridge-updater/issues/222).
|
|
165
|
+
- Accessory/device name now uses the configured `name` property as the HomeKit/Matter accessory name, not just the platform name. Fixes [#223](https://github.com/homebridge-plugins/homebridge-updater/issues/223).
|
|
166
|
+
|
|
167
|
+
### Other
|
|
168
|
+
- Added and updated tests for new config options and proxy logic. All tests pass.
|
|
169
|
+
- Updated all dependencies and removed unused packages for improved security and compatibility.
|
|
170
|
+
- General code cleanup, improved file/class naming, and import clarity.
|
|
171
|
+
|
|
172
|
+
**Full Changelog**: https://github.com/homebridge-plugins/homebridge-updater/compare/v2.3.7...v3.0.0
|
|
173
|
+
|
|
174
|
+
## [2.3.7](https://github.com/homebridge-plugins/homebridge-updater/releases/tag/v2.3.7) (2025-12-01)
|
|
175
|
+
|
|
176
|
+
### What's Changed
|
|
177
|
+
- Clamp max DNS cache TTL to prevent excessive warnings ([#208](https://github.com/homebridge-plugins/homebridge-updater/pull/208))
|
|
178
|
+
|
|
179
|
+
**Full Changelog**: https://github.com/homebridge-plugins/homebridge-updater/compare/v2.3.6...v2.3.7
|
|
180
|
+
|
|
181
|
+
## [2.3.6](https://github.com/homebridge-plugins/homebridge-updater/releases/tag/v2.3.6) (2025-11-01)
|
|
182
|
+
|
|
183
|
+
### What's Changed
|
|
184
|
+
- Add explicit warning when an outdated Homebridge UI (homebridge-config-ui-x) is detected, explaining that a newer UI version is required for full functionality ([#200](https://github.com/homebridge-plugins/homebridge-updater/pull/200))
|
|
185
|
+
- Clarify the requirement notice to better guide users on updating the Homebridge UI
|
|
186
|
+
- Housekeeping and updated dependencies.
|
|
187
|
+
|
|
188
|
+
**Full Changelog**: https://github.com/homebridge-plugins/homebridge-updater/compare/v2.3.5...v2.3.6
|
|
189
|
+
|
|
190
|
+
## [2.3.5](https://github.com/homebridge-plugins/homebridge-updater/releases/tag/v2.3.5) (2025-11-01)
|
|
191
|
+
|
|
192
|
+
### What's Changed
|
|
193
|
+
- Fix error where current Docker version is not found by @justjam2013 in https://github.com/homebridge-plugins/homebridge-updater/pull/166
|
|
194
|
+
- v2.3.5 by @donavanbecker in https://github.com/homebridge-plugins/homebridge-updater/pull/189
|
|
195
|
+
|
|
196
|
+
**Full Changelog**: https://github.com/homebridge-plugins/homebridge-updater/compare/v2.3.4...v2.3.5
|
|
197
|
+
|
|
198
|
+
## [2.3.4](https://github.com/homebridge-plugins/homebridge-updater/releases/tag/v2.3.4) (2025-09-14)
|
|
199
|
+
|
|
200
|
+
### What's Changed
|
|
201
|
+
- Fix error where current Docker version is not found by @justjam2013 in https://github.com/homebridge-plugins/homebridge-updater/pull/166
|
|
202
|
+
|
|
203
|
+
**Full Changelog**: https://github.com/homebridge-plugins/homebridge-updater/compare/v2.3.3...v2.3.4
|
|
204
|
+
|
|
205
|
+
## [2.3.3](https://github.com/homebridge-plugins/homebridge-updater/releases/tag/v2.3.3) (2025-09-14)
|
|
206
|
+
|
|
207
|
+
### What's Changed
|
|
208
|
+
- v2.3.3 ([b7a4c9e](https://github.com/homebridge-plugins/homebridge-updater/commit/b7a4c9ec2b079b6f3e51411311573080b281d97c))
|
|
209
|
+
|
|
210
|
+
**Full Changelog**: https://github.com/homebridge-plugins/homebridge-updater/compare/v2.3.2...v2.3.3
|
|
211
|
+
|
|
212
|
+
## [2.3.2](https://github.com/homebridge-plugins/homebridge-updater/releases/tag/v2.3.2) (2025-09-13)
|
|
213
|
+
|
|
214
|
+
### What's Changed
|
|
215
|
+
- Remove double variables for file and directory paths (#115) ([4743e21](https://github.com/homebridge-plugins/homebridge-updater/commit/4743e21c40bac30c1084d6ca0642f1d9ad723579))
|
|
216
|
+
- Remove npm-check-updates (NCU) option as it doesn't add value (#117) ([d8f5ee5](https://github.com/homebridge-plugins/homebridge-updater/commit/d8f5ee5dfc3886d665b646803fa48c1f6506abdb))
|
|
217
|
+
- Added cached dns lookup and retries (#118) ([f375adb](https://github.com/homebridge-plugins/homebridge-updater/commit/f375adb8c7a3bae35ff548c86c16a34e7daa037c))
|
|
218
|
+
- Add NodeJS 24 support by updating engines.node to ^20 || ^22 || ^24 (rebased against beta-2.3.2) (#123) ([f64de4d](https://github.com/homebridge-plugins/homebridge-updater/commit/f64de4d1f3f6d4bf46102b9ca14716360aba6ce0))
|
|
219
|
+
|
|
220
|
+
**Full Changelog**: https://github.com/homebridge-plugins/homebridge-updater/compare/v2.3.1...v2.3.2
|
|
221
|
+
|
|
222
|
+
## [2.3.1](https://github.com/homebridge-plugins/homebridge-updater/releases/tag/v2.3.1) (2025-09-03)
|
|
223
|
+
|
|
224
|
+
### What's Changed
|
|
225
|
+
- Merge branch 'latest' into beta-2.3.1 ([f30d910](https://github.com/homebridge-plugins/homebridge-updater/commit/f30d91080dd11fecafc84275bd078ce30e15fe2d))
|
|
226
|
+
- Fix NCU filter regex construction to detect plugin updates correctly (#92) ([32733d8](https://github.com/homebridge-plugins/homebridge-updater/commit/32733d889fc9bdcf0d58f279f387b105a36bfc06))
|
|
227
|
+
- v2.3.1 ([c6b1af1](https://github.com/homebridge-plugins/homebridge-updater/commit/c6b1af1844f90520bb9217171d6117c6425f58d9))
|
|
228
|
+
- Fix Homebridge restart failure: use PUT method and implement endpoint fallback (#101) ([feb32be](https://github.com/homebridge-plugins/homebridge-updater/commit/feb32befefd97a5f87155ca95f58ebb105a83471))
|
|
229
|
+
- Add name validation to prevent HomeKit pairing issues with child bridges (#91) ([4db28af](https://github.com/homebridge-plugins/homebridge-updater/commit/4db28afd90f4f5c21c10579d8d0da08e022ea8f6))
|
|
230
|
+
- Patch ncu (#99) ([d3b7a3f](https://github.com/homebridge-plugins/homebridge-updater/commit/d3b7a3f5326142f1aa54a6d5247546e6803d8b48))
|
|
231
|
+
- Parenthesis & patch ncu (#98) ([7796773](https://github.com/homebridge-plugins/homebridge-updater/commit/7796773d376e3ff936a9724109125fc1c671dd7f))
|
|
232
|
+
- resolve __dirname is not defined (#97) ([c295a20](https://github.com/homebridge-plugins/homebridge-updater/commit/c295a20962e982b449bd1296b0b02708e1fde058))
|
|
233
|
+
- Add automatic update functionality with configurable npm support, restart capability, automatic backup creation, and configurable failure notifications for Homebridge, UI, and plugins (#94) ([e58b488](https://github.com/homebridge-plugins/homebridge-updater/commit/e58b488edf02eccf801627314107a70f08c36693))
|
|
234
|
+
- Fix npm-check-updates CLI path for v16+ compatibility (#96) ([acf607c](https://github.com/homebridge-plugins/homebridge-updater/commit/acf607c9cd5944eb418b88a8465744cb942d1460))
|
|
235
|
+
- Update available update list (#89) ([bd84b83](https://github.com/homebridge-plugins/homebridge-updater/commit/bd84b83556c3bffdac0d35f15e1047f7c54e8887))
|
|
236
|
+
- Fix ReferenceError: __dirname is not defined in ESM module (#86) ([5668b01](https://github.com/homebridge-plugins/homebridge-updater/commit/5668b015900d708bbeb4a38d82fac14a7215f022))
|
|
237
|
+
|
|
238
|
+
**Full Changelog**: https://github.com/homebridge-plugins/homebridge-updater/compare/v2.3.0...v2.3.1
|
|
239
|
+
|
|
240
|
+
## [2.3.0](https://github.com/homebridge-plugins/homebridge-updater/releases/tag/v2.3.0) (2025-08-18)
|
|
241
|
+
|
|
242
|
+
### What's Changed
|
|
243
|
+
- Display newer updates in logs
|
|
244
|
+
|
|
245
|
+
**Full Changelog**: https://github.com/homebridge-plugins/homebridge-updater/compare/v2.2.1...v2.3.0
|
|
246
|
+
|
|
247
|
+
## [2.2.1](https://github.com/homebridge-plugins/homebridge-updater/releases/tag/v2.2.1) (2025-08-09)
|
|
248
|
+
|
|
249
|
+
### What's Changed
|
|
250
|
+
- Change logging to daily
|
|
251
|
+
- Fix log info output
|
|
252
|
+
|
|
253
|
+
## [2.1.0](https://github.com/homebridge-plugins/homebridge-updater/releases/tag/v2.1.0) (2025-08-09)
|
|
254
|
+
|
|
255
|
+
### What's Changed
|
|
256
|
+
- Output available updates to log
|
|
257
|
+
- Fix plugin update check
|
|
258
|
+
- Fixed version checks and added debug output
|
|
259
|
+
- Add docker version check and fixed NCU search
|
|
260
|
+
- Fixed field names
|
|
261
|
+
- Fix default check value
|
|
262
|
+
- Select which components to check for updates
|
|
263
|
+
- Fix Labler
|
|
264
|
+
- Build fixes and improvements
|
|
265
|
+
|
|
266
|
+
## [2.0.2](https://github.com/homebridge-plugins/homebridge-updater/releases/tag/v2.0.2) (2025-03-04)
|
|
267
|
+
|
|
268
|
+
### What's Changes
|
|
269
|
+
- Housekeeping and updated dependencies.
|
|
270
|
+
|
|
271
|
+
**Full Changelog**: https://github.com/homebridge-plugins/homebridge-updater/compare/v2.0.1...v2.0.2
|
|
272
|
+
|
|
273
|
+
## [2.0.1](https://github.com/homebridge-plugins/homebridge-updater/releases/tag/v2.0.1) (2025-01-25)
|
|
274
|
+
|
|
275
|
+
### What's Changes
|
|
276
|
+
- Housekeeping and updated dependencies.
|
|
277
|
+
|
|
278
|
+
**Full Changelog**: https://github.com/homebridge-plugins/homebridge-updater/compare/v2.0.0...v2.0.1
|
|
279
|
+
|
|
280
|
+
## [2.0.0](https://github.com/homebridge-plugins/homebridge-updater/releases/tag/v2.0.0) (2025-01-16)
|
|
281
|
+
|
|
282
|
+
### What's Changes
|
|
283
|
+
- This plugins has moved to a scoped plugin under the `@homebridge-plugins` org.
|
|
284
|
+
- Homebridge UI is designed to transition you to the new scoped plugin.
|
|
285
|
+
- Updated to ES Module
|
|
286
|
+
|
|
287
|
+
**Full Changelog**: https://github.com/homebridge-plugins/homebridge-updater/compare/v1.0.2...v2.0.0
|
package/CLAUDE.md
ADDED
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
# CLAUDE.md
|
|
2
|
+
|
|
3
|
+
This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.
|
|
4
|
+
|
|
5
|
+
## Commands
|
|
6
|
+
|
|
7
|
+
- `npm run build` — `rimraf ./dist && tsc && npm run plugin-ui`. The `plugin-ui` step rsyncs `src/homebridge-ui/public/index.html` into `dist/` (the custom settings UI). Skipping it produces a broken published package.
|
|
8
|
+
- `npm run lint` — ESLint over the whole repo with `--max-warnings=0`. CI fails on any warning. `npm run lint:fix` to autofix.
|
|
9
|
+
- `npm test` — vitest, colocated `src/**/*.test.ts` files (see `vitest.config.ts`). `npm run test:watch` and `npm run test-coverage` also available.
|
|
10
|
+
- `npm run watch` — build, `npm link`, then `nodemon`: recompiles and restarts on `src/**/*.ts` changes (see `nodemon.json`).
|
|
11
|
+
- `npm run docs` — typedoc into `docs/` (gitignored — generated output is never committed).
|
|
12
|
+
- `npm run prepublishOnly` — lint then build; runs automatically on publish.
|
|
13
|
+
|
|
14
|
+
CI (`.github/workflows/build.yml`) runs install + lint on Node 22.x/24.x. Releases publish via `.github/workflows/release.yml`: a GitHub release (tag `vX.Y.Z`) publishes to npm's `latest` tag; pushes to `beta-X.Y.Z` / `alpha-X.Y.Z` branches publish incrementing prerelease versions to the `beta` / `alpha` tags.
|
|
15
|
+
|
|
16
|
+
Supported Node: `^22.12.0 || ^24.0.0`. Homebridge: `^1.11.4 || ^2.0.0`.
|
|
17
|
+
|
|
18
|
+
## Architecture
|
|
19
|
+
|
|
20
|
+
Homebridge dynamic platform plugin (`platform: "HomebridgeUpdater"`, package `@homebridge-plugins/homebridge-updater`) that checks npm for newer versions of Homebridge itself and of installed plugins, and surfaces "an update is available" to HomeKit as a sensor. Unlike the other plugins it talks to no device — it reads the local Homebridge install and the public npm registry.
|
|
21
|
+
|
|
22
|
+
### HAP/Matter platform selection
|
|
23
|
+
|
|
24
|
+
`src/index.ts` registers a runtime proxy (`createPlatformProxy` in `src/utils.ts`) that instantiates the Matter platform (`src/Platform.Matter.ts`) when Homebridge reports Matter available+enabled, otherwise the HAP `src/Platform.HAP.ts`. Matter API calls must stay optional-chained.
|
|
25
|
+
|
|
26
|
+
### Update checking (`src/updateCheckCore.ts`)
|
|
27
|
+
|
|
28
|
+
Enumerates installed plugins and queries `registry.npmjs.org` (over `https` with a `cacheable-lookup` DNS cache) for the latest published version of each, plus the running Node/Homebridge versions. Checks are scheduled with `croner`. Results feed the sensors.
|
|
29
|
+
|
|
30
|
+
### Sensors (`src/updateSensor.ts`, `src/failureSensor.ts`, `src/sensorBase.ts`)
|
|
31
|
+
|
|
32
|
+
Each "update available" indicator is exposed as a HomeKit sensor whose **type is user-selectable** via `sensorType` in `PluginUpdatePlatformConfig` (`src/configTypes.ts`) — motion, contact, leak, occupancy, smoke, etc. `failureSensor.ts` reports when a check itself failed. `configMigration.ts` upgrades older config shapes on load.
|
|
33
|
+
|
|
34
|
+
### Custom UI backend (`src/ui-api.ts`)
|
|
35
|
+
|
|
36
|
+
The settings UI server signs a short-lived JWT (`jsonwebtoken`) to authenticate its own requests. `Buffer`/`process` are imported from `node:*` rather than used as globals.
|
|
37
|
+
|
|
38
|
+
## Conventions
|
|
39
|
+
|
|
40
|
+
- TypeScript ESM (`"type": "module"`): relative imports use `.js` extensions even from `.ts` source.
|
|
41
|
+
- ESLint is `@antfu/eslint-config` (flat config in `eslint.config.js`): single quotes, 1tbs braces, `curly` multi-line only (single-line guards must use full multi-line braces), sorted imports. Run `npm run lint:fix` before committing.
|
|
42
|
+
- `config.schema.json` defines the Homebridge UI form and must stay in sync with `PluginUpdatePlatformConfig` in `src/configTypes.ts`.
|
|
43
|
+
- Licensed BSD-2-Clause — keep the LICENSE and upstream attribution intact.
|
package/README.md
CHANGED
|
@@ -1,117 +1,59 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
-
|
|
11
|
-
-
|
|
12
|
-
-
|
|
13
|
-
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
-
|
|
59
|
-
-
|
|
60
|
-
- `humidity`
|
|
61
|
-
- `light`
|
|
62
|
-
- `air`
|
|
63
|
-
- `leak`
|
|
64
|
-
- `smoke`
|
|
65
|
-
- `dioxide`
|
|
66
|
-
- `monoxide`
|
|
67
|
-
|
|
68
|
-
`failureSensorType` also supports `none` to disable the failure sensor.
|
|
69
|
-
|
|
70
|
-
| Field | Description | Default |
|
|
71
|
-
| --- | --- | --- |
|
|
72
|
-
| `platform` | Must always be `HomebridgeUpdater` | Required |
|
|
73
|
-
| `name` | Accessory name shown in Home app | `Plugin Update` |
|
|
74
|
-
| `sensorType` | Sensor type for the main update sensor | `motion` |
|
|
75
|
-
| `failureSensorType` | Sensor type for auto-update failure status, or `none` to disable | `motion` |
|
|
76
|
-
| `checkNodeUpdates` | Check for newer Node.js LTS versions | `false` |
|
|
77
|
-
| `checkNpmUpdates` | Check for newer npm versions when npm is installed | `false` |
|
|
78
|
-
| `checkHomebridgeUpdates` | Check for Homebridge server updates | `true` |
|
|
79
|
-
| `checkHomebridgeUIUpdates` | Check for Homebridge Config UI updates | `true` |
|
|
80
|
-
| `checkPluginUpdates` | Check for installed plugin updates | `true` |
|
|
81
|
-
| `checkDockerUpdates` | Check for newer Docker image versions when running in Docker | `false` |
|
|
82
|
-
| `initialCheckDelay` | Delay in seconds before the first check after startup | `10` |
|
|
83
|
-
| `autoUpdateNode` | Automatically run Node.js updates using `hb-service update-node` when supported | `false` |
|
|
84
|
-
| `autoUpdateNpm` | Automatically update npm when a newer version is available | `false` |
|
|
85
|
-
| `autoUpdateHomebridge` | Automatically update Homebridge | `false` |
|
|
86
|
-
| `autoUpdateHomebridgeUI` | Automatically update Homebridge Config UI | `false` |
|
|
87
|
-
| `autoUpdatePlugins` | Automatically update plugins | `false` |
|
|
88
|
-
| `allowDirectNpmUpdates` | Allow direct npm update commands when UI API is unavailable | `false` |
|
|
89
|
-
| `autoRestartAfterUpdates` | Restart Homebridge after successful auto-updates | `false` |
|
|
90
|
-
| `respectDisabledPlugins` | Respect hidden update notifications configured in Homebridge UI | `true` |
|
|
91
|
-
| `enableMatter` | Enable Matter support when available in Homebridge | `true` |
|
|
92
|
-
|
|
93
|
-
## How It Works
|
|
94
|
-
|
|
95
|
-
- The plugin checks selected update sources on a schedule.
|
|
96
|
-
- If any enabled source has updates, the main sensor is set to active.
|
|
97
|
-
- If automatic updates are enabled and an update/restart fails, the failure sensor is set to active.
|
|
98
|
-
- If no auto-update options are enabled, the failure sensor is automatically not exposed.
|
|
99
|
-
|
|
100
|
-
## Automatic Updates
|
|
101
|
-
|
|
102
|
-
When automatic updates are enabled, the plugin will:
|
|
103
|
-
|
|
104
|
-
1. Attempt to create a backup before updates when Homebridge UI is available.
|
|
105
|
-
2. Perform configured updates (Node.js, Homebridge, Homebridge UI, plugins).
|
|
106
|
-
3. Optionally restart Homebridge if `autoRestartAfterUpdates` is enabled.
|
|
107
|
-
4. Surface failures through the failure sensor.
|
|
108
|
-
|
|
109
|
-
Automatic updates are disabled by default. Enable them only if your environment has appropriate permissions and you are comfortable with unattended updates.
|
|
110
|
-
|
|
111
|
-
If Homebridge UI is not configured, automatic updates require `allowDirectNpmUpdates: true`.
|
|
112
|
-
|
|
113
|
-
If npm is not installed in your environment, npm checks and npm auto-update are skipped safely.
|
|
114
|
-
|
|
115
|
-
## Docker Notes
|
|
116
|
-
|
|
117
|
-
Docker update checks are notification-only. The plugin does not attempt in-container self-updates by design, to avoid interrupting or corrupting the running container.
|
|
1
|
+
<p align="center">
|
|
2
|
+
<a href="https://github.com/homebridge-plugins/homebridge-updater"><img alt="homebridge-updater" src="https://raw.githubusercontent.com/homebridge-plugins/homebridge-updater/latest/branding/Homebridge_x_Updater.png" width="600px"></a>
|
|
3
|
+
</p>
|
|
4
|
+
<span align="center">
|
|
5
|
+
|
|
6
|
+
## homebridge-updater
|
|
7
|
+
|
|
8
|
+
Homebridge plugin that surfaces available Homebridge and plugin updates as HomeKit sensors
|
|
9
|
+
|
|
10
|
+
[](https://www.npmjs.com/package/@homebridge-plugins/homebridge-updater)
|
|
11
|
+
[](https://github.com/homebridge/homebridge/wiki/How-to-Install-Alternate-Plugin-Versions)<br>
|
|
12
|
+
[](https://www.npmjs.com/package/@homebridge-plugins/homebridge-updater)
|
|
13
|
+
[](https://discord.gg/bHjKNkN)
|
|
14
|
+
|
|
15
|
+
</span>
|
|
16
|
+
|
|
17
|
+
### Plugin Information
|
|
18
|
+
|
|
19
|
+
- This plugin checks for updates to Homebridge and your installed plugins, and exposes the result to HomeKit. The plugin:
|
|
20
|
+
- reads your local Homebridge install and queries the public npm registry - no account or device is required
|
|
21
|
+
- lets you choose which HomeKit sensor type represents "an update is available" (for example a motion, contact or occupancy sensor)
|
|
22
|
+
- can optionally expose the sensors over Matter as well as HomeKit
|
|
23
|
+
|
|
24
|
+
### Prerequisites
|
|
25
|
+
|
|
26
|
+
- To use this plugin, you will need to already have:
|
|
27
|
+
- [Node](https://nodejs.org): latest version of `v22` or `v24` - any other major version is not supported.
|
|
28
|
+
- [Homebridge](https://homebridge.io): `v2` - refer to link for more information and installation instructions.
|
|
29
|
+
|
|
30
|
+
### Setup
|
|
31
|
+
|
|
32
|
+
- [Installation](https://github.com/homebridge-plugins/homebridge-updater/wiki/Installation)
|
|
33
|
+
- [Configuration](https://github.com/homebridge-plugins/homebridge-updater/wiki/Configuration)
|
|
34
|
+
- [Beta Version](https://github.com/homebridge-plugins/homebridge-updater/wiki/Beta-Version)
|
|
35
|
+
- [Node Version](https://github.com/homebridge-plugins/homebridge-updater/wiki/Node-Version)
|
|
36
|
+
|
|
37
|
+
### Features
|
|
38
|
+
|
|
39
|
+
- A HomeKit sensor that trips when a Homebridge or plugin update is available
|
|
40
|
+
- Your choice of sensor type for the indicator
|
|
41
|
+
- A separate sensor that reports when an update check itself failed
|
|
42
|
+
- Scheduled, automatic re-checks
|
|
43
|
+
|
|
44
|
+
### Help/About
|
|
45
|
+
|
|
46
|
+
- [Common Errors](https://github.com/homebridge-plugins/homebridge-updater/wiki/Common-Errors)
|
|
47
|
+
- [Support Request](https://github.com/homebridge-plugins/homebridge-updater/issues/new/choose)
|
|
48
|
+
- [Changelog](https://github.com/homebridge-plugins/homebridge-updater/blob/latest/CHANGELOG.md)
|
|
49
|
+
- [About Me](https://github.com/sponsors/bwp91)
|
|
50
|
+
|
|
51
|
+
### Credits
|
|
52
|
+
|
|
53
|
+
- To David Maher (Sunoo): the original creator of this plugin.
|
|
54
|
+
- To the creators/contributors of [Homebridge](https://homebridge.io) who make this plugin possible.
|
|
55
|
+
|
|
56
|
+
### Disclaimer
|
|
57
|
+
|
|
58
|
+
- This plugin is a personal project that I maintain in my free time.
|
|
59
|
+
- Use this plugin entirely at your own risk - please see licence for more information.
|
package/config.schema.json
CHANGED
|
@@ -215,6 +215,12 @@
|
|
|
215
215
|
"description": "Automatically restart Homebridge after successful automatic updates to apply changes",
|
|
216
216
|
"default": false
|
|
217
217
|
},
|
|
218
|
+
"autoUpdateSkipMajorVersions": {
|
|
219
|
+
"title": "Skip major versions when auto-updating",
|
|
220
|
+
"type": "boolean",
|
|
221
|
+
"description": "Only auto-update minor and patch versions. New major versions are still shown as available but are left for you to install manually, to avoid unexpected breaking changes.",
|
|
222
|
+
"default": false
|
|
223
|
+
},
|
|
218
224
|
"uiNotice": {
|
|
219
225
|
"title": "",
|
|
220
226
|
"description": "Note: This feature may require updating Homebridge UI to a newer version. It is recommended to update to the latest version.",
|
|
@@ -250,6 +256,7 @@
|
|
|
250
256
|
"autoUpdatePlugins",
|
|
251
257
|
"allowDirectNpmUpdates",
|
|
252
258
|
"autoRestartAfterUpdates",
|
|
259
|
+
"autoUpdateSkipMajorVersions",
|
|
253
260
|
"uiNotice"
|
|
254
261
|
]
|
|
255
262
|
}
|
package/dist/Platform.HAP.js
CHANGED
|
@@ -31,7 +31,7 @@ export class PluginUpdatePlatform {
|
|
|
31
31
|
api.on('didFinishLaunching', this.handleLegacyMigration.bind(this));
|
|
32
32
|
this.updateSensor = new UpdateSensor(log, config, api, {
|
|
33
33
|
protocol: 'hap',
|
|
34
|
-
onFailureStateChange: isFailureSensorEnabled(config) ?
|
|
34
|
+
onFailureStateChange: isFailureSensorEnabled(config) ? failed => this.failureSensor.setState(failed) : undefined,
|
|
35
35
|
});
|
|
36
36
|
// Register the failure sensor accessory
|
|
37
37
|
api.on('didFinishLaunching', this.addFailureSensor.bind(this));
|
package/dist/Platform.HAP.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Platform.HAP.js","sourceRoot":"","sources":["../src/Platform.HAP.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAA;AAClD,OAAO,EAAE,uBAAuB,EAAE,6BAA6B,EAAE,aAAa,EAAE,WAAW,EAAE,sBAAsB,EAAE,MAAM,eAAe,CAAA;AAC1I,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA;AAChD,OAAO,EAAE,sBAAsB,EAAE,MAAM,YAAY,CAAA;AAEnD,MAAM,OAAO,oBAAoB;IACd,GAAG,CAAS;IACZ,MAAM,CAAgB;IACtB,GAAG,CAAK;IACjB,YAAY,CAAc;IAC1B,aAAa,CAAe;IACnB,gBAAgB,CAAQ;IACxB,sBAAsB,CAAQ;IAC9B,iBAAiB,CAAQ;IAClC,uBAAuB,GAAG,KAAK,CAAA;IAC/B,sBAAsB,CAAoB;IAClD,qFAAqF;IAC7E,2BAA2B,CAAoB;IACvD,6GAA6G;IACrG,4BAA4B,CAAoB;IACxD,mFAAmF;IAC3E,kBAAkB,GAAG,KAAK,CAAA;IAElC,YAAY,GAAY,EAAE,MAAsB,EAAE,GAAQ;QACxD,IAAI,CAAC,GAAG,GAAG,GAAG,CAAA;QACd,IAAI,CAAC,MAAM,GAAG,MAAM,CAAA;QACpB,IAAI,CAAC,GAAG,GAAG,GAAG,CAAA;QACd,IAAI,CAAC,gBAAgB,GAAG,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,sBAAsB,CAAC,CAAA;QACrE,IAAI,CAAC,sBAAsB,GAAG,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,6BAA6B,CAAC,CAAA;QAClF,IAAI,CAAC,iBAAiB,GAAG,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,uBAAuB,CAAC,CAAA;QACvE,IAAI,CAAC,aAAa,GAAG,IAAI,aAAa,CAAC,GAAG,EAAE,GAAG,EAAE,MAAM,CAAC,iBAAiB,IAAI,MAAM,CAAC,UAAU,EAAE,KAAK,CAAC,CAAA;QACtG,uFAAuF;QACvF,GAAG,CAAC,EAAE,CAAC,oBAAoB,EAAE,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAA;QACnE,IAAI,CAAC,YAAY,GAAG,IAAI,YAAY,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE;YACrD,QAAQ,EAAE,KAAK;YACf,oBAAoB,EAAE,sBAAsB,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,
|
|
1
|
+
{"version":3,"file":"Platform.HAP.js","sourceRoot":"","sources":["../src/Platform.HAP.ts"],"names":[],"mappings":"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"}
|