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: | 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/package.json b/packages/web/package.json index 2c95fee9..7d082b11 100644 --- a/packages/web/package.json +++ b/packages/web/package.json @@ -27,7 +27,7 @@ "package": "gzipper c -i html,js,css,png,ico,svg,json,webmanifest,txt dist dist/output && tar -cvf dist/build.tar -C ./dist/output/ ." }, "dependencies": { - "@bufbuild/protobuf": "^2.6.0", + "@bufbuild/protobuf": "^2.8.0", "@hookform/resolvers": "^5.1.1", "@meshtastic/core": "workspace:*", "@meshtastic/transport-http": "workspace:*", 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": "Език", 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")} />