From 389b6354f710f5e3c6c35e75d978b8c58ebf949b Mon Sep 17 00:00:00 2001 From: Stephen Waits Date: Wed, 22 Apr 2026 19:34:21 -0600 Subject: [PATCH] fix: flash Elecrow M2 and Heltec V3 UART via web serial, bump astro to 6.1.9 --- package.json | 2 +- pnpm-lock.yaml | 55 +++++++++++++++++++++++++---------------------- src/lib/boards.ts | 31 +++++++++++++------------- 3 files changed, 46 insertions(+), 42 deletions(-) diff --git a/package.json b/package.json index 34a9a61..82242b6 100644 --- a/package.json +++ b/package.json @@ -12,7 +12,7 @@ "dependencies": { "@astrojs/svelte": "^8.0.4", "@tailwindcss/vite": "^4.2.2", - "astro": "^6.1.4", + "astro": "^6.1.9", "esptool-js": "^0.6.0", "marked": "^18.0.0", "svelte": "^5.55.2", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 3a9c664..dd65ff3 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -10,13 +10,13 @@ importers: dependencies: '@astrojs/svelte': specifier: ^8.0.4 - version: 8.0.4(astro@6.1.4(jiti@2.6.1)(lightningcss@1.32.0)(rollup@4.60.1)(typescript@5.9.3)(yaml@2.8.3))(jiti@2.6.1)(lightningcss@1.32.0)(svelte@5.55.2)(typescript@5.9.3)(yaml@2.8.3) + version: 8.0.4(astro@6.1.9(jiti@2.6.1)(lightningcss@1.32.0)(rollup@4.60.1)(typescript@5.9.3)(yaml@2.8.3))(jiti@2.6.1)(lightningcss@1.32.0)(svelte@5.55.2)(typescript@5.9.3)(yaml@2.8.3) '@tailwindcss/vite': specifier: ^4.2.2 version: 4.2.2(vite@7.3.2(jiti@2.6.1)(lightningcss@1.32.0)(yaml@2.8.3)) astro: - specifier: ^6.1.4 - version: 6.1.4(jiti@2.6.1)(lightningcss@1.32.0)(rollup@4.60.1)(typescript@5.9.3)(yaml@2.8.3) + specifier: ^6.1.9 + version: 6.1.9(jiti@2.6.1)(lightningcss@1.32.0)(rollup@4.60.1)(typescript@5.9.3)(yaml@2.8.3) esptool-js: specifier: ^0.6.0 version: 0.6.0 @@ -35,11 +35,11 @@ packages: '@astrojs/compiler@3.0.1': resolution: {integrity: sha512-z97oYbdebO5aoWzuJ/8q5hLK232+17KcLZ7cJ8BCWk6+qNzVxn/gftC0KzMBUTD8WAaBkPpNSQK6PXLnNrZ0CA==} - '@astrojs/internal-helpers@0.8.0': - resolution: {integrity: sha512-J56GrhEiV+4dmrGLPNOl2pZjpHXAndWVyiVDYGDuw6MWKpBSEMLdFxHzeM/6sqaknw9M+HFfHZAcvi3OfT3D/w==} + '@astrojs/internal-helpers@0.9.0': + resolution: {integrity: sha512-GdYkzR26re8izmyYlBqf4z2s7zNngmWLFuxw0UKiPNqHraZGS6GKWIwSHgS22RDlu2ePFJ8bzmpBcUszut/SDg==} - '@astrojs/markdown-remark@7.1.0': - resolution: {integrity: sha512-P+HnCsu2js3BoTc8kFmu+E9gOcFeMdPris75g+Zl4sY8+bBRbSQV6xzcBDbZ27eE7yBGEGQoqjpChx+KJYIPYQ==} + '@astrojs/markdown-remark@7.1.1': + resolution: {integrity: sha512-C6e9BnLGlbdv6bV8MYGeHpHxsUHrCrB4OuRLqi5LI7oiBVcBcqfUN06zpwFQdHgV48QCCrMmLpyqBr7VqC+swA==} '@astrojs/prism@4.0.1': resolution: {integrity: sha512-nksZQVjlferuWzhPsBpQ1JE5XuKAf1id1/9Hj4a9KG4+ofrlzxUUwX4YGQF/SuDiuiGKEnzopGOt38F3AnVWsQ==} @@ -53,8 +53,8 @@ packages: svelte: ^5.43.6 typescript: ^5.3.3 - '@astrojs/telemetry@3.3.0': - resolution: {integrity: sha512-UFBgfeldP06qu6khs/yY+q1cDAaArM2/7AEIqQ9Cuvf7B1hNLq0xDrZkct+QoIGyjq56y8IaE2I3CTvG99mlhQ==} + '@astrojs/telemetry@3.3.1': + resolution: {integrity: sha512-7fcIxXS9J4ls5tr8b3ww9rbAIz2+HrhNJYZdkAhhB4za/I5IZ/60g+Bs8q7zwG0tOIZfNB4JWhVJ1Qkl/OrNCw==} engines: {node: 18.20.8 || ^20.3.0 || >=22.0.0} '@babel/helper-string-parser@7.27.1': @@ -761,8 +761,8 @@ packages: array-iterate@2.0.1: resolution: {integrity: sha512-I1jXZMjAgCMmxT4qxXfPXa6SthSoE8h6gkSI9BGGNv8mP8G/v0blc+qFnZu6K42vTOiuME596QaLO0TP3Lk0xg==} - astro@6.1.4: - resolution: {integrity: sha512-SRy1bONuCHkGWhI5JiWCQKVDVbeaXOikjAVZs/Nz+lvUvubtdLoZfnacmuZHQ9RL2IOkU54M8/qZYm9ypJDKrg==} + astro@6.1.9: + resolution: {integrity: sha512-NsAHzMzpznB281g2aM5qnBt2QjfH6ttKiZ3hSZw52If8JJ+62kbnBKbyKhR2glQcJLl7Jfe4GSl0DihFZ36rRQ==} engines: {node: '>=22.12.0', npm: '>=9.6.5', pnpm: '>=7.1.0'} hasBin: true @@ -1038,6 +1038,11 @@ packages: engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} hasBin: true + is-docker@4.0.0: + resolution: {integrity: sha512-LHE+wROyG/Y/0ZnbktRCoTix2c1RhgWaZraMZ8o1Q7zCh0VSrICJQO5oqIIISrcSBtrXv0o233w1IYwsWCjTzA==} + engines: {node: '>=20'} + hasBin: true + is-inside-container@1.0.0: resolution: {integrity: sha512-KIYLCCJghfHZxqjYBE7rEy0OBuTd5xCHS7tHVgvCLkx7StIoaxwNW3hCALgEUjFfeRk+MG/Qxmp/vtETEF3tRA==} engines: {node: '>=14.16'} @@ -1741,13 +1746,13 @@ snapshots: '@astrojs/compiler@3.0.1': {} - '@astrojs/internal-helpers@0.8.0': + '@astrojs/internal-helpers@0.9.0': dependencies: picomatch: 4.0.4 - '@astrojs/markdown-remark@7.1.0': + '@astrojs/markdown-remark@7.1.1': dependencies: - '@astrojs/internal-helpers': 0.8.0 + '@astrojs/internal-helpers': 0.9.0 '@astrojs/prism': 4.0.1 github-slugger: 2.0.0 hast-util-from-html: 2.0.3 @@ -1775,10 +1780,10 @@ snapshots: dependencies: prismjs: 1.30.0 - '@astrojs/svelte@8.0.4(astro@6.1.4(jiti@2.6.1)(lightningcss@1.32.0)(rollup@4.60.1)(typescript@5.9.3)(yaml@2.8.3))(jiti@2.6.1)(lightningcss@1.32.0)(svelte@5.55.2)(typescript@5.9.3)(yaml@2.8.3)': + '@astrojs/svelte@8.0.4(astro@6.1.9(jiti@2.6.1)(lightningcss@1.32.0)(rollup@4.60.1)(typescript@5.9.3)(yaml@2.8.3))(jiti@2.6.1)(lightningcss@1.32.0)(svelte@5.55.2)(typescript@5.9.3)(yaml@2.8.3)': dependencies: '@sveltejs/vite-plugin-svelte': 6.2.4(svelte@5.55.2)(vite@7.3.2(jiti@2.6.1)(lightningcss@1.32.0)(yaml@2.8.3)) - astro: 6.1.4(jiti@2.6.1)(lightningcss@1.32.0)(rollup@4.60.1)(typescript@5.9.3)(yaml@2.8.3) + astro: 6.1.9(jiti@2.6.1)(lightningcss@1.32.0)(rollup@4.60.1)(typescript@5.9.3)(yaml@2.8.3) svelte: 5.55.2 svelte2tsx: 0.7.53(svelte@5.55.2)(typescript@5.9.3) typescript: 5.9.3 @@ -1796,17 +1801,14 @@ snapshots: - tsx - yaml - '@astrojs/telemetry@3.3.0': + '@astrojs/telemetry@3.3.1': dependencies: ci-info: 4.4.0 - debug: 4.4.3 dlv: 1.1.3 dset: 3.1.4 - is-docker: 3.0.0 + is-docker: 4.0.0 is-wsl: 3.1.1 which-pm-runs: 1.1.0 - transitivePeerDependencies: - - supports-color '@babel/helper-string-parser@7.27.1': {} @@ -2293,12 +2295,12 @@ snapshots: array-iterate@2.0.1: {} - astro@6.1.4(jiti@2.6.1)(lightningcss@1.32.0)(rollup@4.60.1)(typescript@5.9.3)(yaml@2.8.3): + astro@6.1.9(jiti@2.6.1)(lightningcss@1.32.0)(rollup@4.60.1)(typescript@5.9.3)(yaml@2.8.3): dependencies: '@astrojs/compiler': 3.0.1 - '@astrojs/internal-helpers': 0.8.0 - '@astrojs/markdown-remark': 7.1.0 - '@astrojs/telemetry': 3.3.0 + '@astrojs/internal-helpers': 0.9.0 + '@astrojs/markdown-remark': 7.1.1 + '@astrojs/telemetry': 3.3.1 '@capsizecss/unpack': 4.0.0 '@clack/prompts': 1.2.0 '@oslojs/encoding': 1.1.0 @@ -2311,7 +2313,6 @@ snapshots: cookie: 1.1.1 devalue: 5.7.0 diff: 8.0.4 - dlv: 1.1.3 dset: 3.1.4 es-module-lexer: 2.0.0 esbuild: 0.27.7 @@ -2700,6 +2701,8 @@ snapshots: is-docker@3.0.0: {} + is-docker@4.0.0: {} + is-inside-container@1.0.0: dependencies: is-docker: 3.0.0 diff --git a/src/lib/boards.ts b/src/lib/boards.ts index 9bc7510..4843b4d 100644 --- a/src/lib/boards.ts +++ b/src/lib/boards.ts @@ -7,20 +7,32 @@ export const boards: BoardDef[] = [ mcu: "ESP32-S3", radio: "SX1262", family: "esp32s3", - flashMethod: "download-only", + flashMethod: "web-serial", assetPattern: "donglora-elecrow_thinknode_m2-v{version}.bin", notes: - "Elecrow Meshtastic handset with SH1106 OLED. Uses CP2102 USB-to-UART bridge — download the .bin and flash with espflash CLI.", + "Elecrow Meshtastic handset with SH1106 OLED. Flashes over the built-in CP2102 USB-to-UART bridge — no native USB, so clients connect via serial (BLE planned).", + }, + { + id: "heltec_v3_uart", + name: "Heltec V3 (UART) — stock", + mcu: "ESP32-S3", + radio: "SX1262", + family: "esp32s3", + flashMethod: "web-serial", + assetPattern: "donglora-heltec_v3_uart-v{version}.bin", + notes: + "Default Heltec V3 hardware — pick this one if you bought a stock V3. Flashes over the board's CP2102 USB-to-UART bridge. Clients connect via serial (BLE planned), not native USB.", }, { id: "heltec_v3", - name: "Heltec V3", + name: "Heltec V3 (USB CDC) — modded", mcu: "ESP32-S3", radio: "SX1262", family: "esp32s3", flashMethod: "web-serial", assetPattern: "donglora-heltec_v3-v{version}.bin", - notes: "Native USB CDC-ACM (hardware mod may be required on some units)", + notes: + "Only choose this if you've hardware-modded your V3 for native USB CDC-ACM. Most stock V3s should use the UART variant above.", }, { id: "heltec_v4", @@ -31,17 +43,6 @@ export const boards: BoardDef[] = [ flashMethod: "web-serial", assetPattern: "donglora-heltec_v4-v{version}.bin", }, - { - id: "heltec_v3_uart", - name: "Heltec V3 (UART)", - mcu: "ESP32-S3", - radio: "SX1262", - family: "esp32s3", - flashMethod: "download-only", - assetPattern: "donglora-heltec_v3_uart-v{version}.bin", - notes: - "Uses CP2102 USB-to-UART bridge. Web flashing is unreliable — download the .bin and flash with espflash CLI.", - }, { id: "rak_wisblock_4631", name: "RAK WisBlock 4631",