New: stable/test update channels with an opt-in "Get test builds (beta)" toggle on
OTA devices (switches both the update check and what you install); experimental
opt-in MQTT bridge (consent-gated, payload encryption, direct messages off by
default); Portugal (Narrow) region preset (#74); saved-contacts counter in the
Contacts overflow menu (#72).
Fixed: the signal probe is now strictly zero-hop so a repeater can't re-flood it;
the contact list sorts before capping so the most relevant contacts show, with a
"+N more — search to narrow" footer (#73); the blocked-users list opened from
Contacts shows the two-line title bar with a back button; the Contacts overflow
popup fits the screen again.
Also lands the two-channel release tooling (scripts/release.sh stable/beta modes +
gen-flasher-meta channel arg), the docs site, and the MQTT reference decryptor.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
- List the Tanmatsu (ESP32-P4) in the hero + meta description.
- Add a Tanmatsu box to the standalone installer: no USB flashing — install from the Tanmatsu app store on-device — plus a link to Nicolai Electronics' shop. Boards grid now auto-fits 3 cards.
- Replace the Telegram floating button with Discord (discord.gg/T8X2UaQ7Sm).
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
The launcher store's verify_metadata check restricts description to
^[A-Za-z0-9_\- .!@#$%^&*()/\\]+$ (no commas, no em-dash). Reword so the
template passes on its own instead of needing a manual PR edit each release.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
- Vol+ short = top-bar dropdown toggle; long hold = sound master toggle
- Message-notification LED: flash on new message, soft green glow on unread; toggle in Display settings
- Backups use the internal FFat partition (export/scan/import) + Import button on the Backups page
- microSD browsable in the file manager (P4 SDMMC slot 0; the C6 radio's slot 1 untouched)
- Status-bar icon overlaps fixed (charging-slide + language indicator now SC-scaled with the cluster)
- Vol- screen sleep/wake/lock (screen-lock work)
- Companion link: TCP server start + BLE bond NVS persistence + app-sent channel-message mirror
All Tanmatsu changes gated #if defined(HAS_TANMATSU); T-Deck/V4 bins stay byte-identical.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Collapsible version picker in the standalone install guide: a dropdown of the latest 4 betas (from the GitHub releases API — the firmware-host listing has no CORS), rendered release notes per version, and selecting a version re-points both Install buttons at that build (client-built manifest -> the CORS-enabled firmware-host -merged.bin). Defaults to latest; switching back restores the /latest/ manifest.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
- New "Community videos" section under the install/flasher area: a JS-array-driven grid with a click-to-play facade (youtube-nocookie, lazy iframe). First entry is KDHD Stuff's review; add more by appending to the VIDEOS array.
- Float the quick-links into stacked left/right rails: left = Telegram + a YouTube button that jumps to the videos section; right = bug report + a Documentation button (placeholder — toasts "coming soon") + a Map button to t413.com's MapTileDl downloader.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
- T-Deck: trackball mouse/D-pad navigation toggle (Settings -> Keyboard).
- Map (#20): microSD-tile mode now caches Wi-Fi-fetched tiles onto the SD card so
the offline library fills in + grows instead of going blank past its edge.
- Power: PR #19 idle power-save (Dan Vybiral / @Vybo) relocated into a new
'Battery' group under Settings -> System, alongside a button that opens the
battery / power-history screen.
- TouchCfg v10 (ui_scale, tb_keypad, sleep_idle). Mesh America catalog -> beta_10.
Curated touch overlay onto main (the WIP Tanmatsu ESP32-P4 build system stays on
the tanmatsu-port branch). Co-Authored-By: Dan Vybiral <dan.vybiral@greencode.cz>
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Catalog JSON (Mesh America provider schema) + a reusable generator so the two
wadamesh touch boards appear in the Mesh America Device Configurator
(apps.meshamerica.com — the flasher Cascadia Mesh uses). Points at the immutable
per-tag bins on firmware.wadamesh.com (HTTPS + CORS). Served live over
raw.githubusercontent.com.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Position the byline relative to .brand (the whole mark+word lockup) instead of just the word, so it centres on the combined logo+title (x=640) rather than under the word alone (x=694). The mark stays aligned with the word.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
The mark was vertically centring against the word+byline column, so it sat ~13px below the wordmark. Position the byline absolutely under the word so the mark centres on the word itself. ("Free — as it should be" was already centred on the mark+word lockup.)
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
- BY MESHCOMOD byline under the WADAMESH wordmark.
- Plain "Free — as it should be" line under the open-source badge.
- Two fixed floating buttons: Telegram (top-left -> the meshcomod group) and a bug report (top-right -> the GitHub issues page).
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
The firmware fetches map tiles as .jpg, but the tiles.wadamesh.com proxy was a
plain PNG passthrough (no .jpg handler) -> every Wi-Fi tile fetch 404'd. Add the
transcode service (tile-transcode.py on 127.0.0.1:5005, fetches OSM PNG and
re-encodes JPEG with Pillow) + its systemd unit, and update the nginx vhost to
proxy /{z}/{x}/{y}.jpg and /elev to it while keeping the legacy .png passthrough.
Same design as the meshcomod tile proxy. HTTP-only by design (device can't TLS).
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
The esp-web-tools manifest carried a frozen version:beta_1 while the rolling
/latest/ bins moved on, so the web flasher always said beta_1. Fix:
- scripts/build/gen-flasher-meta.py emits version.json (tag + notes) + per-release
manifests (version=tag) into /latest/; release.sh + the CI workflow run it, so
the metadata rolls with every release.
- the site points the install buttons at the VPS manifests and renders a live
'What's new in <tag>' block from version.json.
- drop the frozen static site manifests.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
- Mesh background: soften the central fade so the net carries faintly across the middle (mask alpha .22) instead of clearing fully, keeping copy readable.
- Hero copy: "MeshCore MESHCOMOD firmware ...".
- Link the "open source · GPL-3.0" badge to the GitHub repo (opens in a new tab) with a hover state.
- Install flow: Launcher is LilyGo T-Deck only — badge the path, remove the Heltec V4 download from the Launcher guide, and steer V4 owners to Standalone (its only route).
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Replace the hand-rolled canvas mesh backdrop with a Vanta NET 3D dot-and-line network (three.js r121 + vanta.net), recoloured to brand teal on white (ported from the MENTALITEAM site). A horizontal mask fades the net out of the central text column so copy stays readable, plus a white text-shadow halo for line-ends near the margins. Skipped under prefers-reduced-motion / no-WebGL (falls back to plain white + the CSS glow).
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Propagate the mesh-mark animation (repeater broadcast rings + cyan signal
packets on the transport trails) to the flasher page and the standalone
wadamesh-mark.svg / wadamesh-lockup.svg. The standalone SVGs embed the CSS
inside the file so they animate even when used as <img>. badge.svg (favicon)
left static. All collapse to the static mark under prefers-reduced-motion.
Add scripts/deploy-site.sh: rsync deploy/site/ to the VPS web root
(/srv/wadamesh/site, the apex wadamesh.com origin), env-driven WADAMESH_VPS
like release.sh, with --dry-run support.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Pure inline SVG + CSS, no JS or deps: each of the 7 nodes emits a staggered
expanding broadcast ring (a pulse rippling left->right across the mesh), and
glowing cyan signal packets stream along the black transport trails, passing
through the repeater dots. Collapses to the original static logo under
prefers-reduced-motion.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Mirrors the meshcomod legal model (ALLFATHER BV, Belgian law, GDPR controller)
adapted to wadamesh's stack: Privacy Policy, Cookie Policy and Terms as
footer-linked modals, plus a dismissible essential-cookies notice (we use no
tracking/analytics — only Cloudflare's strictly-necessary cookies). Discloses the
third-party resource loads (Cloudflare, Google Fonts, the esp-web-tools CDN, OSM
tiles). Company footer line added.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Signed-off-by: Kaj Schittecat <kaj@schittecat.com>
Each hero pill (Offline map, Chat & channels, Contacts, 11 languages) now reveals
a short description on hover (desktop) or tap (touch), with a tap-elsewhere-to-close.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Signed-off-by: Kaj Schittecat <kaj@schittecat.com>
- landing hero: replace the inline lockup (its 720-wide viewBox had trailing
whitespace, pulling the artwork left of centre) with the mark SVG + an HTML
wordmark in a flex row — perfectly centred, wordmark renders crisp.
- flasher.wadamesh.com now 301s to wadamesh.com so every visitor (incl. the
firmware's update link) lands on the guided choose-your-path journey rather
than the bare Connect buttons.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Signed-off-by: Kaj Schittecat <kaj@schittecat.com>
Rebuild on the real logo palette: white background, the dark-ink lockup
(#15181E zigzag + #15B6A6 teal dots), JetBrains Mono wordmark, and the cyan/teal
dots as the accent system (#15B6A6 primary, #19D6C2 bright). Inline the dark
lockup SVG (so the wordmark renders true) + add badge favicon + logo SVGs.
Flasher page retheme to match. Deployed + verified live through Cloudflare.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Signed-off-by: Kaj Schittecat <kaj@schittecat.com>
deploy/site/: a visual install journey served at the apex. Hero + an animated
mesh backdrop, then a two-path chooser:
- Standalone -> embedded esp-web-tools flasher (board picker, 3 steps)
- With Launcher -> step-by-step + app-image downloads (/latest/*.bin)
apex vhost switched from 301->flasher to serving the landing; release.sh now also
rolls the app-only bins into /latest/ for the Launcher path. Deployed + verified
live through Cloudflare (wadamesh.com 200).
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Signed-off-by: Kaj Schittecat <kaj@schittecat.com>
- deploy/flasher/: browser Web Serial installer (board picker for V4 + T-Deck),
manifests pointing at firmware.wadamesh.com/latest/*-merged.bin
- deploy/nginx/firmware: serve /latest/ + Access-Control-Allow-Origin so the
flasher fetches bins cross-origin
- deploy/nginx/flasher: flasher.wadamesh.com vhost + wadamesh.com/www 301->flasher
- release.sh: refresh the rolling /latest/ merged bins each publish
Deployed + verified live through Cloudflare. VPS IP kept out of the repo
(Cloudflare fronts the origin).
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Signed-off-by: Kaj Schittecat <kaj@schittecat.com>
The wadamesh.com distribution stack, ready to drop onto a new VPS behind
Cloudflare:
- deploy/nginx/tiles.wadamesh.com.conf — OSM tile proxy (HTTP origin, double-quoted
location regex, resolver + variable proxy_pass, OSM UA, 14d disk cache)
- deploy/nginx/firmware.wadamesh.com.conf — bins + the beta_<N> update-check listing
- scripts/release.sh — build both boards tagged, refresh the listing, rsync to the VPS
- deploy/README.md — VPS + Cloudflare DNS/SSL/cache setup, publish flow
VPS target supplied via $WADAMESH_VPS at publish time — no IP/SSH in the repo
(Cloudflare fronts the origin). Web flasher + OTA re-enable are the remaining
pre-launch pieces (noted in deploy/README.md).
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Signed-off-by: Kaj Schittecat <kaj@schittecat.com>