- App drawer: size tiles to fit so the bottom row's labels aren't clipped, and
show a persistent scrollbar when the grid overflows (discoverable scroll).
- Snake: steer via the hardware swipe detector (works on the V4 cap-touch and
the T-Deck), stop touch/swipe leaking to the screen behind the overlay, and
gate the status bar while playing.
- Snake app-drawer icon drawn from shapes — the U+1F40D emoji isn't in the baked
colour-emoji set, so it rendered as a tofu box.
- Add beta_7 release notes.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
- New Monitor app (app drawer): live RF sniffer — recently-heard feed
(type / RSSI / SNR / hops, colour-coded), link-margin grade, packet rate,
and an RSSI + noise-floor scope with an on-screen dBm scale; portrait /
landscape aware. Backed by a recent-RX ring buffer in MyMesh (logRxRaw).
- Chat: DM person icon / channel group icon; block non-contact senders by
name; keep scroll position when opening a thread; contacts sort popup
closes on select; long-press popup close-X no longer overlaps buttons.
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>