From cb08116eaea50b32d6471e7f85388eedf0fadbb3 Mon Sep 17 00:00:00 2001 From: Kaj Schittecat Date: Thu, 9 Jul 2026 13:55:35 +0200 Subject: [PATCH] flasher/site: ThinkNode M9 + RAK WisMesh Tap V2 web-flash support Both new S3 boards are installable from the browser now: release.sh builds and ships their bins per channel, gen-flasher-meta emits their esp-web-tools manifests, and the site gets install cards for both. The cards are pinned to the beta feed (with a note) until the first stable promote that includes their bins; the wmSetChannel comment says how to unpin then. beta_38's beta feed and GitHub release carry the new bins retroactively. Co-Authored-By: Claude Fable 5 --- deploy/site/index.html | 10 ++++++++++ scripts/build/gen-flasher-meta.py | 4 +++- scripts/release.sh | 2 +- 3 files changed, 14 insertions(+), 2 deletions(-) diff --git a/deploy/site/index.html b/deploy/site/index.html index d245d75..2e78f91 100644 --- a/deploy/site/index.html +++ b/deploy/site/index.html @@ -350,6 +350,12 @@

LilyGo T-Deck / Plus

ESP32-S3 keyboard handheld.

+

ThinkNode M9

ESP32-S3 QWERTY handheld (LR1110).

+ +

New board: beta channel only until the next stable.

+

RAK WisMesh Tap V2

ESP32-S3 touch node.

+ +

New board: beta channel only until the next stable.

Tanmatsu

ESP32-P4 keyboard handheld.

Already have one? No USB flashing needed — install WADAMESH straight from the Tanmatsu app store on the device.

Get a Tanmatsu
@@ -510,6 +516,10 @@ We use no tracking, analytics, or advertising cookies. Our CDN and security prov // on the firmware host — latest/ (stable) <-> latest-beta/ (beta) — and the install // manifests, "what's new", the Launcher .bin link and the version picker follow. const WM = (window.WM = { feed:'latest', arch:'TOUCH' }); + // ThinkNode M9 + RAK Tap V2 exist on the BETA feed only until the first stable + // promote that includes them: their install buttons are pinned to latest-beta in + // the HTML and deliberately NOT switched by wmSetChannel. When a stable ships + // with their bins, add them here + to wmSetChannel and drop the pinned notes. const WM_MAN = { heltec:'manifest-heltec-v4-tft.json', tdeck:'manifest-tdeck.json' }; window.wmManifest = board => 'https://firmware.wadamesh.com/' + WM.feed + '/' + WM_MAN[board]; function wmWhatsNew(){ diff --git a/scripts/build/gen-flasher-meta.py b/scripts/build/gen-flasher-meta.py index ca2de08..68d7f5a 100644 --- a/scripts/build/gen-flasher-meta.py +++ b/scripts/build/gen-flasher-meta.py @@ -35,6 +35,8 @@ with open(os.path.join(outdir, "version.json"), "w") as f: BOARDS = { "manifest-tdeck.json": ("wadamesh — LilyGo T-Deck", "wadamesh-tdeck-merged.bin"), "manifest-heltec-v4-tft.json": ("wadamesh — Heltec V4 TFT", "wadamesh-heltec-v4-tft-merged.bin"), + "manifest-thinknode-m9.json": ("wadamesh — ThinkNode M9", "wadamesh-thinknode-m9-merged.bin"), + "manifest-rak-tap-v2.json": ("wadamesh — RAK WisMesh Tap V2", "wadamesh-rak-tap-v2-merged.bin"), } for fn, (name, binf) in BOARDS.items(): manifest = { @@ -55,4 +57,4 @@ for fn, (name, binf) in BOARDS.items(): with open(os.path.join(outdir, fn), "w") as f: json.dump(manifest, f, indent=2) -print(f"wrote version.json + 2 manifests for {tag} ({channel}) -> {outdir} (notes: {len(notes)})") +print(f"wrote version.json + {len(BOARDS)} manifests for {tag} ({channel}) -> {outdir} (notes: {len(notes)})") diff --git a/scripts/release.sh b/scripts/release.sh index 4c04369..47e3cde 100755 --- a/scripts/release.sh +++ b/scripts/release.sh @@ -27,7 +27,7 @@ OUT="$ROOT/out/firmware" # local mirror of the VPS firmwa DEST="${WADAMESH_VPS:-}"; DEST_PATH="${WADAMESH_VPS_PATH:-/srv/wadamesh/firmware}" # env:binname pairs — plain string form (works on macOS's bash 3.2; no associative arrays) -ENVS="heltec_v4_tft_companion_radio_usb_tcp_touch:wadamesh-heltec-v4-tft LilyGo_TDeck_companion_radio_touch:wadamesh-tdeck" +ENVS="heltec_v4_tft_companion_radio_usb_tcp_touch:wadamesh-heltec-v4-tft LilyGo_TDeck_companion_radio_touch:wadamesh-tdeck ThinkNode_M9_companion_radio_touch:wadamesh-thinknode-m9 rak_tap_v2_companion_radio_touch:wadamesh-rak-tap-v2" # Per-channel destination paths. if [ "$MODE" = "stable" ]; then