Commit Graph
19 Commits
Author SHA1 Message Date
MrAlders0n 464e701f76 Add a toggleable IATA border layer to the map
Draw each active IATA's GeoJSON region border as an outline over a faint
fill beneath the node markers, behind a Map Settings toggle that's off by
default and shareable via a URL param. IATAs with no border answer 204
and are skipped.
2026-07-24 22:21:12 -04:00
MrAlders0n 8baa562794 Add a Clock Drift analytics tab
List repeaters and room servers whose advert-derived clock has drifted
past the server threshold, worst first, in a sortable table. It's each
node's latest reading, so there's no time range to pick.
2026-07-24 22:20:49 -04:00
MrAlders0n e526c08fa4 Send multi-select packet filters to the server 2026-07-24 08:47:19 -04:00
MrAlders0n 23bacde2b8 Add public key prefix search to the nodes table 2026-07-23 23:10:31 -04:00
MrAlders0n 7bf30da5c1 Add top advertisers to Mesh stats and a Talkers leaderboard tab 2026-07-23 23:05:39 -04:00
MrAlders0n 1b42e023d8 Restore files clobbered by the main merge 2026-07-14 23:30:50 -04:00
MrAlders0n cfe6a8f0ea Merge branch 'main' into dev
Signed-off-by: MrAlders0n <55921894+MrAlders0n@users.noreply.github.com>
2026-07-14 23:17:55 -04:00
MrAlders0n 2e2b845137 Filter packet history on the server when a single type, route or scope is selected 2026-07-14 22:31:50 -04:00
MrAlders0n e50501879a feat: discover renderers, neighbor map lines, live packet flow
- Discover packets decoded: DISCOVER_REQ/DISCOVER_RESP render real fields
  (type-filter roles, tag, node-to-node request SNR) instead of a raw dump.
- Neighbor lines on the map: On/Selected/Off control draws links between nodes
  and their known neighbors.
- Live packet flow: a play button animates packets hop-to-hop between repeaters
  in real time (off by default).
2026-07-05 22:08:54 -04:00
MrAlders0n 653768dcc8 Fix: github workflow + stats tab + add traces vs pings (#10)
* stats: node-types donut, multi-IATA filtering, preset split

 - node-types: new /stats/node-types endpoint + useNodeTypes; donutOption
   replaces the "Coming soon" card with a live donut
 - stats endpoints take iatas[] instead of a single iata, so multi-IATA
   regions filter instead of falling back to all (drops useStatsIata)
 - radio presets keep the node/observer split via stacked presetBarsOption
 - drop client-side telemetry ms-normalization (backend now emits epoch ms
   on both paths); charts pick delta-vs-raw counters off the response interval
 - MeshTab: range-driven charts lead, all-time charts follow; KPI window
   from overview.windowHours instead of a hardcoded 24h
 - ci: docker-publish builds a :dev image on dev-branch pushes

* feat: traces vs pings
feat: SNR for trace path in list
feat: known niehgbour count

* fix: github workflow, post images publically
2026-06-20 13:23:18 -04:00
MrAlders0n df9f4a07ad stats: node-types donut, multi-IATA filtering, preset split
- node-types: new /stats/node-types endpoint + useNodeTypes; donutOption
   replaces the "Coming soon" card with a live donut
 - stats endpoints take iatas[] instead of a single iata, so multi-IATA
   regions filter instead of falling back to all (drops useStatsIata)
 - radio presets keep the node/observer split via stacked presetBarsOption
 - drop client-side telemetry ms-normalization (backend now emits epoch ms
   on both paths); charts pick delta-vs-raw counters off the response interval
 - MeshTab: range-driven charts lead, all-time charts follow; KPI window
   from overview.windowHours instead of a hardcoded 24h
 - ci: docker-publish builds a :dev image on dev-branch pushes
2026-06-11 13:34:11 -04:00
MrAlders0n 7e2a4de78f channels: send the singular iata param the backend actually reads
/channels ignores the plural iatas param, so the sidebar was always
global no matter the region — and opening another region's channel
showed an empty panel because the messages endpoint IS region-filtered.
Single-IATA regions filter properly now; multi-IATA stays global until
the backend grows parseIATAs there (ticket).
2026-06-10 07:03:16 -04:00
MrAlders0n f4093cf508 ws: fix subscription leak, stale sockets and half-open links
The big one: updateSubscription before the previous subscribe was acked
never unsubscribed it (the server keeps scopes additively), so a region
change right after connect left the old all-regions sub alive and the
live feed stayed a firehose. Subscribes now carry a tracked id and an
ack for a superseded subscribe is unsubscribed on arrival.

Also:
- doConnect/disconnect tear down the old socket and detach handlers, so
  a late close from a dead socket can't spawn a parallel reconnect loop
  (the StrictMode dev warning came from this)
- subscription ids are cleared per-connection instead of leaking a
  stale id onto the next socket
- pings now double as a liveness check: no pong for two intervals
  forces a reconnect instead of showing LIVE on a half-open link
- a server-sent close 1000 reconnects instead of going permanently dark
- after a reconnect the manager synthesizes a lag notice so live views
  refetch what they missed during the outage
2026-06-10 06:34:28 -04:00
MrAlders0n b8b1f5f27d Feat/scopes routes traces (#7)
* feat: replace getScopeStats with getScopes and update related tests
bug: lastSeen/sentAt was set to string instead of number by mistake

* feat: update timestamp handling and formatting across components

- WS messages carry epoch ms now instead of ISO strings
- new Timestamp component (relative/absolute), used in RouteTable and RouteDetailPanel
- IataChip and ScopeTag chips
- TraceDetailPanel and TraceList for trace drill-down
- tests updated for the timestamp change
2026-06-07 00:19:54 -04:00
MrAlders0n 8e2696b95a feat: loading pill for map and tables
- LoadingPill shows loading/error state in MapView, NodeTable and ObserverTable
- new useInfinitePages hook shares the pagination logic between them
- patchNodeSummary/patchObserverSummary now keep references stable
- tests for loading states, observer updates and infinite paging
2026-06-05 22:59:52 -04:00
MrAlders0n 81bdeec16b feat: implement paginated node fetching and add related tests 2026-06-05 20:23:17 -04:00
MrAlders0n eb961c0c92 Fixed the scrollbar anchoring and some bug fixes 2026-05-29 20:21:59 -04:00
MrAlders0n a0caf65a18 added channel & observers 2026-05-27 19:27:48 -04:00
MrAlders0n 8718bf3563 Initial commit 2026-05-23 21:49:14 -04:00