Skip to content

Beacon Web - v1.3.0

Choose a tag to compare

@MrAlders0n MrAlders0n released this 29 Jul 01:58
· 186 commits to main since this release
5ac36ce

Beacon v1.3.0

A big release for the packet analyzer: the packet list becomes a full table with expandable per-observer detail, packet routes get a self-contained path map, Analytics gains Talkers and Clock Drift tabs, and the map picks up an IATA border overlay.

✨ Highlights

  • Packet list is now a table. On desktop the list is a proper table with one-line rows under a sticky header, and expanding a row opens an inline per-observer breakdown in place of the old card.
  • See a packet's route on a map. "View path on map" opens a self-contained mini-map of the packet's resolved route(s), floating over the analyzer so closing it returns you exactly where you were.
  • Two new Analytics tabs. Talkers ranks top advertisers and sender names, and Clock Drift flags repeaters and room servers whose clock has drifted past the server threshold.

📥 Packets (new table layout)

  • Single-line rows. Each packet is one row under a sticky header showing hash, type, route, observation count, hops, hash size, source → destination, IATA and age. Mobile keeps the card layout on narrow screens.
  • Expand a row for per-observer detail. Opening a row reveals a timing strip (observer, first/last heard, spread) and a per-observer table with SNR, RSSI, propagation, hops and resolved path for each observer, plus loading, error/retry and empty states.
  • Source → destination chips. The Src → Dst column shows a packet's resolved endpoints as confidence-tinted chips (high / ambiguous / unresolved) and truncates cleanly on narrow screens. Historical rows read n/a, since endpoints are only resolved on the live feed for now.
  • Jump straight to an observation. Clicking an observation opens the analyzer on that exact observation.
  • Separate link states for rows and the analyzer. ?hash expands a row and ?analyze=1 opens the analyzer drawer, independently. Closing the analyzer leaves the row expanded, and a reload no longer reopens a drawer you closed.
  • Live detail while open. While a row is open, its detail refreshes on each new observation, so the table keeps pace as the count ticks up.

🧭 Packet path map

  • View path on map. From the analyzer or an expanded row, this opens a self-contained mini-map of the packet's resolved route(s). It floats over the analyzer instead of switching tabs, so closing returns you where you were.
  • A path per observation. One coloured route per observation, sorted fastest first. "All paths" overlays every route, and clicking an observer isolates theirs. Path nodes are tappable for name and coordinates.
  • Full chain, no guessing. Paths draw source → relay hops → destination. Endpoints are only plotted when they resolved unambiguously, so an ambiguous 1-byte prefix is left off rather than guessed.
  • Shareable. ?path= deep links open a specific route. On mobile, attribution collapses to a small (i) so it doesn't cover the observer list.
  • Accurate live animation. The live map flow now follows the same source → hops → destination chain, so packets animate from where they originated instead of the first relay.

📊 Analytics

  • Talkers tab. Top advertisers with a flood/direct split, per-day rate, and node type and IATA per row, beside a top-talkers leaderboard grouped by decrypted sender name.
  • Clock Drift tab. Repeaters and room servers whose advert-derived clock has drifted past the server threshold, worst first, with anything 1h or more off flagged red. It isn't time-windowed, so there's no range selector.
  • Clock drift on node detail. The node detail panel now shows a node's clock drift (+42s ahead, -1h 1m behind, or in sync).
  • Overview sparklines match their number. Overview KPI sparklines are pinned to a fixed 24h window instead of following the selected range, so the figure and its sparkline agree.

📡 Nodes

  • Search by public-key prefix. The Nodes table now searches by public-key prefix as well as name. Switching field clears the box, and non-hex characters are ignored rather than sent, which previously errored the whole table.

🗺️ Map

  • IATA border overlay. Toggleable region outlines with a themed legend, remembered like your other map settings and shareable via ?borders=. Borders load only while the layer is on, and IATAs with no configured border are skipped.

🐛 Fixes

  • Multi-select packet filters now apply server-side. Previously a filter only took effect server-side when exactly one value was picked, so paging through multi-select results pulled unfiltered history.
  • ?hash is no longer stripped on load, so deep links to older packets work again.
  • Live re-observations now widen a packet's heard window instead of replacing it, so an expanded row's spread no longer reads 0 for re-heard packets.
  • ?path deep links restore correctly when ?analyze is absent.
  • Message bodies keep their line breaks in channel messages and in TEXT, RESPONSE and GROUP_TEXT payloads.
  • TRACE paths now resolve like every other path, showing real hop names instead of raw hex.
  • From/To/Dest hashes in encrypted-envelope and anonymous-request payloads now resolve to clickable node blocks, like path hops.
  • The analyzer closes on a mobile tab change, and expanded rows now have a copy-link button.
  • The region picker can be filtered by IATA code, airport name or region name.
  • Row-height estimates match the new one-line desktop rows, so the list no longer jumps while scrolling.