44 Commits
Author SHA1 Message Date
MrAlders0n f43f469250 Color observation card edges by SNR, align card stats, join the expanded row 2026-09-02 22:25:03 -04:00
MrAlders0n 276ef903fb Handle API rate limiting in the client and back off WS reconnects 2026-09-02 19:50:35 -04:00
MrAlders0n d0aa7f9c8e Show observation cards in the expanded row below md 2026-07-29 23:17:09 -04:00
MrAlders0n bc3bed78e4 Preserve linebreaks in message bodies 2026-07-28 21:42:44 -04:00
MrAlders0n b2adc5276f Open the analyzer from an observation and add a hash size column
Drops the Open analyzer and Copy link buttons from the expansion; the analyzer popup keeps its own copy link. Table rows butt up against each other now, so the whole strip is a click target.
2026-07-27 22:23:53 -04:00
MrAlders0n 1f3fb5b7c9 Collapse the packet row to a single line with hops and endpoints
The header and the rows are separate grids, so the shared track list can't use ch or auto — each resolved them differently and the columns drifted apart. Observer moves into the expansion to free the column.
2026-07-27 22:06:05 -04:00
MrAlders0n 9c037bc923 Close the analyzer on a mobile tab change and add an expanded-row copy link 2026-07-27 21:08:19 -04:00
MrAlders0n cdda2a00ff Keep the widest heard window when a live packet is re-observed 2026-07-27 21:08:19 -04:00
MrAlders0n 907b42e7be Keep the packet card layout below md 2026-07-27 20:47:31 -04:00
MrAlders0n 663eeef775 Stop stripping ?hash on mount, it breaks deep links to older packets
The analyzer drawer and path-map restore both read the live ?hash and
fetch by hash directly, independent of whether the packet is in the
loaded list. Deleting the param once the first page settles without a
match unmounts the drawer and can drop path-map restores, for any
shared link more than a couple of minutes old.
2026-07-27 20:41:57 -04:00
MrAlders0n f44f1ac0a1 Carry the picked observation into the analyzer and finish two other spec gaps
- Stop resetting selectedObservationId when opening the analyzer, so picking an
  observation inside an expanded row lands the drawer on it instead of observations[0]
- Disable View path on map in the expanded row when the detail has no resolvable path,
  matching the drawer's existing button
- Strip a ?hash deep link once the first page has loaded and it matches no packet
2026-07-27 20:32:31 -04:00
MrAlders0n 9582aaaa09 Wire the packet table and expandable rows into the virtual list 2026-07-27 20:04:36 -04:00
MrAlders0n 64b822f4fa Reorder PacketExpansion to show errors before empty state 2026-07-27 19:43:58 -04:00
MrAlders0n f400dc5f76 Add the expanded packet region with skeleton, error and empty states 2026-07-27 19:37:18 -04:00
MrAlders0n 16ee220abe Fix PathData sizing and add null-SNR test to ObservationTable 2026-07-27 19:30:16 -04:00
MrAlders0n 7dfb363265 Add the nested observation table for expanded packet rows 2026-07-27 19:24:39 -04:00
MrAlders0n 9300eefad1 Add the sticky packet table header 2026-07-27 19:20:10 -04:00
MrAlders0n 8bd0f92aff Restore n/a fallback in observer and IATA cells, scope the covering test 2026-07-27 19:17:03 -04:00
MrAlders0n 8795c360ff Add the two-line packet table row 2026-07-27 19:10:07 -04:00
MrAlders0n dbed149679 Cover endpoint pairs, high tint, and unresolved-run chips in PacketPathLine 2026-07-27 19:01:34 -04:00
MrAlders0n bdf7ac45e4 Render the packet path line with truncation and confidence tints 2026-07-27 18:56:03 -04:00
MrAlders0n 48587a0437 Cover pathBytes-absent and unresolved-endpoint cases in path summary tests 2026-07-27 18:52:10 -04:00
MrAlders0n 75124250d6 Add a pure path-summary model for the packet table's path line 2026-07-27 18:45:11 -04:00
MrAlders0n 89a8980212 Split ?hash into row expansion and ?analyze for the analyzer drawer 2026-07-27 18:19:09 -04:00
MrAlders0n 1dbbce1ad8 Extract usePacketDetail and share it across the analyzer and overlay 2026-07-27 18:08:21 -04:00
MrAlders0n 161f481576 Carry path and endpoint fields from WS observations into packet summaries 2026-07-27 18:01:32 -04:00
MrAlders0n e526c08fa4 Send multi-select packet filters to the server 2026-07-24 08:47:19 -04:00
MrAlders0n 1303e952a7 Add tests for path endpoint, trace, and clock-drift edge cases 2026-07-24 06:19:19 -04:00
MrAlders0n 88ae52bdf4 Show packet source and destination on the path map and analyzer 2026-07-23 22:53:02 -04:00
MrAlders0n 01b722b5c5 Add 'view path on map' popup to the packet analyzer 2026-07-18 09:16:27 -04:00
MrAlders0n 43ebcd9638 Show loading feedback while packet history loads 2026-07-14 22:57:07 -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 58016bc773 Keep the packets list static while scrolled down instead of jumping on new packets 2026-07-13 18:51:56 -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 ad4e68f817 packets: highlight timer leak, analyzer close desync, dead code
- fresh-row highlights leaked under a steady stream (each new batch
  cancelled the previous batch's clear timer); per-batch timers in a
  small useFreshHashes hook now
- closing the analyzer drops ?hash and the row selection, so the same
  row reopens on the next click and a closed analyzer stays closed
  after reload/share
- sf=path / sf=payload from the URL fall back to hash search (only
  field matchesFilters implements; the UI options were already disabled)
- remove the summary preview line no backend path ever populates
- channel message rows key on packetHash (live WS messages carry no id)
2026-06-10 07:03:16 -04:00
MrAlders0n 714b32fd22 fix back/forward tab navigation and the packet-list gap on tab return
The active tab was state seeded from ?tab once, so back/forward moved
the URL without moving the UI. The URL is the source of truth now, and
unknown ?tab values fall back to Packets instead of a blank pane.

Packets history also healed wrong: while the tab is unmounted its WS
handler is down, and staleTime Infinity meant the gap never closed.
Mounting now resets to a fresh first page. Same for lag notices, which
used to invalidate (and sequentially replay) up to 20 cached pages —
together with the ws reconnect notice this covers outage recovery too.
2026-06-10 06:39:12 -04:00
MrAlders0n 08d50be490 Track devserver.sh and finish the tower -> beacon rename
scripts/ was caught by a stray .gitignore entry, so the npm start/stop
helpers pointed at a file fresh clones never got. Also sweep the last
tower-* references out of comments, compose and the map test fixture.
2026-06-09 23:16:04 -04:00
MrAlders0n 83c30ca236 Sync to features from server 2026-06-08 22:35:06 -04:00
MrAlders0n 84f235a3b4 Mobile support refactor and cleanup 2026-06-08 10:18:17 -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 eb50f310db feat: decrypted channel messages, scopes in ws 2026-06-05 17:22:37 -04:00
MrAlders0n 47c1813471 feat: added path resolution to traces 2026-06-05 09:24:21 -04:00
MrAlders0n 1208413b6e feat: add scopes 2026-06-05 08:49:36 -04:00
MrAlders0n 4b8109262b feat: packet analyzer overlay, shared modals with focus trap
- usePackets pulls a bigger first page (INITIAL_PACKET_PAGE_SIZE)
- ModalOverlay + useFocusTrap, used by NodeDetailOverlay and PacketAnalyzerOverlay
- PathData popovers for path resolutions; ObserverIcon and Tooltip
- tests for packet structure and the focus trap; tidied types in api.ts/enums.ts
2026-06-04 20:22:28 -04:00