MrAlders0n
f6caab663c
Add hourly sparklines to analytics stat cards ( #134 )
2026-10-02 13:37:26 -04:00
MrAlders0n
30a8f94dbd
Wait for the selected region before loading lists ( #133 )
2026-10-02 12:13:41 -04:00
MrAlders0n
39e921c277
Serve analytics from hourly rollups and handle empty regions ( #132 )
2026-10-02 08:03:00 -04:00
MrAlders0n
f9ffb564c7
Drop analytics refresh buttons and repeated titles ( #131 )
2026-10-01 18:58:26 -04:00
MrAlders0n
bdf253cbe6
Close an inspected observer back to its packet on mobile ( #130 )
2026-10-01 18:46:00 -04:00
MrAlders0n
609dbc384f
Translate the remaining hardcoded UI text ( #129 )
2026-10-01 17:55:54 -04:00
MrAlders0n
e3f98efea9
Open the observer dashboard from Inspect observer ( #128 )
2026-10-01 16:57:04 -04:00
MrAlders0n
e491a822c9
Plain wording across panels and fix retention-bound views ( #127 )
2026-10-01 16:36:11 -04:00
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
57be943f17
Tidy the routes search and range toggle on mobile ( #123 )
2026-10-01 08:32:49 -04:00
MrAlders0n
441dcdee6c
Show observers as a full-width list on mobile ( #122 )
2026-10-01 07:55:47 -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
66419a768e
Shrink the region filter text on desktop ( #119 )
2026-10-01 04:08:48 -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
n30nex
6de673b6a0
Prepare Beacon 2.0.0 ( #105 )
2026-09-30 21:18:14 -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
dependabot[bot]
9058665af0
build(deps-dev): bump brace-expansion from 5.0.9 to 5.0.12 ( #100 )
...
Bumps [brace-expansion](https://github.com/juliangruber/brace-expansion ) from 5.0.9 to 5.0.12.
- [Release notes](https://github.com/juliangruber/brace-expansion/releases )
- [Commits](https://github.com/juliangruber/brace-expansion/compare/v5.0.9...v5.0.12 )
---
updated-dependencies:
- dependency-name: brace-expansion
dependency-version: 5.0.12
dependency-type: indirect
...
Signed-off-by: dependabot[bot] <support@github.com >
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-09-30 08:11:10 -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
17f48fb932
chore(types): mirror ws opt-in fields from the server ( #91 )
2026-09-27 20:38:55 -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
c2ab29a540
fix(stats): distinguish analytics navigation icons ( #59 )
2026-09-23 20:11:26 -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