Skip to content

web: reticulum aspects, identity groups, identity page, honest detail views - #899

Merged
l5yth merged 5 commits into
mainfrom
l5y-web-identity-groups
Aug 29, 2026
Merged

l5yth merged 5 commits into
mainfrom
l5y-web-identity-groups

Conversation

@l5yth

@l5yth l5yth commented Aug 29, 2026 •

Copy link
Copy Markdown
Owner

ref #888

Makes RE7 visible. An identity has been one node since RE7, but the UI still rendered a peer's four addresses as four rows' worth of dashes.

Nodes table (RA1-RA3): a Reticulum identity is a parent row and its destinations are sub-rows. The protocol cell becomes the disclosure control, keeping the tile's violet inset so a collapsed group still reads as Reticulum; an identity with a single destination renders flat, since a caret that opens onto one row misrepresents depth. The parent takes the RE10-derived long_name and the newest last_heard across its destinations, and carries one role chip per aspect with a +N overflow. Counts read identities (destinations) -- 3 (8) -- on the Reticulum toggle and legend only; Meshtastic and Meshcore keep a bare count, so the bracket marks a real distinction instead of decorating every protocol. Sorting orders parents, and sub-rows follow theirs.

Destinations load in the background (RA4/RA8). /api/nodes carries none, so they are fetched separately and joined by node_id after first paint: the table renders from /api/nodes alone and gains groups as pages arrive. A slow, failing or truncated walk degrades to a table without groups, never a stalled one. /api/destinations gains ?since= and ?before= bounding last_heard, matching the seven other bulk collections including the inclusive boundary, and the walk reuses the existing paginateCollection cursor loop rather than adding a second implementation to drift from it.

Identity page (RA5): /nodes/:id gains an Identity group (full 32-hex identity hash, destination count, interface) and a Destinations table carrying the full 32-hex destination hashes -- the only view that shows them, since they are what a reader needs to message the peer. Both read from /api/destinations, because /api/nodes deliberately does not serve identity_hash.

Detail views drop the em-dash (RA6, amending UX4 and PD1): a detail view renders a field only when it has a value and a group only when a field survives, with one muted "No telemetry reported." when none do. The table keeps its dashes -- at table width a dash separates "not reported" from "still loading", which a detail view need not distinguish. PD1 restated the rule for this sheet, so amending UX4 alone would have left the second copy reinstating it.

Role fallbacks become protocol-native (RA9), from a field report: CLIENT is a Meshtastic role but was the fallback everywhere, labelling a Meshcore node as something its protocol has no concept of. defaultRoleFor resolves meshtastic -> CLIENT, meshcore -> COMPANION, reticulum -> PEER; getRoleColor falls back within the node's own palette before the Meshtastic one, so a role-less Meshcore node is no longer painted Meshtastic blue; and the ingest-side placeholder default gains its missing reticulum -> PEER branch. An unknown protocol keeps CLIENT.

rns.transport stays the stored aspect and renders as "no aspect" (RA7): it maps the row to the TRANSPORT role, so it is a display rule, not a data change.

@codecov

codecov Bot commented Aug 29, 2026 •

Copy link
Copy Markdown

Codecov Report

❌ Patch coverage is 99.80611% with 4 lines in your changes missing coverage. Please review.
✅ All tests successful. No failed tests found.

Files with missing lines Patch % Lines
web/public/assets/js/app/main.js 96.92% 4 Missing ⚠️

📢 Thoughts on this report? Let us know!

@l5yth
l5yth merged commit d61cca9 into main Aug 29, 2026
15 checks passed
@l5yth
l5yth deleted the l5y-web-identity-groups branch August 29, 2026 15:13
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant