Repository navigation
Beacon Web - v1.2.0
Beacon v1.2.0
A big release for the mesh packet analyzer: the map now animates live traffic and shares as a link, "Stats" grows into an interactive Analytics tab with a whole-mesh neighbour graph, traces tell route-traces apart from pings, and self-hosters get a set of new customization switches.
✨ Highlights
- Watch the mesh live. A new Live button on the map animates each packet as a glowing dot travelling hop-by-hop along its real route, with a fading trail and a per-node flash.
- See the whole topology. The renamed Analytics tab adds an interactive Neighbour Graph, every node as a dot linked to the neighbours it has heard, colour-coded and clickable.
- Share the exact view. A Copy map link button captures your camera, basemap, filters and live state in a URL. Paste it and the recipient lands on precisely what you were looking at.
🗺️ Map
- Live packet flow. Press Live (bottom-center) to animate real-time traffic; nodes dim to the background and flash as a packet crosses them. Off by default; a shared link can open with it running.
- Neighbour links on selection. Clicking a node now draws its neighbour lines immediately (new "Selected" default), spotlighting that node and dimming the rest of the map.
- Links coloured by strength and freshness. Neighbour lines run red → yellow → green by how often a link was heard, and fade as the last contact gets older. A colour legend sits in Map Settings.
- Copy map link. Share your exact view (center, zoom, basemap, clustering, node-type filter, neighbour-lines mode, live on/off). Following a link never overwrites your own saved preferences.
- Remembered map settings. Clustering and the node-type filter now persist between visits.
📊 Analytics (formerly "Stats")
- Renamed to Analytics. Old bookmarks and links to the Stats tab still work.
- Interactive Neighbour Graph. Every node in a region is a dot joined to its heard neighbours, coloured by device type, sized by connectivity, with labels on the busiest hubs. Pan, zoom, drag.
- Search the graph by name. Type a node name and matches stay bright while the rest of the mesh fades far back, so one station pops out of a crowded web.
- Click to focus a node. Drill into a single node's neighbourhood, with links coloured by observation count and staleness. Click empty space to return to the full mesh.
- Node Types donut. The old "Coming soon" card now shows a live device-type breakdown with the total in the middle.
- Radio presets split. Each preset bar now stacks nodes vs. observers with a combined total.
- Clearer time windows. Charts are reordered and titled by their range vs. "all time". The summary tiles' window label now comes from the server instead of a fixed "24h".
- Mobile-friendly header. The section picker becomes a dropdown and the time-range buttons wrap on phones, so every control stays reachable.
🔀 Traces
- Trace vs. Ping. Each card carries a colour-coded label (amber TRACE / blue PING) and an All / Trace / Ping filter with a running count.
- Signal strength along the path. Cards preview the hop-by-hop route with per-hop SNR (dB), colour-coded good/medium/poor, from the most complete observation.
📡 Nodes & Observers
- Neighbour count. A new sortable Neighbors column in the node table, a count on mobile cards, and the neighbour's public-key prefix shown on each neighbour row in the detail panel.
- Copy public key. One-click copy beside a node's or observer's key, with a "Copied" confirmation.
- Copy Link on detail panels. Share a direct link that reopens that exact node or observer (region preserved). Shared links now reopen reliably on load.
- Minimize on mobile. The full-screen node panel can shrink to a bottom bar without deselecting, so you can peek at the map and its neighbour lines underneath.
📥 Packets
- Stable list while scrolled. New live packets no longer push or jump the rows you're reading. The live indicator becomes a "N new packets · scroll to top" button that counts what you missed and catches you up in one click. Switching regions snaps back to the top.
🛠️ For self-hosters
- Hide tabs. VITE_DISABLED_TABS removes any top-level tabs you don't want (safely ignored if it would hide everything).
- Theme allowlist. VITE_ENABLED_THEMES is now an exclusive allowlist. Two new MeshMapper themes (dark and light) ship but stay hidden unless allowed.
- Custom app name. VITE_APP_NAME rebrands the wordmark and footer (keeps your capitalization; avoid & and |).
- Skip the load splash. VITE_SKIP_SPLASH=true for kiosk/embedded/instant-load deployments.
- GitHub link. A header icon linking to the project.
- Public Docker images. Images are public on GHCR, so
docker compose upno longer needsdocker loginor a token. - :dev image tag. Pushes to dev now publish a separate :dev image for following the development build.
🐛 Fixes & maintenance
- Multi-airport regions now filter Analytics correctly (previously fell back to global totals).
- Observer airtime / receive-error charts are accurate over 7d and 30d (pair with the matching beacon-server version).
- Shared detail-panel links no longer get wiped during page load.
- Dependency bump (undici). Docker publish workflow fixed to post images publicly.