From 119cde65c7a063567107d1c30f8ef573f68cf678 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Sun, 14 Sep 2025 14:51:12 -0400 Subject: [PATCH 1/5] chore(i18n): New Crowdin Translations by GitHub Action (#849) Co-authored-by: Crowdin Bot --- .../public/i18n/locales/bg-BG/deviceConfig.json | 16 ++++++++-------- .../web/public/i18n/locales/bg-BG/dialog.json | 2 +- .../public/i18n/locales/bg-BG/moduleConfig.json | 4 ++-- packages/web/public/i18n/locales/bg-BG/ui.json | 2 +- 4 files changed, 12 insertions(+), 12 deletions(-) diff --git a/packages/web/public/i18n/locales/bg-BG/deviceConfig.json b/packages/web/public/i18n/locales/bg-BG/deviceConfig.json index d9cee704..ad8a7338 100644 --- a/packages/web/public/i18n/locales/bg-BG/deviceConfig.json +++ b/packages/web/public/i18n/locales/bg-BG/deviceConfig.json @@ -231,8 +231,8 @@ "label": "SSID" }, "subnet": { - "description": "Subnet Mask", - "label": "Subnet" + "description": "Подмрежова маска", + "label": "Подмрежа" }, "wifiEnabled": { "description": "Активиране или дезактивиране на WiFi радиото", @@ -401,20 +401,20 @@ "label": "Публичен ключ" }, "primaryAdminKey": { - "description": "The primary public key authorized to send admin messages to this node", - "label": "Primary Admin Key" + "description": "Основният публичен ключ, оторизиран за изпращане на администраторски съобщения до този възел", + "label": "Основен администраторски ключ" }, "secondaryAdminKey": { - "description": "The secondary public key authorized to send admin messages to this node", - "label": "Secondary Admin Key" + "description": "Вторичният публичен ключ, оторизиран за изпращане на администраторски съобщения до този възел", + "label": "Вторичен администраторски ключ" }, "serialOutputEnabled": { "description": "Serial Console over the Stream API", "label": "Serial Output Enabled" }, "tertiaryAdminKey": { - "description": "The tertiary public key authorized to send admin messages to this node", - "label": "Tertiary Admin Key" + "description": "Третичният публичен ключ, оторизиран за изпращане на администраторски съобщения до този възел", + "label": "Третичен администраторски ключ" }, "adminSettings": { "description": "Настройки за Admin", diff --git a/packages/web/public/i18n/locales/bg-BG/dialog.json b/packages/web/public/i18n/locales/bg-BG/dialog.json index d13d3a60..1940890b 100644 --- a/packages/web/public/i18n/locales/bg-BG/dialog.json +++ b/packages/web/public/i18n/locales/bg-BG/dialog.json @@ -141,7 +141,7 @@ "title": "Рестартиране на устройството", "description": "Reboot now or schedule a reboot of the connected node. Optionally, you can choose to reboot into OTA (Over-the-Air) mode.", "ota": "Reboot into OTA mode", - "enterDelay": "Enter delay", + "enterDelay": "Въведете забавяне", "scheduled": "Насрочено е рестартиране", "schedule": "Планиране на рестартиране", "now": "Рестартиране сега", diff --git a/packages/web/public/i18n/locales/bg-BG/moduleConfig.json b/packages/web/public/i18n/locales/bg-BG/moduleConfig.json index a0dfbd64..674a28ac 100644 --- a/packages/web/public/i18n/locales/bg-BG/moduleConfig.json +++ b/packages/web/public/i18n/locales/bg-BG/moduleConfig.json @@ -177,8 +177,8 @@ "description": "Output Buzzer" }, "active": { - "label": "Active", - "description": "Active" + "label": "Активно", + "description": "Активно" }, "alertMessage": { "label": "Предупредително съобщение", diff --git a/packages/web/public/i18n/locales/bg-BG/ui.json b/packages/web/public/i18n/locales/bg-BG/ui.json index d8bb5bbc..6f779a31 100644 --- a/packages/web/public/i18n/locales/bg-BG/ui.json +++ b/packages/web/public/i18n/locales/bg-BG/ui.json @@ -191,7 +191,7 @@ "label": "Неизвестен брой хопове" }, "showUnheard": { - "label": "Never heard" + "label": "Никога не е чуван" }, "language": { "label": "Език", From eb2791e2064733ed82c25fbcb81f8bc115d848a3 Mon Sep 17 00:00:00 2001 From: Dan Ditomaso Date: Sun, 14 Sep 2025 15:10:56 -0400 Subject: [PATCH 2/5] Fix for nightly release (#853) * fix: removed commas in tag name * removed `all_tags` from workflow --- .github/workflows/nightly.yml | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/.github/workflows/nightly.yml b/.github/workflows/nightly.yml index 99ad7402..49791161 100644 --- a/.github/workflows/nightly.yml +++ b/.github/workflows/nightly.yml @@ -77,9 +77,8 @@ jobs: fi # Outputs - echo "immutable_tag=${IMMUTABLE}" >> "$GITHUB_OUTPUT" - echo "moving_tag=nightly" >> "$GITHUB_OUTPUT" - echo "all_tags=nightly,${IMMUTABLE}" >> "$GITHUB_OUTPUT" + echo "moving_tag=nightly" >> "$GITHUB_OUTPUT" + echo "immutable_tag=${IMMUTABLE}" >> "$GITHUB_OUTPUT" echo "created=${ISO_CREATED}" >> "$GITHUB_OUTPUT" echo "Resolved tags: nightly and ${IMMUTABLE}" @@ -93,7 +92,9 @@ jobs: containerfiles: | ./packages/web/infra/Containerfile image: ${{ env.REGISTRY_IMAGE }} - tags: ${{ steps.meta.outputs.all_tags }} + tags: | + ${{ steps.meta.outputs.moving_tag }} + ${{ steps.meta.outputs.immutable_tag }} oci: true platforms: linux/amd64,linux/arm64 labels: | From aaf85943a80144d85902c5ac1e62a0d4996976b6 Mon Sep 17 00:00:00 2001 From: Jeremy Gallant <8975765+philon-@users.noreply.github.com> Date: Mon, 15 Sep 2025 03:31:47 +0200 Subject: [PATCH 4/5] Address new linting rules (#851) Co-authored-by: philon- --- biome.json | 6 +++--- packages/core/src/utils/transform/fromDevice.ts | 6 ++---- .../transport-web-bluetooth/src/transport.test.ts | 4 +++- .../web/src/components/Dialog/ImportDialog.tsx | 4 ++-- .../src/components/Dialog/ManagedModeDialog.tsx | 1 - .../web/src/components/Dialog/ShutdownDialog.tsx | 2 +- .../Dialog/UnsafeRolesDialog/UnsafeRolesDialog.tsx | 1 - packages/web/src/components/Form/FormSelect.tsx | 2 +- .../PageComponents/ChannelConfig/Channel.tsx | 2 +- packages/web/src/components/ThemeSwitcher.tsx | 1 - .../src/components/UI/Checkbox/Checkbox.test.tsx | 1 + packages/web/src/components/UI/ErrorPage.tsx | 10 ++-------- .../components/generic/Filter/FilterControl.tsx | 1 - packages/web/src/core/utils/ip.ts | 2 +- packages/web/src/pages/Config/index.tsx | 14 +++++++++----- packages/web/src/pages/Dashboard/index.tsx | 2 +- 16 files changed, 27 insertions(+), 32 deletions(-) diff --git a/biome.json b/biome.json index b21c8ed4..bfe66739 100644 --- a/biome.json +++ b/biome.json @@ -3,9 +3,9 @@ "includes": [ "**/*.ts", "**/*.tsx", - "!npm_modules/**", - "!dist/**", - "!npm/**", + "!npm_modules", + "!dist", + "!npm", "**/*.json", "!**/locales/*-*/*.json" ], diff --git a/packages/core/src/utils/transform/fromDevice.ts b/packages/core/src/utils/transform/fromDevice.ts index 832d7356..a21cf6cc 100644 --- a/packages/core/src/utils/transform/fromDevice.ts +++ b/packages/core/src/utils/transform/fromDevice.ts @@ -14,7 +14,7 @@ export const fromDeviceStream: () => TransformStream = byteBuffer = new Uint8Array([...byteBuffer, ...chunk]); let processingExhausted = false; while (byteBuffer.length !== 0 && !processingExhausted) { - const framingIndex = byteBuffer.findIndex((byte) => byte === 0x94); + const framingIndex = byteBuffer.indexOf(0x94); const framingByte2 = byteBuffer[framingIndex + 1]; if (framingByte2 === 0xc3) { if (byteBuffer.subarray(0, framingIndex).length) { @@ -35,9 +35,7 @@ export const fromDeviceStream: () => TransformStream = ) { const packet = byteBuffer.subarray(4, 4 + (msb << 8) + lsb); - const malformedDetectorIndex = packet.findIndex( - (byte) => byte === 0x94, - ); + const malformedDetectorIndex = packet.indexOf(0x94); if ( malformedDetectorIndex !== -1 && packet[malformedDetectorIndex + 1] === 0xc3 diff --git a/packages/transport-web-bluetooth/src/transport.test.ts b/packages/transport-web-bluetooth/src/transport.test.ts index a3727096..c7825eca 100644 --- a/packages/transport-web-bluetooth/src/transport.test.ts +++ b/packages/transport-web-bluetooth/src/transport.test.ts @@ -14,7 +14,9 @@ class MiniEmitter { this.listeners.get(type)?.delete(listener); } dispatchEvent(event: Event) { - this.listeners.get(event.type)?.forEach((l) => l(event)); + this.listeners.get(event.type)?.forEach((l) => { + l(event); + }); } } diff --git a/packages/web/src/components/Dialog/ImportDialog.tsx b/packages/web/src/components/Dialog/ImportDialog.tsx index fd5dba03..7b2fb8fd 100644 --- a/packages/web/src/components/Dialog/ImportDialog.tsx +++ b/packages/web/src/components/Dialog/ImportDialog.tsx @@ -84,7 +84,7 @@ export const ImportDialog = ({ open, onOpenChange }: ImportDialogProps) => { }, [importDialogInput, t]); const apply = () => { - channelSet?.settings.map( + channelSet?.settings.forEach( (ch: Protobuf.Channel.ChannelSettings, index: number) => { if (importIndex[index] === -1) { return; @@ -140,7 +140,7 @@ export const ImportDialog = ({ open, onOpenChange }: ImportDialogProps) => { const onSelectChange = (value: string, index: number) => { const newImportIndex = [...importIndex]; - newImportIndex[index] = Number.parseInt(value); + newImportIndex[index] = Number.parseInt(value, 10); setImportIndex(newImportIndex); }; diff --git a/packages/web/src/components/Dialog/ManagedModeDialog.tsx b/packages/web/src/components/Dialog/ManagedModeDialog.tsx index 6146dc2a..275ccfa5 100644 --- a/packages/web/src/components/Dialog/ManagedModeDialog.tsx +++ b/packages/web/src/components/Dialog/ManagedModeDialog.tsx @@ -43,7 +43,6 @@ export const ManagedModeDialog = ({
setConfirmState(!confirmState)} name="confirmUnderstanding" diff --git a/packages/web/src/components/Dialog/ShutdownDialog.tsx b/packages/web/src/components/Dialog/ShutdownDialog.tsx index b53da064..f482be2e 100644 --- a/packages/web/src/components/Dialog/ShutdownDialog.tsx +++ b/packages/web/src/components/Dialog/ShutdownDialog.tsx @@ -37,7 +37,7 @@ export const ShutdownDialog = ({ open, onOpenChange }: ShutdownDialogProps) => { setTime(Number.parseInt(e.target.value))} + onChange={(e) => setTime(Number.parseInt(e.target.value, 10))} suffix={t("unit.minute.plural")} />