Commit Graph
145 Commits
Author SHA1 Message Date
MrAlders0n bd32c0019f Fold route evidence into Route Detail with a recent packets list (#126) 2026-10-01 15:41:59 -04:00
MrAlders0n a252b953fe List keyed channels up front and load the rest on demand (#125) 2026-10-01 09:18:42 -04:00
MrAlders0n 2b150f9244 Add an optional instance banner above the header (#124) 2026-10-01 08:57:41 -04:00
MrAlders0n e6e680192a Open the observer dashboard as a mobile overlay (#121) 2026-10-01 07:50:46 -04:00
MrAlders0n a8a248fd9d Keep the packet drawer and windows open across tabs (#120) 2026-10-01 04:09:00 -04:00
MrAlders0n a2ed9f70aa Match the observation card to the theme (#118) 2026-09-30 23:17:20 -04:00
MrAlders0n 24c4abf6f4 Show the observer list beside the dashboard (#117) 2026-09-30 23:03:50 -04:00
MrAlders0n 487dca948c Collapse the analyzer's observations list by default (#116) 2026-09-30 23:03:19 -04:00
MrAlders0n b1ced5150c Clear map borders when the toggle is turned off (#115) 2026-09-30 22:44:52 -04:00
MrAlders0n 24b995bf12 Move channel scope filter into the header (#114) 2026-09-30 22:34:44 -04:00
MrAlders0n 35d117a636 Region-filtered scope lists (#113) 2026-09-30 22:09:37 -04:00
MrAlders0n 85e4d90cbe Analyzer: one observations list, transport scope breakdown (#112) 2026-09-30 21:18:10 -04:00
MrAlders0n e2d272e08e Drop the Observer section from Analytics (#111) 2026-09-30 16:09:13 -04:00
MrAlders0n fb0994bd05 One observations list in the packet analyzer (#110) 2026-09-30 15:43:44 -04:00
MrAlders0n 61ab6697d9 Labelled observer details and stacked header actions (#109) 2026-09-30 14:42:55 -04:00
MrAlders0n 31d01a8425 Shared observer sidebar and header actions (#108) 2026-09-30 14:36:17 -04:00
MrAlders0n b1f41dea1d Observer header details, channel row cleanup, tab order (#107) 2026-09-30 14:10:18 -04:00
MrAlders0n 63344af365 Polish observer cards and clock drift on phones (#106) 2026-09-30 13:47:10 -04:00
MrAlders0n 8d1f30d553 Bring back the Analytics observer tab and tidy analytics (#104) 2026-09-30 13:24:54 -04:00
MrAlders0n 00d859d9a2 fix(nodes): clear a node's position when nodeUpdate sends null (#103)
The server now nulls a location on an explicit 0/0 advert and the WS nodeUpdate
event mirrors that: omitted lat/lng keeps the current position, null clears it.
patchNodeSummary used ?? so a clear was ignored.
2026-09-30 11:29:35 -04:00
MrAlders0n 3e43cfd009 fix: follow up on last week's merges (#55-#101) (#102)
Bugs: clear compare params on tab change, recover channel live messages after a 429,
observer copy link keeps only region params, route table no longer navigates on region
change with nothing selected, map borders memo on data identity, live overview can't
resurrect a failed query, French relative times, no language write on first visit,
0/0 node locations hidden outside the map, path/signal stats use the shared retry rule.

i18n: node/packet/mesh/observer strings that were still hardcoded after #62.

Cleanup: formatUtc, ACTION_BUTTON_CLASS, observer-stats, useWindowedStats, observer-id;
observer pages use StatCard/Card/Field/Segmented/SearchBar/SelectDropdown; one details
chrome on the stats tabs; comment and translations-guide trims; localStorage stub for
Node 26 in the test setup.
2026-09-30 10:19:32 -04:00
MrAlders0n 39b85a9032 fix: follow up on the #75-#99 stack review (#101) 2026-09-30 08:35:07 -04:00
n30nex d259be512e feat: observer monitoring, retained evidence and channel scopes (#75-#99)
Lands the stacked web PRs #75, #79, #80, #81, #83, #85, #87, #89, #92, #95 and #99 in one squash. Server counterparts #166-#176 are merged. Remaining review items follow in a fix PR.
2026-09-30 08:03:13 -04:00
MrAlders0n 54b5093ac0 fix(packets): fold summaries into the endpoints cell (#73) 2026-09-25 11:37:57 -04:00
n30nex 9cd2e8f6db fix(stats): hide unavailable Mesh overview data (#72) 2026-09-25 11:21:29 -04:00
n30nex dce4e49900 fix(stats): hide unavailable Talkers results (#68) 2026-09-25 11:21:07 -04:00
n30nex 9423059b6f feat(i18n): translate stats analytics, clock drift and timestamps (#70) 2026-09-25 11:20:27 -04:00
n30nex 6d3edbb61b feat(i18n): add English and French navigation foundation (#62) 2026-09-24 08:53:32 -04:00
n30nex 0f0a6ca51c fix(map): omit reset and invalid node locations (#61) 2026-09-23 20:16:26 -04:00
n30nex 929ba83cf1 feat(stats): add Paths and Hashes analytics (#57) 2026-09-23 20:16:23 -04:00
n30nex 2405e1ac96 feat(stats): add RF and signal analytics (#55) 2026-09-23 20:14:03 -04:00
n30nex e01c090c8e feat(stats): add hourly traffic and region-aware scope analytics (#53)
Adds the Traffic and Scopes analytics tabs. Includes the hourly traffic work from #52, which this PR contains in full.

Closes #50. Closes #51.
2026-09-20 11:41:43 -04:00
n30nex 3178713bdb feat(nodes): display the foreign-repeater indication (#49)
* feat(nodes): display the server foreign-repeater indication

* style(ws): align node update event declaration
2026-09-19 22:58:52 -04:00
n30nex 88e2c0f319 feat(stats): compare flood packets heard by two observers (#48) 2026-09-19 22:58:36 -04:00
MrAlders0n d5d9c0870c fix(layout): keep region picker right-anchored on desktop (#47) 2026-09-18 06:12:14 -04:00
n30nex 2264b3be35 fix(layout): keep header controls inside narrow viewports (#44) 2026-09-18 06:10:45 -04:00
n30nex 34bd0948bc feat(packets): display payload summaries in packet rows (#46) 2026-09-18 06:09:59 -04:00
n30nex 7549bacd21 fix(region): avoid focus zoom on small filter text (#45) 2026-09-18 06:07:54 -04:00
n30nex e43de48f0b feat(packets): surface selections outside loaded results (#41)
A ?hash selection outside the loaded or filtered results now shows an Open analyzer notice with loading, error/retry and dismiss states, using the existing detail query.
2026-09-10 09:30:01 -04:00
n30nex 4304153f8b feat(packets): search latest paths by complete hop hashes (#39) 2026-09-10 09:26:13 -04:00
n30nex 9ab1a44ae9 fix(channels): load older directory pages without losing selection (#37)
* fix(channels): page the directory without losing the open channel

* fix(channels): prefer precise server page cursors
2026-09-10 09:26:05 -04:00
n30nex d51e0a997b fix(packets): keep filtered history pageable without scrolling (#34) 2026-09-10 09:25:55 -04:00
MrAlders0n 205dad8506 stats tests: follow the airtime field rename 2026-09-10 09:17:18 -04:00
MrAlders0n 12ddc8a921 Observer tab: airtime as percent, add heard-activity charts
Airtime telemetry is on-air seconds, so chart it as a percent of elapsed time.
Add channel busy, packets heard, SNR heard and payload type charts from the
new per-observer activity endpoint; hidden until the server has it.
2026-09-09 23:21:39 -04:00
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 b74dcdb0cf Animate the live map path from source through to destination
Share the endpoint-gating chain builder with the path map so both plot
source and destination when the backend resolved them unambiguously.
2026-07-28 21:27:15 -04:00
MrAlders0n 4f0ad44d25 Filter the region picker by IATA or airport name
Typing narrows both groups: airports match on code or display name,
regions match on their name or on any member code — a code-only match
tags the row with the code that hit, so it doesn't look like a stray
result. Empty groups drop their headers so the divider never dangles.

The panel body moves into its own component so the query dies with the
dropdown, and focus returns to the trigger on close.
2026-07-27 23:07:24 -04:00