From f75a8954957bb8a74b392a48c84f891433feca54 Mon Sep 17 00:00:00 2001 From: Ben <43026681+bwp91@users.noreply.github.com> Date: Thu, 17 Jul 2025 16:30:14 +0100 Subject: [PATCH 1/2] update node engines to `^20.19.0 || ^22.12.0 || ^24.0.0` d --- CHANGELOG.md | 6 ++ package-lock.json | 8 +-- package.json | 2 +- ui/package-lock.json | 134 +++++++++++++++++++++---------------------- ui/package.json | 28 ++++----- 5 files changed, 92 insertions(+), 86 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 81405fc87..374da999c 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,12 @@ All notable changes to `homebridge-config-ui-x` will be documented in this file. This project tries to adhere to [Semantic Versioning](http://semver.org/). +## v5.2.0 (Unreleased) + +### Other Changes + +- update node engines to `^20.19.0 || ^22.12.0 || ^24.0.0` + ## v5.1.0 (2025-07-17) ⚠️ If you have not yet updated to the `5.x` branch of Homebridge UI, please read the breaking changes in the changelog before updating. diff --git a/package-lock.json b/package-lock.json index 4a59c79e3..715473977 100644 --- a/package-lock.json +++ b/package-lock.json @@ -90,7 +90,7 @@ }, "engines": { "homebridge": "^1.8.0 || ^2.0.0-beta.0", - "node": "^20 || ^22 || ^24" + "node": "^20.19.0 || ^22.12.0 || ^24.0.0" } }, "node_modules/@ampproject/remapping": { @@ -4954,9 +4954,9 @@ } }, "node_modules/electron-to-chromium": { - "version": "1.5.186", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.186.tgz", - "integrity": "sha512-lur7L4BFklgepaJxj4DqPk7vKbTEl0pajNlg2QjE5shefmlmBLm2HvQ7PMf1R/GvlevT/581cop33/quQcfX3A==", + "version": "1.5.187", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.187.tgz", + "integrity": "sha512-cl5Jc9I0KGUoOoSbxvTywTa40uspGJt/BDBoDLoxJRSBpWh4FFXBsjNRHfQrONsV/OoEjDfHUmZQa2d6Ze4YgA==", "dev": true, "license": "ISC" }, diff --git a/package.json b/package.json index 437153666..dadeb5a77 100644 --- a/package.json +++ b/package.json @@ -55,7 +55,7 @@ "hb-service": "dist/bin/hb-service.js" }, "engines": { - "node": "^20 || ^22 || ^24", + "node": "^20.19.0 || ^22.12.0 || ^24.0.0", "homebridge": "^1.8.0 || ^2.0.0-beta.0" }, "scripts": { diff --git a/ui/package-lock.json b/ui/package-lock.json index 08d59b25a..d057b885d 100644 --- a/ui/package-lock.json +++ b/ui/package-lock.json @@ -10,15 +10,15 @@ "hasInstallScript": true, "license": "MIT", "dependencies": { - "@angular/animations": "20.1.1", - "@angular/common": "20.1.1", - "@angular/compiler": "20.1.1", - "@angular/core": "20.1.1", - "@angular/forms": "20.1.1", - "@angular/localize": "20.1.1", - "@angular/platform-browser": "20.1.1", - "@angular/platform-browser-dynamic": "20.1.1", - "@angular/router": "20.1.1", + "@angular/animations": "20.1.2", + "@angular/common": "20.1.2", + "@angular/compiler": "20.1.2", + "@angular/core": "20.1.2", + "@angular/forms": "20.1.2", + "@angular/localize": "20.1.2", + "@angular/platform-browser": "20.1.2", + "@angular/platform-browser-dynamic": "20.1.2", + "@angular/router": "20.1.2", "@auth0/angular-jwt": "5.2.0", "@homebridge/hap-client": "3.1.0", "@ng-bootstrap/ng-bootstrap": "19.0.1", @@ -57,8 +57,8 @@ "devDependencies": { "@angular/build": "^20.1.1", "@angular/cli": "^20.1.1", - "@angular/compiler-cli": "^20.1.1", - "@angular/language-service": "^20.1.1", + "@angular/compiler-cli": "^20.1.2", + "@angular/language-service": "^20.1.2", "@fortawesome/fontawesome-free": "^6.7.2", "@homebridge/plugin-ui-utils": "^2.1.0", "@types/emoji-js": "^3.5.2", @@ -343,9 +343,9 @@ } }, "node_modules/@angular/animations": { - "version": "20.1.1", - "resolved": "https://registry.npmjs.org/@angular/animations/-/animations-20.1.1.tgz", - "integrity": "sha512-uM6UQ4AhFMyFm9ZMWV0823ddvhJeTLkJaR6e9Vdm60dlwgxNmkhVPW9rg60vQy6FTVL2YieHIh/V0M1iwKbzxQ==", + "version": "20.1.2", + "resolved": "https://registry.npmjs.org/@angular/animations/-/animations-20.1.2.tgz", + "integrity": "sha512-r1JnNXZEg2Rrz53Mr4D4/S7v6ozZ3FPzJJo38lDq2WJKSkKc09R9fjFWIB/rXwEXUuiWEfNfxx+O4g6rrbXWWA==", "license": "MIT", "dependencies": { "tslib": "^2.3.0" @@ -354,8 +354,8 @@ "node": "^20.19.0 || ^22.12.0 || >=24.0.0" }, "peerDependencies": { - "@angular/common": "20.1.1", - "@angular/core": "20.1.1" + "@angular/common": "20.1.2", + "@angular/core": "20.1.2" } }, "node_modules/@angular/build": { @@ -510,9 +510,9 @@ } }, "node_modules/@angular/common": { - "version": "20.1.1", - "resolved": "https://registry.npmjs.org/@angular/common/-/common-20.1.1.tgz", - "integrity": "sha512-YBggvWw4IOeCidRs7BU4KbxNfq5P3n2M1WGJ+W8yoP6GA4sd/xMhi9tfIj3M9qQIse0xEDMuKAO8FDJaS1qrfQ==", + "version": "20.1.2", + "resolved": "https://registry.npmjs.org/@angular/common/-/common-20.1.2.tgz", + "integrity": "sha512-MQYP+4lvw81jBRknNYgIye7N36SD68SADUB7xO+7pF5+KbGundfmZkO29uWCnTBU86C4xU4DshlFVhzFK1lreQ==", "license": "MIT", "dependencies": { "tslib": "^2.3.0" @@ -521,14 +521,14 @@ "node": "^20.19.0 || ^22.12.0 || >=24.0.0" }, "peerDependencies": { - "@angular/core": "20.1.1", + "@angular/core": "20.1.2", "rxjs": "^6.5.3 || ^7.4.0" } }, "node_modules/@angular/compiler": { - "version": "20.1.1", - "resolved": "https://registry.npmjs.org/@angular/compiler/-/compiler-20.1.1.tgz", - "integrity": "sha512-w5Uf8gBiD4PWOHWq9c0YeYs5HQaOXqNK9dgKdeY10XNQ2bAzdROLupKjJ7fj5pil3wP/cYdaQh9f4t3URz7I/g==", + "version": "20.1.2", + "resolved": "https://registry.npmjs.org/@angular/compiler/-/compiler-20.1.2.tgz", + "integrity": "sha512-BCYQArXAknOyMB5rgx9yK3p5uYFhgN91Jxo5Fbuso6M+7p1PoxOE4E9XrqQfhpVJOl9hcz7vNFnQ4Oer0R83UQ==", "license": "MIT", "dependencies": { "tslib": "^2.3.0" @@ -538,9 +538,9 @@ } }, "node_modules/@angular/compiler-cli": { - "version": "20.1.1", - "resolved": "https://registry.npmjs.org/@angular/compiler-cli/-/compiler-cli-20.1.1.tgz", - "integrity": "sha512-88W5wzC9Kb8Etos1sZNmiDchxAdQVNwm+4RZl4fQQT+PXO/YdThkUj0IQlkgTMyAONntQcMzU4VeRr9EN5g1kQ==", + "version": "20.1.2", + "resolved": "https://registry.npmjs.org/@angular/compiler-cli/-/compiler-cli-20.1.2.tgz", + "integrity": "sha512-NMSDavN+CJYvSze6wq7DpbrUA/EqiAD7GQoeJtuOknzUpPlWQmFOoHzTMKW+S34XlNEw+YQT0trv3DKcrE+T/w==", "license": "MIT", "dependencies": { "@babel/core": "7.28.0", @@ -560,7 +560,7 @@ "node": "^20.19.0 || ^22.12.0 || >=24.0.0" }, "peerDependencies": { - "@angular/compiler": "20.1.1", + "@angular/compiler": "20.1.2", "typescript": ">=5.8 <5.9" }, "peerDependenciesMeta": { @@ -615,9 +615,9 @@ } }, "node_modules/@angular/core": { - "version": "20.1.1", - "resolved": "https://registry.npmjs.org/@angular/core/-/core-20.1.1.tgz", - "integrity": "sha512-7zzULRROtejS7AlLqG7fpzlebLd+FoE1eV3QiVD9GOkg+KzuUUbX7WFWmY8HkvS7ye6mSQEWfv4+yYa3AyA9SA==", + "version": "20.1.2", + "resolved": "https://registry.npmjs.org/@angular/core/-/core-20.1.2.tgz", + "integrity": "sha512-8jAvpkHoXHSH0HoqNVgPstSMGmC0oaYN93HW7K2rMRxj1Uhtahkeb/7/kfnj7yLi5FDfm98ofOFT4Lxzf2eZXQ==", "license": "MIT", "dependencies": { "tslib": "^2.3.0" @@ -626,7 +626,7 @@ "node": "^20.19.0 || ^22.12.0 || >=24.0.0" }, "peerDependencies": { - "@angular/compiler": "20.1.1", + "@angular/compiler": "20.1.2", "rxjs": "^6.5.3 || ^7.4.0", "zone.js": "~0.15.0" }, @@ -640,9 +640,9 @@ } }, "node_modules/@angular/forms": { - "version": "20.1.1", - "resolved": "https://registry.npmjs.org/@angular/forms/-/forms-20.1.1.tgz", - "integrity": "sha512-oIfBbxUxZL4Ilwg/dh5Sv55WP2QugLl1/6oP8PFZWgiAcClLnKYLasLsEhl3YddQZzENAheHntxAWuV0lDkogg==", + "version": "20.1.2", + "resolved": "https://registry.npmjs.org/@angular/forms/-/forms-20.1.2.tgz", + "integrity": "sha512-ziOaeN0by1cTCNzwCo/IC2ekFzrM7ehc8uQHMQ6dYprSX45lJmdCsNnn+R0lx68VugvbMhHHO5ieOORf5sEmew==", "license": "MIT", "dependencies": { "tslib": "^2.3.0" @@ -651,16 +651,16 @@ "node": "^20.19.0 || ^22.12.0 || >=24.0.0" }, "peerDependencies": { - "@angular/common": "20.1.1", - "@angular/core": "20.1.1", - "@angular/platform-browser": "20.1.1", + "@angular/common": "20.1.2", + "@angular/core": "20.1.2", + "@angular/platform-browser": "20.1.2", "rxjs": "^6.5.3 || ^7.4.0" } }, "node_modules/@angular/language-service": { - "version": "20.1.1", - "resolved": "https://registry.npmjs.org/@angular/language-service/-/language-service-20.1.1.tgz", - "integrity": "sha512-skWKitO+MjgwEq47lMTHHo+QP1lJnCQT5bLqa4zRA9Td6lVApNwDFtBDLvLdOAFcM0Zuf4pQjc2K6VDa5f7DLg==", + "version": "20.1.2", + "resolved": "https://registry.npmjs.org/@angular/language-service/-/language-service-20.1.2.tgz", + "integrity": "sha512-qeRrSJCfSZ5K01x+5bQntHPZOrXJOy17bLTtJdQ7iu5PBYh2hFwMipWOGp6SPeYgZ8yl88vmZI+YkLOEsNNniw==", "dev": true, "license": "MIT", "engines": { @@ -668,9 +668,9 @@ } }, "node_modules/@angular/localize": { - "version": "20.1.1", - "resolved": "https://registry.npmjs.org/@angular/localize/-/localize-20.1.1.tgz", - "integrity": "sha512-ptG+aL4EEQtxqW8i8RN3erjIx/spH83Jsxar8d2kdj0OXxqThZaG55ct+U4YBj42IYej2K++cHttsONzVdvdeQ==", + "version": "20.1.2", + "resolved": "https://registry.npmjs.org/@angular/localize/-/localize-20.1.2.tgz", + "integrity": "sha512-stlG9ZmB71nBCDqu+9R3syNf/+Hny6/WlNL6whBB3hPN+LOXwb1LDHnu+YaIOoAoQ19ufNofYvGEsWWq6j4vEw==", "license": "MIT", "dependencies": { "@babel/core": "7.28.0", @@ -687,8 +687,8 @@ "node": "^20.19.0 || ^22.12.0 || >=24.0.0" }, "peerDependencies": { - "@angular/compiler": "20.1.1", - "@angular/compiler-cli": "20.1.1" + "@angular/compiler": "20.1.2", + "@angular/compiler-cli": "20.1.2" } }, "node_modules/@angular/localize/node_modules/@babel/core": { @@ -737,9 +737,9 @@ } }, "node_modules/@angular/platform-browser": { - "version": "20.1.1", - "resolved": "https://registry.npmjs.org/@angular/platform-browser/-/platform-browser-20.1.1.tgz", - "integrity": "sha512-aCKb8RramcdS0vlkMu8Xa7ehQCbD2ocCli5jDX0Y3BbMkz2W1BaK9hHEXsco3zUk2/MPRaj+t91Z8S0JzFlPvg==", + "version": "20.1.2", + "resolved": "https://registry.npmjs.org/@angular/platform-browser/-/platform-browser-20.1.2.tgz", + "integrity": "sha512-jsgO4atyh6T3Rt+idHI29ENaq1a4VKfvtTgWf1S0qSCsfMt2kv5AAO+LkL6lYx8TtJu5zjAETiUwSiWUqY1jOg==", "license": "MIT", "dependencies": { "tslib": "^2.3.0" @@ -748,9 +748,9 @@ "node": "^20.19.0 || ^22.12.0 || >=24.0.0" }, "peerDependencies": { - "@angular/animations": "20.1.1", - "@angular/common": "20.1.1", - "@angular/core": "20.1.1" + "@angular/animations": "20.1.2", + "@angular/common": "20.1.2", + "@angular/core": "20.1.2" }, "peerDependenciesMeta": { "@angular/animations": { @@ -759,9 +759,9 @@ } }, "node_modules/@angular/platform-browser-dynamic": { - "version": "20.1.1", - "resolved": "https://registry.npmjs.org/@angular/platform-browser-dynamic/-/platform-browser-dynamic-20.1.1.tgz", - "integrity": "sha512-zFpFgZ5uzbUgSPMfv/bPS4Sa/UyP3rIIDvwehZhGmijscIS9ZZPdnpKZTAAQNcLA3Posvd4tSDFp/xt7jWMfNw==", + "version": "20.1.2", + "resolved": "https://registry.npmjs.org/@angular/platform-browser-dynamic/-/platform-browser-dynamic-20.1.2.tgz", + "integrity": "sha512-KssXr0nDZxNjJChdyNFE1wFGaR374qEKBU6mburr2dTauV+jfaL7NrBRzQuTh7GfOOwHnW0uJ4b2dGK6m1tkNw==", "license": "MIT", "dependencies": { "tslib": "^2.3.0" @@ -770,16 +770,16 @@ "node": "^20.19.0 || ^22.12.0 || >=24.0.0" }, "peerDependencies": { - "@angular/common": "20.1.1", - "@angular/compiler": "20.1.1", - "@angular/core": "20.1.1", - "@angular/platform-browser": "20.1.1" + "@angular/common": "20.1.2", + "@angular/compiler": "20.1.2", + "@angular/core": "20.1.2", + "@angular/platform-browser": "20.1.2" } }, "node_modules/@angular/router": { - "version": "20.1.1", - "resolved": "https://registry.npmjs.org/@angular/router/-/router-20.1.1.tgz", - "integrity": "sha512-CqSp+QYUXubfD8S0UuwTPQh8oEFq/DcGhAyaos2VLdXriahPI55nGvpYKLrLbqoNLk7JGi95Zea95Utn+eI/vw==", + "version": "20.1.2", + "resolved": "https://registry.npmjs.org/@angular/router/-/router-20.1.2.tgz", + "integrity": "sha512-xMRDARfSgwDZSorrTMtv9Gdb9UtWflwn8LOgmPbj3waXyuGWUbgpoJCD0Mh6necc9fhQ60GbBRG5K2EVVr3ATQ==", "license": "MIT", "dependencies": { "tslib": "^2.3.0" @@ -788,9 +788,9 @@ "node": "^20.19.0 || ^22.12.0 || >=24.0.0" }, "peerDependencies": { - "@angular/common": "20.1.1", - "@angular/core": "20.1.1", - "@angular/platform-browser": "20.1.1", + "@angular/common": "20.1.2", + "@angular/core": "20.1.2", + "@angular/platform-browser": "20.1.2", "rxjs": "^6.5.3 || ^7.4.0" } }, @@ -4914,9 +4914,9 @@ "license": "MIT" }, "node_modules/electron-to-chromium": { - "version": "1.5.186", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.186.tgz", - "integrity": "sha512-lur7L4BFklgepaJxj4DqPk7vKbTEl0pajNlg2QjE5shefmlmBLm2HvQ7PMf1R/GvlevT/581cop33/quQcfX3A==", + "version": "1.5.187", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.187.tgz", + "integrity": "sha512-cl5Jc9I0KGUoOoSbxvTywTa40uspGJt/BDBoDLoxJRSBpWh4FFXBsjNRHfQrONsV/OoEjDfHUmZQa2d6Ze4YgA==", "license": "ISC" }, "node_modules/emoji-datasource": { diff --git a/ui/package.json b/ui/package.json index 56c7af94e..50cee72c3 100644 --- a/ui/package.json +++ b/ui/package.json @@ -12,15 +12,15 @@ "postinstall": "patch-package" }, "dependencies": { - "@angular/animations": "20.1.1", - "@angular/common": "20.1.1", - "@angular/compiler": "20.1.1", - "@angular/core": "20.1.1", - "@angular/forms": "20.1.1", - "@angular/localize": "20.1.1", - "@angular/platform-browser": "20.1.1", - "@angular/platform-browser-dynamic": "20.1.1", - "@angular/router": "20.1.1", + "@angular/animations": "20.1.2", + "@angular/common": "20.1.2", + "@angular/compiler": "20.1.2", + "@angular/core": "20.1.2", + "@angular/forms": "20.1.2", + "@angular/localize": "20.1.2", + "@angular/platform-browser": "20.1.2", + "@angular/platform-browser-dynamic": "20.1.2", + "@angular/router": "20.1.2", "@auth0/angular-jwt": "5.2.0", "@homebridge/hap-client": "3.1.0", "@ng-bootstrap/ng-bootstrap": "19.0.1", @@ -59,8 +59,8 @@ "devDependencies": { "@angular/build": "^20.1.1", "@angular/cli": "^20.1.1", - "@angular/compiler-cli": "^20.1.1", - "@angular/language-service": "^20.1.1", + "@angular/compiler-cli": "^20.1.2", + "@angular/language-service": "^20.1.2", "@fortawesome/fontawesome-free": "^6.7.2", "@homebridge/plugin-ui-utils": "^2.1.0", "@types/emoji-js": "^3.5.2", @@ -75,8 +75,8 @@ "typescript": "^5.8.3" }, "overrides": { - "@angular/animations": "20.1.1", - "@angular/common": "20.1.1", - "@angular/core": "20.1.1" + "@angular/animations": "20.1.2", + "@angular/common": "20.1.2", + "@angular/core": "20.1.2" } } From 5578de945d834614e479fc80a35760abeaf94c10 Mon Sep 17 00:00:00 2001 From: Ben <43026681+bwp91@users.noreply.github.com> Date: Thu, 17 Jul 2025 16:46:54 +0100 Subject: [PATCH 2/2] v5.2.0 --- CHANGELOG.md | 21 +++++++++++++++++---- package-lock.json | 4 ++-- package.json | 2 +- 3 files changed, 20 insertions(+), 7 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 374da999c..897c3ece7 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,16 +2,29 @@ All notable changes to `homebridge-config-ui-x` will be documented in this file. This project tries to adhere to [Semantic Versioning](http://semver.org/). -## v5.2.0 (Unreleased) +## v5.2.0 (2025-07-17) + +### Node.js Version + +- ️⚠️ The `hb-service` backend now has a stricter Node.js version requirement: + - if you are running Node.js `v20`, then you must be running at least `v20.19.0` + - if you are running Node.js `v22`, then you must be running at least `v22.12.0` + - if you are running Node.js `v24`, then you must be running at least `v24.0.0` + - although remember that `v24` is not officially supported yet +- The UI will not allow you to update to UI `v5.2.0` if you are running an unsupported version of Node.js +- Check the [Homebridge Wiki](https://github.com/homebridge/homebridge/wiki/How-To-Update-Node.js) for instructions on how to update Node.js on your system ### Other Changes - update node engines to `^20.19.0 || ^22.12.0 || ^24.0.0` -## v5.1.0 (2025-07-17) +### Homebridge Dependencies -⚠️ If you have not yet updated to the `5.x` branch of Homebridge UI, please read the breaking changes in the changelog before updating. -There are no breaking changes between `5.0.0` and `5.1.0`. +- `@homebridge/hap-client` @ `v3.0.0` +- `@homebridge/node-pty-prebuilt-multiarch` @ `v0.13.1` +- `@homebridge/plugin-ui-utils` @ `v2.1.0` + +## v5.1.0 (2025-07-17) ### UI Changes diff --git a/package-lock.json b/package-lock.json index 715473977..60a825fd1 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "homebridge-config-ui-x", - "version": "5.1.0", + "version": "5.2.0", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "homebridge-config-ui-x", - "version": "5.1.0", + "version": "5.2.0", "funding": [ { "type": "github", diff --git a/package.json b/package.json index dadeb5a77..e306023fd 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "homebridge-config-ui-x", "displayName": "Homebridge UI", - "version": "5.1.0", + "version": "5.2.0", "description": "A web based management, configuration and control platform for Homebridge.", "author": "oznu ", "license": "MIT",