From e5fc1384101d3922f66fe8b7b8511ecbd3220897 Mon Sep 17 00:00:00 2001 From: Dave Nicolson Date: Tue, 22 Aug 2023 00:30:31 +0200 Subject: [PATCH 01/16] Wait for custom UI (#1526) --- .../manage-plugins/custom-plugins/custom-plugins.component.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ui/src/app/core/manage-plugins/custom-plugins/custom-plugins.component.ts b/ui/src/app/core/manage-plugins/custom-plugins/custom-plugins.component.ts index 071c99dda..18ca7c191 100644 --- a/ui/src/app/core/manage-plugins/custom-plugins/custom-plugins.component.ts +++ b/ui/src/app/core/manage-plugins/custom-plugins/custom-plugins.component.ts @@ -131,7 +131,6 @@ export class CustomPluginsComponent implements OnInit, OnDestroy { case 'loaded': this.injectDefaultStyles(e); this.confirmReady(e); - this.uiLoaded = true; break; case 'request': { this.handleRequest(e); @@ -139,6 +138,7 @@ export class CustomPluginsComponent implements OnInit, OnDestroy { } case 'scrollHeight': this.setiFrameHeight(e); + this.uiLoaded = true; break; case 'config.get': { this.requestResponse(e, this.getConfigBlocks()); From 97ff2c45bdfdc00033cc97707192ed55f435968a Mon Sep 17 00:00:00 2001 From: Donavan Becker Date: Mon, 21 Aug 2023 21:04:20 -0500 Subject: [PATCH 02/16] Revert "Wait for custom UI (#1523)" This reverts commit ab2313dc003f70501880110f59303ba4d9400774. --- .../manage-plugins/custom-plugins/custom-plugins.component.ts | 3 +++ 1 file changed, 3 insertions(+) diff --git a/ui/src/app/core/manage-plugins/custom-plugins/custom-plugins.component.ts b/ui/src/app/core/manage-plugins/custom-plugins/custom-plugins.component.ts index 18ca7c191..04fb8f4ef 100644 --- a/ui/src/app/core/manage-plugins/custom-plugins/custom-plugins.component.ts +++ b/ui/src/app/core/manage-plugins/custom-plugins/custom-plugins.component.ts @@ -123,6 +123,9 @@ export class CustomPluginsComponent implements OnInit, OnDestroy { this.iframe = this.customPluginUiElementTarget.nativeElement as HTMLIFrameElement; this.iframe.src = environment.api.base + this.basePath + '/index.html?origin=' + encodeURIComponent(location.origin) + '&v=' + encodeURIComponent(this.plugin.installedVersion); + this.iframe.onload = () => { + this.uiLoaded = true; + }; } handleMessage = (e: MessageEvent) => { From 78a81af22c2723d9c4ad653bea3e5f78d1c25315 Mon Sep 17 00:00:00 2001 From: Donavan Becker Date: Mon, 21 Aug 2023 21:43:46 -0500 Subject: [PATCH 03/16] Revert "Revert "Wait for custom UI (#1523)"" This reverts commit 97ff2c45bdfdc00033cc97707192ed55f435968a. --- .../manage-plugins/custom-plugins/custom-plugins.component.ts | 3 --- 1 file changed, 3 deletions(-) diff --git a/ui/src/app/core/manage-plugins/custom-plugins/custom-plugins.component.ts b/ui/src/app/core/manage-plugins/custom-plugins/custom-plugins.component.ts index 04fb8f4ef..18ca7c191 100644 --- a/ui/src/app/core/manage-plugins/custom-plugins/custom-plugins.component.ts +++ b/ui/src/app/core/manage-plugins/custom-plugins/custom-plugins.component.ts @@ -123,9 +123,6 @@ export class CustomPluginsComponent implements OnInit, OnDestroy { this.iframe = this.customPluginUiElementTarget.nativeElement as HTMLIFrameElement; this.iframe.src = environment.api.base + this.basePath + '/index.html?origin=' + encodeURIComponent(location.origin) + '&v=' + encodeURIComponent(this.plugin.installedVersion); - this.iframe.onload = () => { - this.uiLoaded = true; - }; } handleMessage = (e: MessageEvent) => { From 49c44035b37f1ba7a349c0e697a1bbd9fc3b42c5 Mon Sep 17 00:00:00 2001 From: Donavan Becker Date: Wed, 30 Aug 2023 11:18:21 -0500 Subject: [PATCH 04/16] @homebridge/plugin-ui-utils": "0.0.19 --- package.json | 1 + ui/package-lock.json | 52 ++++++++++++++++++++++---------------------- ui/package.json | 3 ++- 3 files changed, 29 insertions(+), 27 deletions(-) diff --git a/package.json b/package.json index 508189c64..2740293bc 100644 --- a/package.json +++ b/package.json @@ -32,6 +32,7 @@ "homebridge": ">=1.6.0" }, "scripts": { + "check": "npm install && npm outdated", "watch": "concurrently \"npm run watch:ui\" \"npm run watch:server\"", "watch:server": "nodemon", "watch:ui": "npm run start --prefix ui", diff --git a/ui/package-lock.json b/ui/package-lock.json index eecce593d..aedca7fb5 100644 --- a/ui/package-lock.json +++ b/ui/package-lock.json @@ -19,7 +19,7 @@ "@angular/platform-browser-dynamic": "^14.1.1", "@angular/router": "^14.1.1", "@auth0/angular-jwt": "^5.0.2", - "@homebridge/plugin-ui-utils": "0.1.0", + "@homebridge/plugin-ui-utils": "0.0.19", "@ng-bootstrap/ng-bootstrap": "^11.0.1", "@ngx-translate/core": "^14.0.0", "@ngx-translate/http-loader": "^7.0.0", @@ -3039,9 +3039,9 @@ "dev": true }, "node_modules/@homebridge/plugin-ui-utils": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/@homebridge/plugin-ui-utils/-/plugin-ui-utils-0.1.0.tgz", - "integrity": "sha512-dFpXhSy/+moDzOf8yRZxeuqZOAHTA0bZDElMXnO98cequ+7kPmX+wgREYVrYcHZYtJK744nD1n7qT2gy/E/yFg==" + "version": "0.0.19", + "resolved": "https://registry.npmjs.org/@homebridge/plugin-ui-utils/-/plugin-ui-utils-0.0.19.tgz", + "integrity": "sha512-axFX7lN2Yd7bz/6SlD7dzq5sY/N9+XYuLHPukuiyHQRDtNMRL1uDqJhOx6RVaN2tYDHB75h7YxRQWP7U44Mgzg==" }, "node_modules/@humanwhocodes/config-array": { "version": "0.9.5", @@ -8594,15 +8594,15 @@ "dev": true }, "node_modules/hosted-git-info": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-5.0.0.tgz", - "integrity": "sha512-rRnjWu0Bxj+nIfUOkz0695C0H6tRrN5iYIzYejb0tDEefe2AekHu/U5Kn9pEie5vsJqpNQU02az7TGSH3qpz4Q==", + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-5.2.1.tgz", + "integrity": "sha512-xIcQYMnhcx2Nr4JTjsFmwwnr9vldugPy9uVm0o87bjqqWMv9GaqsTeT+i99wTl0mk1uLxJtHxLb8kymqTENQsw==", "dev": true, "dependencies": { "lru-cache": "^7.5.1" }, "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16" + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" } }, "node_modules/hpack.js": { @@ -8648,9 +8648,9 @@ "dev": true }, "node_modules/http-cache-semantics": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.1.0.tgz", - "integrity": "sha512-carPklcUh7ROWRK7Cv27RPtdhYhUsela/ue5/jKzjegVvXDqM2ILE9Q2BGn9JZJh1g87cp56su/FgQSzcWS8cQ==", + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.1.1.tgz", + "integrity": "sha512-er295DKPVsV82j5kw1Gjt+ADA/XYHsajl82cGNQG2eyoPkvgUhX+nDIyelzhIWbbsXP39EHcI6l5tYs2FYqYXQ==", "dev": true }, "node_modules/http-deceiver": { @@ -9662,9 +9662,9 @@ "dev": true }, "node_modules/json5": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.1.tgz", - "integrity": "sha512-1hqLFMSrGHRHxav9q9gNjJ5EXznIxGVO09xQRrwplcS8qs28pZ8s8hupZAmqDwZUmVZ2Qb2jnyPOWcDH8m8dlA==", + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", + "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", "bin": { "json5": "lib/cli.js" }, @@ -17137,9 +17137,9 @@ "dev": true }, "@homebridge/plugin-ui-utils": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/@homebridge/plugin-ui-utils/-/plugin-ui-utils-0.1.0.tgz", - "integrity": "sha512-dFpXhSy/+moDzOf8yRZxeuqZOAHTA0bZDElMXnO98cequ+7kPmX+wgREYVrYcHZYtJK744nD1n7qT2gy/E/yFg==" + "version": "0.0.19", + "resolved": "https://registry.npmjs.org/@homebridge/plugin-ui-utils/-/plugin-ui-utils-0.0.19.tgz", + "integrity": "sha512-axFX7lN2Yd7bz/6SlD7dzq5sY/N9+XYuLHPukuiyHQRDtNMRL1uDqJhOx6RVaN2tYDHB75h7YxRQWP7U44Mgzg==" }, "@humanwhocodes/config-array": { "version": "0.9.5", @@ -21303,9 +21303,9 @@ "dev": true }, "hosted-git-info": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-5.0.0.tgz", - "integrity": "sha512-rRnjWu0Bxj+nIfUOkz0695C0H6tRrN5iYIzYejb0tDEefe2AekHu/U5Kn9pEie5vsJqpNQU02az7TGSH3qpz4Q==", + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-5.2.1.tgz", + "integrity": "sha512-xIcQYMnhcx2Nr4JTjsFmwwnr9vldugPy9uVm0o87bjqqWMv9GaqsTeT+i99wTl0mk1uLxJtHxLb8kymqTENQsw==", "dev": true, "requires": { "lru-cache": "^7.5.1" @@ -21356,9 +21356,9 @@ "dev": true }, "http-cache-semantics": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.1.0.tgz", - "integrity": "sha512-carPklcUh7ROWRK7Cv27RPtdhYhUsela/ue5/jKzjegVvXDqM2ILE9Q2BGn9JZJh1g87cp56su/FgQSzcWS8cQ==", + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.1.1.tgz", + "integrity": "sha512-er295DKPVsV82j5kw1Gjt+ADA/XYHsajl82cGNQG2eyoPkvgUhX+nDIyelzhIWbbsXP39EHcI6l5tYs2FYqYXQ==", "dev": true }, "http-deceiver": { @@ -22096,9 +22096,9 @@ "dev": true }, "json5": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.1.tgz", - "integrity": "sha512-1hqLFMSrGHRHxav9q9gNjJ5EXznIxGVO09xQRrwplcS8qs28pZ8s8hupZAmqDwZUmVZ2Qb2jnyPOWcDH8m8dlA==" + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", + "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==" }, "jsonc-parser": { "version": "3.0.0", diff --git a/ui/package.json b/ui/package.json index e9bcd2bb0..2d797c227 100644 --- a/ui/package.json +++ b/ui/package.json @@ -3,6 +3,7 @@ "version": "0.0.0", "license": "MIT", "scripts": { + "check": "npm install && npm outdated", "ng": "ng", "start": "ng serve", "build": "ng build --configuration production --output-path=../public --source-map=false --aot=true", @@ -20,7 +21,7 @@ "@angular/platform-browser-dynamic": "^14.1.1", "@angular/router": "^14.1.1", "@auth0/angular-jwt": "^5.0.2", - "@homebridge/plugin-ui-utils": "0.1.0", + "@homebridge/plugin-ui-utils": "0.0.19", "@ng-bootstrap/ng-bootstrap": "^11.0.1", "@ngx-translate/core": "^14.0.0", "@ngx-translate/http-loader": "^7.0.0", From 8bda53b5a5c3bce13c58299f0bb367f6db11168d Mon Sep 17 00:00:00 2001 From: Ben <43026681+bwp91@users.noreply.github.com> Date: Sat, 2 Sep 2023 04:16:01 +0100 Subject: [PATCH 05/16] chore: update node versions (#1530) --- .github/workflows/attach-artifact.yml | 2 +- .github/workflows/build.yml | 14 +++++++------- .github/workflows/test.yml | 14 +++++++------- 3 files changed, 15 insertions(+), 15 deletions(-) diff --git a/.github/workflows/attach-artifact.yml b/.github/workflows/attach-artifact.yml index e4668e30b..651547c01 100644 --- a/.github/workflows/attach-artifact.yml +++ b/.github/workflows/attach-artifact.yml @@ -13,7 +13,7 @@ jobs: - name: Setup node uses: actions/setup-node@v1 with: - node-version: 16.x + node-version: 20.x # Sanity check to ensure that release tags don't start with a 'v' version prefix but adhere to the X.Y.Z format - name: Check for Tag name Format diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index e52cc351c..165c892e1 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -27,20 +27,20 @@ jobs: fail-fast: false matrix: os: [ubuntu-latest] - node-version: [16.x, 17.x, 18.x] + node-version: [18.x, 20.x] include: - - os: macos-latest - node-version: 16.x - os: macos-latest node-version: 18.x - - os: windows-2019 - node-version: 16.x + - os: macos-latest + node-version: 20.x - os: windows-2019 node-version: 18.x - - os: windows-latest - node-version: 16.x + - os: windows-2019 + node-version: 20.x - os: windows-latest node-version: 18.x + - os: windows-latest + node-version: 20.x runs-on: ${{ matrix.os }} diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 31a8972a5..81664157f 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -7,20 +7,20 @@ jobs: strategy: matrix: os: [ubuntu-latest] - node-version: [16.x, 17.x, 18.x] + node-version: [18.x, 20.x] include: - - os: macos-latest - node-version: 16.x - os: macos-latest node-version: 18.x - - os: windows-2019 - node-version: 16.x + - os: macos-latest + node-version: 20.x - os: windows-2019 node-version: 18.x - - os: windows-latest - node-version: 16.x + - os: windows-2019 + node-version: 20.x - os: windows-latest node-version: 18.x + - os: windows-latest + node-version: 20.x runs-on: ${{ matrix.os }} From 1549e89b25945b37b4ee21041671722319f3da33 Mon Sep 17 00:00:00 2001 From: Dave Nicolson Date: Tue, 19 Sep 2023 01:46:50 +0200 Subject: [PATCH 06/16] Use verb form for buttons and menu items (#1533) --- ui/src/i18n/en.json | 4 ++-- ui/src/i18n/pt.json | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/ui/src/i18n/en.json b/ui/src/i18n/en.json index fdebb68f8..dc0a74200 100644 --- a/ui/src/i18n/en.json +++ b/ui/src/i18n/en.json @@ -116,7 +116,7 @@ "form.button_delete": "Delete", "form.button_edit": "Edit", "form.button_save": "Save", - "login.button_login": "Login", + "login.button_login": "Log in", "login.label_2fa_code": "Two Factor Authentication Code", "login.label_password": "Password", "login.label_username": "Username", @@ -142,7 +142,7 @@ "menu.linux.label_restart_server": "Restart Server", "menu.linux.label_shutdown_server": "Shutdown Server", "menu.linux.label_terminal": "Terminal", - "menu.tooltip_logout": "Logout", + "menu.tooltip_logout": "Log out", "menu.tooltip_restart": "Restart", "menu.tooltip_user_accounts": "User Accounts", "menu.tooltip_view_logs": "View Logs", diff --git a/ui/src/i18n/pt.json b/ui/src/i18n/pt.json index b5abd8100..305027b0c 100644 --- a/ui/src/i18n/pt.json +++ b/ui/src/i18n/pt.json @@ -116,7 +116,7 @@ "form.button_delete": "Apagar", "form.button_edit": "Editar", "form.button_save": "Gravar", - "login.button_login": "Login", + "login.button_login": "Entrar", "login.label_2fa_code": "Código de Autenticação de Dois Fatores", "login.label_password": "Palavra-passe", "login.label_username": "Utilizador", From 516b90823a5909cba46044979078fe5cebaced28 Mon Sep 17 00:00:00 2001 From: SamuelMagano Date: Tue, 19 Sep 2023 00:50:09 +0100 Subject: [PATCH 07/16] Update pt.json (#1520) --- ui/src/i18n/pt.json | 58 ++++++++++++++++++++++----------------------- 1 file changed, 29 insertions(+), 29 deletions(-) diff --git a/ui/src/i18n/pt.json b/ui/src/i18n/pt.json index 305027b0c..891510ccd 100644 --- a/ui/src/i18n/pt.json +++ b/ui/src/i18n/pt.json @@ -77,9 +77,9 @@ "backup.title_backup_restore": "Backup / Restauro", "backup.title_restore": "Restauro", "backup.title_scheduled_backups": "Backups Agendados", - "child_bridge.label_bridge_connect_to_homekit": "Connect to HomeKit", + "child_bridge.label_bridge_connect_to_homekit": "Conectar ao Homekit", "child_bridge.label_bridge_paired": "Ponte Emparelhada", - "child_bridge.label_bridge_restart_child_bridges": "Restart Child Bridges", + "child_bridge.label_bridge_restart_child_bridges": "Reiniciar Pontes Secundárias", "child_bridge.label_bridge_settings": "Definições da Ponte", "child_bridge.label_child_bridges": "Pontes Secundárias", "child_bridge.message_about": "O Homebridge permite que possa executar uma plataforma de um plugin ou um acessório como uma ponte secundária isolada. Isto pode melhorar a fiabilidade e o tempo de resposta do Homebridge.", @@ -147,7 +147,7 @@ "menu.tooltip_user_accounts": "Contas de Utilizador", "menu.tooltip_view_logs": "Ver Registos", "platform.docker.restart_container.message_run_with_restart_always": "Verifique se está a executar o container do Docker com --restart=always", - "platform.docker.restart_container.message_server_taking_long_time_to_restart": "O reinício do servidor está a demorar muito tempo. Poderá ser necessário intervir manualmente no container do Docker para voltar a estar online.", + "platform.docker.restart_container.message_server_taking_long_time_to_restart": "A inicialização do servidor está a demorar muito tempo. Poderá ser necessário intervir manualmente no container do Docker para voltar a estar online.", "platform.docker.restart_container.title_restarting": "A Reiniciar o Container do Docker", "platform.docker.restart_container.toast_container_restarted": "Container do Docker Reiniciado", "platform.docker.settings.button_restart_required": "Reinício Necessário", @@ -155,18 +155,18 @@ "platform.docker.settings.title_settings": "Definições", "platform.docker.settings.toast_container_restart_required": "É Necessário o Reinício do Container", "platform.docker.settings.toast_title_settings_saved": "Definições Gravadas", - "platform.docker.startup_script.message_script_help": "Este script vai ser executado todas as vezes que o container do docker iniciar. Poderá utilizar isto para instalar qualquer pacote extra que os plugins poderão requerer como por exemplo o ffmpeg ou o libpcap-dev.", + "platform.docker.startup_script.message_script_help": "Este script vai ser executado todas as vezes que o container do docker iniciar. Isto poderá ser utilizado para instalar qualquer pacote extra que os plugins possam requerer como por exemplo o ffmpeg ou o libpcap-dev.", "platform.docker.startup_script.toast_restart_required": "Vai ser necessário reiniciar este container do docker para que as mudanças surtam efeito.", "platform.docker.startup_script.toast_script_must_use_hashbang": "É necessário usar a hashbang #!/bin/sh no script.", "platform.docker.startup_script.toast_title_script_error": "Erro de Script", "platform.docker.startup_script.toast_title_script_saved": "Script de Inicialização Gravado", "platform.linux.restart.confirmation": "Tem a certeza que deseja reiniciar o sistema operativo?", "platform.linux.restart.message_please_wait_while_server_restarts": "Por favor aguarde, esta pagina irá automaticamente atualizar quando o Homebridge estiver de novo online.", - "platform.linux.restart.message_server_taking_long_time_to_restart": "O reinício do servidor está a demorar demasiado tempo. Poderá ser necessário intervir manualmente no servidor para voltar a estar online.", + "platform.linux.restart.message_server_taking_long_time_to_restart": "A inicialização do servidor está a demorar demasiado tempo. Poderá ser necessário intervir manualmente no servidor para voltar a estar online.", "platform.linux.restart.title_restarting_server": "A reiniciar o servidor", "platform.linux.restart.toast_server_restart_error": "Ocorreu um erro ao enviar o comando de reinício para o servidor", "platform.linux.restart.toast_server_restarted": "O Servidor foi Reiniciado", - "platform.linux.restart.toast_server_taking_long_time_to_come_online": "O servidor está a demorar demasiado tempo para voltar a estar online", + "platform.linux.restart.toast_server_taking_long_time_to_come_online": "O servidor está a demorar demasiado tempo a inicializar", "platform.linux.shutdown.confirmation": "Tem a certeza que deseja desligar o sistema operativo?", "platform.linux.shutdown.message_server_will_power_down": "O servidor irá desligar brevemente.", "platform.linux.shutdown.title_shutting_down_server": "A Desligar o Servidor", @@ -228,7 +228,7 @@ "plugins.status_update_available": "Atualização Disponível", "plugins.toast_failed_to_load_plugins": "Falha ao carregar os plugins", "plugins.tooltip_update_plugin_to": "Atualizar o plugin para a versão v{{latestVersion}}", - "reset.accessories_will_may_need_to_be_reconfigured": "Após executar esta ação alguns acessórios poderão ter que ser repostos no HomeKit ou readicionados nas automações.", + "reset.accessories_will_may_need_to_be_reconfigured": "Após executar a reposição alguns acessórios poderão ter que ser repostos no HomeKit ou readicionados nas automações.", "reset.button_reset_homebridge_now": "Repor o Homebridge Agora", "reset.label_reset_homebridge": "repor homebridge", "reset.message_accessory_config_will_not_be_changed": "O resto da configuração não vai ser alterada. Se o Homebridge não iniciar devido a uma má configuração, uma reposição não irá consertar o problema.", @@ -250,25 +250,25 @@ "reset.title_reset_homebridge_accessory": "Repor o Acessório da Homebridge", "reset.title_unpair_bridges_cameras_tv_external_accessories": "Desemparelhar Pontes / Câmeras / Televisões / Acessórios Externos", "reset.title_warning": "Alerta", - "reset.toast_accessory_reset": "Redefinir Acessório do Homebridge", + "reset.toast_accessory_reset": "Repor Acessório do Homebridge", "reset.toast_cached_accessory_removed": "Acessório em cache removido.", "reset.toast_clear_cached_accessories_success": "A reiniciar o Homebridge e a apagar a cache do acessório.", "reset.toast_failed_to_delete_cached_accessory": "Falha ao eliminar o acessório.", - "reset.toast_failed_to_reset": "Falha ao redefinir o Homebridge. Ver registo.", - "reset.toast_removing_cached_accessory_please_wait": "A remover o acessório da cache, por favor aguarde…", + "reset.toast_failed_to_reset": "Falha ao repor o Homebridge. Ver registo.", + "reset.toast_removing_cached_accessory_please_wait": "A remover o acessório da cache, por favor aguarde...", "restart.label_restart_command_executed": "Comando de Reinício Executado", "restart.message_homebridge_service_ready": "Servidor do Homebridge Pronto", "restart.message_homebridge_ui_online": "Homebridge UI Online", "restart.message_please_wait_while_server_restarts": "Por favor aguarde, esta pagina irá atualizar automaticamente quando o servidor estiver online.", - "restart.message_server_is_taking_long_time_to_restart": "O reinício do servidor está a demorar demasiado tempo. Poderá ser necessário intervir manualmente no servidor para voltar a estar online.", + "restart.message_server_is_taking_long_time_to_restart": "A inicialização do servidor está a demorar demasiado tempo. Poderá ser necessário intervir manualmente no servidor para voltar a estar online.", "restart.title_restart": "A Reiniciar o Homebridge", "restart.toast_server_restart_error": "Ocorreu um erro ao enviar o comando de reinício para o servidor", "restart.toast_server_restarted": "O Servidor foi Reiniciado", - "restart.toast_sever_restart_timeout": "O servidor está a demorar demasiado tempo para voltar a estar online", - "rpi.throttled.currently_undervoltage_message": "This Raspberry Pi is reporting it is currently under-voltage; please check it is connected to an appropriate power supply. Under-voltage can result in system instability and SD card corruption.", - "rpi.throttled.currently_undervoltage_title": "Under-voltage detected", - "rpi.throttled.previously_undervoltage_message": "This Raspberry Pi has reported an under-voltage event since it was last rebooted; please check it is connected to an appropriate power supply.", - "rpi.throttled.previously_undervoltage_title": "Under-voltage has occurred", + "restart.toast_sever_restart_timeout": "O servidor está a demorar demasiado tempo a inicializar", + "rpi.throttled.currently_undervoltage_message": "Este Raspberry Pi está a reportar que se encontra atualmente em subtensão; por favor verifique se está conectado a uma fonte de alimentação apropriada. Subtensão poderá provocar instabilidade de sistema e corromper o cartão SD.", + "rpi.throttled.currently_undervoltage_title": "Subtensão detetada", + "rpi.throttled.previously_undervoltage_message": "Este Raspberry Pi reportou um evento de subtensão desde a ultima inicialização; por favor verifique se está conectado a uma fonte de alimentação apropriada.", + "rpi.throttled.previously_undervoltage_title": "Ocorreu um evento de subtensão", "settings.manage_cache.help": "Se um acessório que já não possui continuar a ser mostrado no HomeKit, poderá ser necessário remove-lo da cache. Pode escolher remover apenas um acessório, ou remover todos os acessórios em cache.", "settings.mdns_advertiser": "Encaminhamento mDNS", "settings.mdns_advertiser_help": "Se estiver a ter problemas a conectar ao Homebridge, tente um dos encaminhamentos mDNS alternativos.", @@ -278,18 +278,18 @@ "settings.network.message_network_interface_two": "Se nenhuma interface de rede estiver selecionada, o Homebridge irá tentar determinar automaticamente qual interface a utilizar.", "settings.network.title_network": "Rede", "settings.network.title_network_interfaces": "Interfaces de Rede", - "settings.reset.help": "Se estiver a ter problemas a emparelhar o Homebridge ou um acessório externo como uma Câmara ou uma Televisão com o HomeKit, poderá ser necessário desemparelhar o acessório ou redefinir a instância do Homebridge.", + "settings.reset.help": "Se estiver a ter problemas a emparelhar o Homebridge ou um acessório externo como uma Câmara ou uma Televisão com o HomeKit, poderá ser necessário desemparelhar o acessório ou repor a instância do Homebridge.", "settings.title_actions": "Ações", "settings.title_environment_variables": "Variáveis do Ambiente", "settings.title_manage_cached_accessories": "Gerir Acessórios em Cache", "settings.title_startup_options": "Opções de Inicio", - "setup_wizard.button_get_started": "Get Started", - "setup_wizard.label_create_account": "Create Account", - "setup_wizard.label_open_dashboard": "Open Dashboard", - "setup_wizard.message_create_account_reason": "Password authentication to your Homebridge admin web interface must be configured. Even if Homebridge is accessible only in your local network, it is still important to protect it from unrestricted access.", - "setup_wizard.message_welcome_to_homebridge": "Welcome to Homebridge", - "setup_wizard_message_complete_message": "The setup procedure is complete and you're now ready to start using Homebridge.", - "setup_wizard_message_complete_title": "Congratulations!", + "setup_wizard.button_get_started": "Começar", + "setup_wizard.label_create_account": "Criar Conta", + "setup_wizard.label_open_dashboard": "Abrir Dashboard", + "setup_wizard.message_create_account_reason": "A autenticação por palavra-passe deverá de ser configurada para a página de administração do Homebridge. Mesmo que o Homebridge seja acessível apenas na rede local, é importante protege-lo de acessos não autorizados.", + "setup_wizard.message_welcome_to_homebridge": "Bem-vindo ao Homebridge", + "setup_wizard_message_complete_message": "O processo de configuração está concluído e está pronto para utilizar o Homebridge.", + "setup_wizard_message_complete_title": "Parabéns!", "status.cpu.label_load": "Utilização", "status.cpu.label_temp": "Temperatura", "status.cpu.title_cpu": "CPU", @@ -302,9 +302,9 @@ "status.memory.label_used": "Usada", "status.memory.title_memory": "Memória", "status.message_code_scan_instructions": "Leia este código com a câmara do seu dispositivo iOS para adicionar ao Apple Home.", - "status.network.label_received_per_second": "Received", - "status.network.label_sent_per_second": "Sent", - "status.network.title_network": "Network Activity", + "status.network.label_received_per_second": "Recebido", + "status.network.label_sent_per_second": "Enviado", + "status.network.title_network": "Atividade da Rede", "status.plugin_out_of_date": "Plugin Desatualizado", "status.plugins_out_of_date": "Plugins Desatualizados", "status.services.label_console": "Consola", @@ -329,7 +329,7 @@ "status.widget.label_clock_timeformat": "Formato da Hora", "status.widget.label_font_size": "Tamanho da Fonte", "status.widget.label_font_weight": "Espessura da Fonte", - "status.widget.label_hide_on_mobile": "Esconder em modo compacto (ecrãs moveis)", + "status.widget.label_hide_on_mobile": "Esconder em modo compacto (ecrãs móveis)", "status.widget.label_homebridge_logs": "Registos do Homebridge", "status.widget.label_layout_locked": "Layout Bloqueado", "status.widget.label_lock_layout": "Bloquear Layout", @@ -396,4 +396,4 @@ "users.toast_failed_to_update_user": "Falha ao Atualizar Utilizador", "users.toast_updated_user": "Utilizador Atualizado", "users.toast_user_deleted": "Utilizador Eliminado" -} \ No newline at end of file +} From e2ed5fc69280953ac8a350952bdb663db1a9ce72 Mon Sep 17 00:00:00 2001 From: Northern Man <19808920+NorthernMan54@users.noreply.github.com> Date: Tue, 19 Sep 2023 13:32:39 -0400 Subject: [PATCH 08/16] Fix issues with GitHub Actions (#1542) * Resolve issues with GitHub actions * Update build.yml Remove Node 20 support * Update test.yml and temporarily remove Node 20 * Update win32.ts --- .github/workflows/build.yml | 12 ++++-------- .github/workflows/test.yml | 10 ++-------- src/bin/platforms/win32.ts | 2 +- 3 files changed, 7 insertions(+), 17 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 165c892e1..7034c7c2a 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -15,7 +15,9 @@ jobs: uses: homebridge/.github/.github/workflows/nodejs-build-and-test.yml@main with: - enable_coverage: true + enable_coverage: false + ## Code Coverage can only be used in a single run, not in a parallel run - Error: Bad response: 422 {"message":"Can't add a job to a build that is already closed. Build 6224987022 is closed. See docs.coveralls.io/parallel-builds","error":true} + ## Coveralls only expects to create a report once per build runs_on: ${{ matrix.os }} install_cmd: npm ci && cd ui && npm ci secrets: @@ -27,20 +29,14 @@ jobs: fail-fast: false matrix: os: [ubuntu-latest] - node-version: [18.x, 20.x] + node-version: [18.x] include: - os: macos-latest node-version: 18.x - - os: macos-latest - node-version: 20.x - os: windows-2019 node-version: 18.x - - os: windows-2019 - node-version: 20.x - os: windows-latest node-version: 18.x - - os: windows-latest - node-version: 20.x runs-on: ${{ matrix.os }} diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 81664157f..d8a03a820 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -7,25 +7,19 @@ jobs: strategy: matrix: os: [ubuntu-latest] - node-version: [18.x, 20.x] + node-version: [18.x] include: - os: macos-latest node-version: 18.x - - os: macos-latest - node-version: 20.x - os: windows-2019 node-version: 18.x - - os: windows-2019 - node-version: 20.x - os: windows-latest node-version: 18.x - - os: windows-latest - node-version: 20.x runs-on: ${{ matrix.os }} steps: - - uses: actions/checkout@v1 + - uses: actions/checkout@v3 - uses: actions/setup-node@v3 with: node-version: ${{ matrix.node-version }} diff --git a/src/bin/platforms/win32.ts b/src/bin/platforms/win32.ts index 7da16372a..95c2697a5 100644 --- a/src/bin/platforms/win32.ts +++ b/src/bin/platforms/win32.ts @@ -146,7 +146,7 @@ export class Win32Installer extends BasePlatform { * This is used to create the Windows Services */ private async downloadNssm(): Promise { - const downloadUrl = `https://github.com/homebridge/nssm/releases/download/2.24-101-g897c7ad/nssm_${os.arch()}.exe`; + const downloadUrl = `https://github.com/oznu/nssm/releases/download/2.24-101-g897c7ad/nssm_${os.arch()}.exe`; const nssmPath = path.resolve(this.hbService.storagePath, 'nssm.exe'); if (await fs.pathExists(nssmPath)) { From d5f07c740907d07f509de2e18e2698a98855b3c2 Mon Sep 17 00:00:00 2001 From: Northern Man <19808920+NorthernMan54@users.noreply.github.com> Date: Wed, 20 Sep 2023 09:32:47 -0400 Subject: [PATCH 09/16] Move nssm to homebridge organization (#1545) --- src/bin/platforms/win32.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/bin/platforms/win32.ts b/src/bin/platforms/win32.ts index 95c2697a5..7da16372a 100644 --- a/src/bin/platforms/win32.ts +++ b/src/bin/platforms/win32.ts @@ -146,7 +146,7 @@ export class Win32Installer extends BasePlatform { * This is used to create the Windows Services */ private async downloadNssm(): Promise { - const downloadUrl = `https://github.com/oznu/nssm/releases/download/2.24-101-g897c7ad/nssm_${os.arch()}.exe`; + const downloadUrl = `https://github.com/homebridge/nssm/releases/download/2.24-101-g897c7ad/nssm_${os.arch()}.exe`; const nssmPath = path.resolve(this.hbService.storagePath, 'nssm.exe'); if (await fs.pathExists(nssmPath)) { From 5726e85406fbf7fc6b1e51162af04feac98c9f6f Mon Sep 17 00:00:00 2001 From: Ben <43026681+bwp91@users.noreply.github.com> Date: Thu, 21 Sep 2023 11:10:58 +0100 Subject: [PATCH 10/16] readme updates (#1544) --- README.md | 18 ++++++++---------- 1 file changed, 8 insertions(+), 10 deletions(-) diff --git a/README.md b/README.md index 9d9d858ce..dcd01c0eb 100755 --- a/README.md +++ b/README.md @@ -17,15 +17,16 @@ Supported Languages: :gb: :de: :fr: :poland: :czech_republic: :ru: :cn: :hungary * View and control Homebridge accessories * Restart Homebridge * Backup and Restore your Homebridge instance +* Set up and manage your Homebridge plugins as [child bridges](https://github.com/homebridge/homebridge/wiki/Child-Bridges) * and more... -Homebridge Config UI X also provides a tool called [`hb-service`](https://github.com/oznu/homebridge-config-ui-x/wiki/Homebridge-Service-Command) which makes it easy to setup Homebridge as a service on Linux/Raspbian, macOS and Windows 10. +Homebridge Config UI X also provides a tool called [`hb-service`](https://github.com/homebridge/homebridge-config-ui-x/wiki/Homebridge-Service-Command) which makes it easy to set up Homebridge as a service on Linux/Raspbian, macOS and Windows 10. [![Status](screenshots/homebridge-config-ui-x-darkmode-status.png?2020-01-07)](#usage) # Installation Instructions -For detailed instructions on how to setup Node.js and Homebridge with Homebridge Config UI X as a service see the guides on the wiki: +For detailed instructions on how to set up Node.js and Homebridge with Homebridge Config UI X as a service, see the guides on the wiki: * homebridge-raspbian-image [Setup Homebridge using the official Homebridge Raspberry Pi Image](https://github.com/homebridge/homebridge-raspbian-image/wiki/Getting-Started) * raspbian [Setup Homebridge on a Raspberry Pi (Raspbian)](https://github.com/homebridge/homebridge/wiki/Install-Homebridge-on-Raspbian) @@ -39,13 +40,13 @@ If your platform is not listed above, or you want to use your own service manage The default username is `admin` and the default password is `admin`. -The UI can be accessed via web browser by default on port `8581` (eg. `http://localhost:8581`). +The UI can be accessed via web browser by default on port `8581` (e.g. `http://localhost:8581`). # Usage ### Status Screen -This shows an overview of your Homebridge system. The dashboard is widget based and completely customisable with a number of themes available. +This shows an overview of your Homebridge system. The dashboard is widget-based and completely customisable with a number of themes available. ![Status](screenshots/homebridge-config-ui-x-status.png?2020-01-07) @@ -61,7 +62,7 @@ You can configure supported plugins using the graphical settings editor, removin ### Configuration Screen -The configuration screen allows you to modify your Homebridge `config.json`. The built in editor automatically syntax-checks your JSON and makes a backup of your config every time you make a change. +The configuration screen allows you to modify your Homebridge `config.json`. The built-in editor automatically syntax-checks your JSON and makes a backup of your config every time you make a change. ![Config](screenshots/homebridge-config-ui-x-config.png?2020-01-07) @@ -91,10 +92,7 @@ MS Internet Explorer (any version) is not supported! # Supported Node.js and Npm Versions -While the Homebridge UI should work on Node.js 14+, only the following versions of Node.js are officially supported: - -* node v14.15.0 or higher -* npm v6.4.1 or higher +The Homebridge UI follows the same Node support schedule as Homebridge. See the [How-To-Update-Node.js](https://github.com/homebridge/homebridge/wiki/How-To-Update-Node.js) page in the Homebridge wiki for currently supported versions. You can check your current versions using these commands: @@ -136,7 +134,7 @@ The Homebridge UI supports the [homebridge/homebridge](https://github.com/homebr #### 4. Ask on Discord -Join the [Official Homebridge Discord](https://discord.gg/C87Pvq3) community and ask in the [#ui](https://discord.gg/C87Pvq3) channel. +Join the [Official Homebridge Discord](https://discord.gg/C87Pvq3) community and ask in the [#ui-general](https://discord.gg/C87Pvq3) or [#ui-issues](https://discord.gg/C87Pvq3) channel. # Credit From 9f0235174295dff1bde2680c8c2acb88afe45cd5 Mon Sep 17 00:00:00 2001 From: Ben <43026681+bwp91@users.noreply.github.com> Date: Fri, 22 Sep 2023 03:00:03 +0100 Subject: [PATCH 11/16] main -> latest --- .github/workflows/build.yml | 2 +- .github/workflows/codeql-analysis.yml | 6 +++--- CONTRIBUTING.md | 2 +- src/modules/plugins/plugins.service.ts | 2 +- 4 files changed, 6 insertions(+), 6 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 351f5dac2..739692878 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -86,6 +86,6 @@ jobs: lint: needs: build_and_test - uses: homebridge/.github/.github/workflows/eslint.yml@main + uses: homebridge/.github/.github/workflows/eslint.yml@latest with: install_cmd: npm ci && cd ui && npm ci diff --git a/.github/workflows/codeql-analysis.yml b/.github/workflows/codeql-analysis.yml index a7af70ba6..a3faf80d9 100644 --- a/.github/workflows/codeql-analysis.yml +++ b/.github/workflows/codeql-analysis.yml @@ -2,12 +2,12 @@ name: "CodeQL" on: push: - branches: [ main, beta* ] + branches: [ latest, beta* ] pull_request: - branches: [ main, beta* ] + branches: [ latest, beta* ] schedule: - cron: '17 9 * * 2' jobs: analyze: - uses: homebridge/.github/.github/workflows/codeql-analysis.yml@main + uses: homebridge/.github/.github/workflows/codeql-analysis.yml@latest diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 8601e6e22..5fc4d4168 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -72,4 +72,4 @@ npm run test Additional language translations, or improvements to existing translations are most welcome. Translations can be found here: -https://github.com/homebridge/homebridge-config-ui-x/tree/main/ui/src/i18n +https://github.com/homebridge/homebridge-config-ui-x/tree/latest/ui/src/i18n diff --git a/src/modules/plugins/plugins.service.ts b/src/modules/plugins/plugins.service.ts index fe4ee5777..510e81b7f 100755 --- a/src/modules/plugins/plugins.service.ts +++ b/src/modules/plugins/plugins.service.ts @@ -1404,7 +1404,7 @@ export class PluginsService { clearTimeout(this.verifiedPluginsRetryTimeout); try { this.verifiedPlugins = ( - await this.httpService.get('https://raw.githubusercontent.com/homebridge/verified/main/verified-plugins.json', { + await this.httpService.get('https://raw.githubusercontent.com/homebridge/verified/latest/verified-plugins.json', { httpsAgent: null, }).toPromise() ).data; From bc5a1e2d559610f2b14bb29faf0919dac6f1c6cd Mon Sep 17 00:00:00 2001 From: Ben <43026681+bwp91@users.noreply.github.com> Date: Sat, 23 Sep 2023 21:02:16 +0100 Subject: [PATCH 12/16] Update package.json --- ui/package.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/ui/package.json b/ui/package.json index 2d797c227..516bc52b3 100644 --- a/ui/package.json +++ b/ui/package.json @@ -21,7 +21,7 @@ "@angular/platform-browser-dynamic": "^14.1.1", "@angular/router": "^14.1.1", "@auth0/angular-jwt": "^5.0.2", - "@homebridge/plugin-ui-utils": "0.0.19", + "@homebridge/plugin-ui-utils": "0.1.0", "@ng-bootstrap/ng-bootstrap": "^11.0.1", "@ngx-translate/core": "^14.0.0", "@ngx-translate/http-loader": "^7.0.0", @@ -92,4 +92,4 @@ "rxjs": "^7.4.0", "marked": "^4.0.13" } -} \ No newline at end of file +} From af499378588fc1e68804a654e68bbaa029a4f68a Mon Sep 17 00:00:00 2001 From: Ben <43026681+bwp91@users.noreply.github.com> Date: Sun, 24 Sep 2023 16:26:37 +0100 Subject: [PATCH 13/16] systeminformation (#1561) --- package-lock.json | 14 +++++++------- package.json | 2 +- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/package-lock.json b/package-lock.json index 6f6ad801d..0499a1923 100644 --- a/package-lock.json +++ b/package-lock.json @@ -50,7 +50,7 @@ "reflect-metadata": "0.1.13", "rxjs": "7.5.6", "semver": "7.3.7", - "systeminformation": "5.12.3", + "systeminformation": "5.16.9", "tail": "2.2.4", "tar": "6.1.11", "tcp-port-used": "1.0.2", @@ -8720,9 +8720,9 @@ "integrity": "sha512-jHL6UyIYpvEI7NsuWd0R3hJaPQTg6Oo4qSBo+oVfOEkv6rrQm/475RGSMmZgV6ajp+Sgrp9CqrDjQYAgQqiv1A==" }, "node_modules/systeminformation": { - "version": "5.12.3", - "resolved": "https://registry.npmjs.org/systeminformation/-/systeminformation-5.12.3.tgz", - "integrity": "sha512-aPyTDzK/VjEheGEODprxFTMahIWTHGyWXxTsh9EOHjeekVltrIWrle4dOZouOlOYgtKM1pDoHkrR+IssgYCK/A==", + "version": "5.16.9", + "resolved": "https://registry.npmjs.org/systeminformation/-/systeminformation-5.16.9.tgz", + "integrity": "sha512-QTlv3GGSromPeLVW3pzM6uxU8RbkacW9e0+ZX23GAXaX+XE0UToSygAxCJDHSty6RB9lAFHCHg+FfiXFChi/+w==", "os": [ "darwin", "linux", @@ -16295,9 +16295,9 @@ "integrity": "sha512-jHL6UyIYpvEI7NsuWd0R3hJaPQTg6Oo4qSBo+oVfOEkv6rrQm/475RGSMmZgV6ajp+Sgrp9CqrDjQYAgQqiv1A==" }, "systeminformation": { - "version": "5.12.3", - "resolved": "https://registry.npmjs.org/systeminformation/-/systeminformation-5.12.3.tgz", - "integrity": "sha512-aPyTDzK/VjEheGEODprxFTMahIWTHGyWXxTsh9EOHjeekVltrIWrle4dOZouOlOYgtKM1pDoHkrR+IssgYCK/A==" + "version": "5.16.9", + "resolved": "https://registry.npmjs.org/systeminformation/-/systeminformation-5.16.9.tgz", + "integrity": "sha512-QTlv3GGSromPeLVW3pzM6uxU8RbkacW9e0+ZX23GAXaX+XE0UToSygAxCJDHSty6RB9lAFHCHg+FfiXFChi/+w==" }, "tail": { "version": "2.2.4", diff --git a/package.json b/package.json index 2740293bc..088d59e87 100644 --- a/package.json +++ b/package.json @@ -83,7 +83,7 @@ "reflect-metadata": "0.1.13", "rxjs": "7.5.6", "semver": "7.3.7", - "systeminformation": "5.12.3", + "systeminformation": "5.16.9", "tail": "2.2.4", "tar": "6.1.11", "tcp-port-used": "1.0.2", From 7fb6d293ad2b889efa1e8d05e6a2f3403ee098ca Mon Sep 17 00:00:00 2001 From: Ben <43026681+bwp91@users.noreply.github.com> Date: Sun, 24 Sep 2023 16:34:07 +0100 Subject: [PATCH 14/16] Update package-lock.json --- ui/package-lock.json | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/ui/package-lock.json b/ui/package-lock.json index aedca7fb5..9b25a1210 100644 --- a/ui/package-lock.json +++ b/ui/package-lock.json @@ -19,7 +19,7 @@ "@angular/platform-browser-dynamic": "^14.1.1", "@angular/router": "^14.1.1", "@auth0/angular-jwt": "^5.0.2", - "@homebridge/plugin-ui-utils": "0.0.19", + "@homebridge/plugin-ui-utils": "0.1.0", "@ng-bootstrap/ng-bootstrap": "^11.0.1", "@ngx-translate/core": "^14.0.0", "@ngx-translate/http-loader": "^7.0.0", @@ -3039,9 +3039,9 @@ "dev": true }, "node_modules/@homebridge/plugin-ui-utils": { - "version": "0.0.19", - "resolved": "https://registry.npmjs.org/@homebridge/plugin-ui-utils/-/plugin-ui-utils-0.0.19.tgz", - "integrity": "sha512-axFX7lN2Yd7bz/6SlD7dzq5sY/N9+XYuLHPukuiyHQRDtNMRL1uDqJhOx6RVaN2tYDHB75h7YxRQWP7U44Mgzg==" + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/@homebridge/plugin-ui-utils/-/plugin-ui-utils-0.1.0.tgz", + "integrity": "sha512-dFpXhSy/+moDzOf8yRZxeuqZOAHTA0bZDElMXnO98cequ+7kPmX+wgREYVrYcHZYtJK744nD1n7qT2gy/E/yFg==" }, "node_modules/@humanwhocodes/config-array": { "version": "0.9.5", @@ -17137,9 +17137,9 @@ "dev": true }, "@homebridge/plugin-ui-utils": { - "version": "0.0.19", - "resolved": "https://registry.npmjs.org/@homebridge/plugin-ui-utils/-/plugin-ui-utils-0.0.19.tgz", - "integrity": "sha512-axFX7lN2Yd7bz/6SlD7dzq5sY/N9+XYuLHPukuiyHQRDtNMRL1uDqJhOx6RVaN2tYDHB75h7YxRQWP7U44Mgzg==" + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/@homebridge/plugin-ui-utils/-/plugin-ui-utils-0.1.0.tgz", + "integrity": "sha512-dFpXhSy/+moDzOf8yRZxeuqZOAHTA0bZDElMXnO98cequ+7kPmX+wgREYVrYcHZYtJK744nD1n7qT2gy/E/yFg==" }, "@humanwhocodes/config-array": { "version": "0.9.5", From b726b14507d39239f060a1ff240c1cb698202e6d Mon Sep 17 00:00:00 2001 From: Daniel Abdelsamed Date: Sun, 24 Sep 2023 11:52:22 -0400 Subject: [PATCH 15/16] Update comparison to timing safe (#1535) --- src/core/auth/auth.service.ts | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/core/auth/auth.service.ts b/src/core/auth/auth.service.ts index 635a8c22c..e33ef90cd 100644 --- a/src/core/auth/auth.service.ts +++ b/src/core/auth/auth.service.ts @@ -95,9 +95,11 @@ export class AuthService { * This will throw an error if the credentials are incorrect. */ private async checkPassword(user: UserDto, password: string) { - const hashedPassword = await this.hashPassword(password, user.salt); + const passwordAttemptHash = await this.hashPassword(password, user.salt); + const passwordAttemptHashBuff = Buffer.from(passwordAttemptHash, 'hex'); + const knownPasswordHashBuff = Buffer.from(user.hashedPassword, 'hex'); - if (hashedPassword === user.hashedPassword) { + if (crypto.timingSafeEqual(passwordAttemptHashBuff, knownPasswordHashBuff)) { return user; } else { throw new ForbiddenException(); From ba1f375a098ec05de15bfd18c947b7929fb5c745 Mon Sep 17 00:00:00 2001 From: Donavan Becker Date: Wed, 27 Sep 2023 17:56:10 -0500 Subject: [PATCH 16/16] Update CHANGELOG.md --- CHANGELOG.md | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 5f3eb2885..53cced042 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,16 @@ +## 4.50.6 (2023-09-27) + +### Bug Fixes + +- **System:** Update comparison to timing safe ([1535](https://github.com/homebridge/homebridge-config-ui-x/pull/1535)) + +### Other Changes + +- **i18n:** Update pt.json ([1503](https://github.com/homebridge/homebridge-config-ui-x/pull/1520)) +- **i18n:** Use verb form for buttons and menu items ([1533](https://github.com/homebridge/homebridge-config-ui-x/pull/1533)) +- **i18n:** Wait for custom UI ([1526](https://github.com/homebridge/homebridge-config-ui-x/pull/1526)) +- Updated npm dependencies + ## 4.50.5 (2023-08-19) ### Notable Changes