43 Commits

Author SHA1 Message Date
Kaj Schittecat 39a4db8f03 chore: refresh Mesh America catalog for beta_21 2026-06-30 17:36:58 +02:00
Kaj Schittecat 03e50b0609 touch: beta_21 — first stable build + test channel, MQTT bridge, contacts & signal-probe fixes
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>
2026-06-30 17:34:11 +02:00
Kaj Schittecat 56cf91ef5b chore: refresh Mesh America catalog for beta_20 2026-06-28 23:36:03 +02:00
Kaj Schittecat 1e00ac3876 chore: refresh Mesh America catalog for beta_19 2026-06-27 15:09:40 +02:00
Kaj Schittecat 2d49fb69ec site: add Tanmatsu support; Telegram -> Discord
- 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>
2026-06-26 20:45:47 +02:00
Kaj Schittecat 94ef98a12f chore: refresh Mesh America catalog for beta_18 2026-06-26 19:54:08 +02:00
Kaj Schittecat f6192aa6e5 touch+deploy: opt-in OpenTopoMap style + persist map link-lines (open PRs)
Implements the three open PRs, with OpenStreetMap kept as the shipping default and
OpenTopoMap added as a user toggle (the deploy PRs flipped the default to topo —
this keeps OSM default and makes topo opt-in).

PR #61 (@Yazutsu) — persist the map 'Show link lines' toggle across reboots:
TouchCfg gains map_show_links (cfg v20, default 1); saved in mapOptLinesCb, loaded
in begin().

PR #52/#53 (@samuelcoustet) — OpenTopoMap tile proxy, adapted:
- deploy: tiles.wadamesh.com.conf keeps the default /{z}/{x}/{y}.jpg on OSM and
  adds /opentopo/ (OpenTopoMap) + an explicit /osm/ alias; tile-transcode.py grows
  _fetch_tile_png/_tile_response_from_png helpers feeding /osm + /opentopo while the
  root route stays OSM.
- firmware: new map_style pref (cfg v21, 0=OSM default, 1=OpenTopoMap) + a
  'Topographic map' switch in Map → Options. Topo tiles are namespaced on disk
  (/tiles/topo) and fetched via the proxy's /opentopo route, so the OSM and topo
  caches never collide and toggling is instant for already-cached tiles. Topo
  bypasses the OSM-only microSD packs and always fetches online; the shared
  (z,x,y) fetch-dedup ring is cleared on toggle so the new style re-queues.

Legal: OpenTopoMap map tiles are © OpenTopoMap (CC-BY-SA) over © OpenStreetMap
contributors (ODbL) + SRTM. The on-map © attribution and the Options → Info credits
sheet switch to that text when topo is active; the proxy keeps a contactable
User-Agent + 14-day cache per OpenTopoMap's tile-usage policy.

Topo needs the VPS deploy (restart wadamesh-tile-transcode + reload nginx) before
the /opentopo route serves; until then topo tiles 404 (handled as a permanent miss,
no retry hammer). OSM default is unaffected.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Co-Authored-By: Yazutsu <andrzej@gruziel.pl>
2026-06-26 18:49:41 +02:00
Kaj Schittecat 142ea87064 tanmatsu app-store: description without comma/em-dash (verify_metadata regex)
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>
2026-06-25 17:53:36 +02:00
Kaj Schittecat 59b1b2ab09 touch(tanmatsu): beta_17 — Vol± gestures, message LED, microSD, backups on FFat, status-bar fixes
- 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>
2026-06-25 17:30:55 +02:00
Kaj Schittecat eb0f3cf0b0 chore: refresh Mesh America catalog for beta_16 2026-06-24 15:45:04 +02:00
Kaj Schittecat 4bb7c08bf0 site: standalone — 'install a previous version' picker (latest 4 betas + notes)
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>
2026-06-24 12:35:20 +02:00
Kaj Schittecat 475245c90e chore: refresh Mesh America catalog for beta_15 2026-06-24 11:01:48 +02:00
Kaj Schittecat 4e3c212a89 chore: refresh Mesh America catalog for beta_14 2026-06-24 00:43:49 +02:00
Kaj Schittecat fbc015cf5c site: Community Videos section + YouTube/Docs/Map quick-link buttons
- 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>
2026-06-24 00:34:44 +02:00
Kaj Schittecat 3ae9582431 chore: refresh Mesh America catalog for beta_13 2026-06-24 00:02:48 +02:00
Kaj Schittecat f985458363 chore: refresh Mesh America catalog for beta_12 2026-06-23 08:51:17 +02:00
Kaj Schittecat 3130a1198e chore: refresh Mesh America catalog for beta_11 2026-06-22 19:17:00 +02:00
Kaj Schittecat c931df6054 touch: beta_10 — trackball D-pad mode, microSD tile-cache fill, Battery group
- 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>
2026-06-22 00:08:13 +02:00
Kaj Schittecat f5362b1cb3 deploy: add Mesh America Configurator provider catalog
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>
2026-06-21 22:20:29 +02:00
Kaj Schittecat b85e0a4849 site: centre the BY MESHCOMOD byline on the full lockup (mark + word)
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>
2026-06-15 23:58:43 +02:00
Kaj Schittecat e7d6c73d16 site: align mark with the WADAMESH word; byline floats beneath
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>
2026-06-15 23:49:49 +02:00
Kaj Schittecat 48ef76fd88 site: Free byline, Telegram + bug buttons, BY MESHCOMOD byline
- 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>
2026-06-15 22:59:34 +02:00
Kaj Schittecat 11bd8365d6 beta_5: official-app region scope + contacts/discovered/sound/map overhaul
Companion / core (ported from meshcomod):
- Region/default scope from the official MeshCore app now works: handle
  CMD_SET/GET_DEFAULT_FLOOD_SCOPE 63/64 (companion-v1.16.0.3, issue #31) —
  previously fell through with no reply ("no_event_received").
- US/Canada radio preset corrected to 910.525 MHz / 62.5 kHz / SF7.
- T-Deck +22 dBm TX fix (SX1262 DIO2-as-RF-switch, issue #6) retained.

Touch UI (since beta_4):
- Contacts: person/antenna + red-blocked icons, block/unblock in the popup,
  table with sort/filter + multi-select delete (favourites protected),
  compact time/distance columns, long-name marquee, instant fav-star toggle.
- Discovered: persists across reboots, holds 48, cogwheel settings
  (auto-delete oldest + auto-delete above N hops), "48!" full badge.
- Sound: +/- volume, master toggle, separate Messages/@mention switches.
- Chats: per-row last-message time, per-channel mute, @mention jump-to-message.
- Map: remembers zoom + pan; compact contact popup (no Block button).
- Auto-add on its own page; full-screen settings; refined tab bar; drawer polish.
- T-Deck keyboard backspace at the caret; quick-replies scroll.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-15 22:34:04 +02:00
Kaj Schittecat 5efaefbf7f deploy: add tiles.wadamesh.com PNG->JPEG transcode service
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>
2026-06-14 10:54:45 +02:00
Kaj Schittecat 3104b6eaf6 site: add 512px PNG app icon (for app catalogs / Launcher)
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-14 02:20:56 +02:00
Kaj Schittecat a405513d84 flasher: show current release version + notes (pipeline-driven)
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>
2026-06-13 16:08:10 +02:00
Kaj Schittecat 0162ac4f4a site: landing refinements — bg fade, copy, repo link, V4 launcher rule
- 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>
2026-06-13 15:24:18 +02:00
Kaj Schittecat ac5ff606e7 site: animated mesh background — Vanta NET in wadamesh teal
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>
2026-06-13 14:39:01 +02:00
Kaj Schittecat 3ed6f52b08 site: animate flasher logo + standalone marks; add deploy-site.sh
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>
2026-06-13 13:22:16 +02:00
Kaj Schittecat 4513b97dbc site: animate the mesh mark — repeaters broadcast, packets ride the trails
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>
2026-06-13 13:22:16 +02:00
Kaj Schittecat 4ff517b756 site: center the guide intro paragraphs (.p no longer needs an .h2 sibling)
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Signed-off-by: Kaj Schittecat <kaj@schittecat.com>
2026-06-13 12:28:39 +02:00
Kaj Schittecat 3e0313090b site: add Privacy/Cookie/Terms policies + essential-cookie notice (GDPR)
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>
2026-06-13 12:21:32 +02:00
Kaj Schittecat e326ff7bca site: hero subtitle notes it's also a companion radio for the MeshCore app
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Signed-off-by: Kaj Schittecat <kaj@schittecat.com>
2026-06-13 12:12:44 +02:00
Kaj Schittecat b7f2ed8591 site: pills on one line (wrap on phones) + WADAMESH in all-caps in prose
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Signed-off-by: Kaj Schittecat <kaj@schittecat.com>
2026-06-13 12:05:20 +02:00
Kaj Schittecat bb76c30500 site: add a Multi-transport feature pill (companion over BLE/Wi-Fi/USB)
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Signed-off-by: Kaj Schittecat <kaj@schittecat.com>
2026-06-13 12:01:17 +02:00
Kaj Schittecat 2d5524484e site: Launcher path links to the installer page (bmorcelli.github.io/Launcher)
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Signed-off-by: Kaj Schittecat <kaj@schittecat.com>
2026-06-13 11:13:02 +02:00
Kaj Schittecat 4a6c08ce51 site: feature pills show an info popover on hover/tap
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>
2026-06-13 11:12:00 +02:00
Kaj Schittecat f53599e424 site: drop the 'Recommended' badge — both install paths are equal
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Signed-off-by: Kaj Schittecat <kaj@schittecat.com>
2026-06-13 11:08:55 +02:00
Kaj Schittecat 870e2ecb3a site: center the hero brand + send flasher.* to the journey
- 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>
2026-06-13 11:07:01 +02:00
Kaj Schittecat ef2f3f4396 site: brand the landing + flasher with the wadamesh logo (light theme)
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>
2026-06-13 11:00:34 +02:00
Kaj Schittecat c4798dceab site: guided landing at wadamesh.com — Standalone vs bmorcelli's Launcher
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>
2026-06-13 10:50:45 +02:00
Kaj Schittecat 27303ad948 deploy: web flasher (esp-web-tools) + apex redirect + rolling /latest/
- 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>
2026-06-13 10:41:00 +02:00
Kaj Schittecat eb07184c3e deploy: VPS + Cloudflare bundle (nginx vhosts, release script, setup guide)
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>
2026-06-13 09:04:17 +02:00