When clicking a repeater node, the detail sidebar currently shows relay stats (last relayed, relay count, traffic share, bridge score) but gives no indication of which region scopes the repeater has been transporting.
Proposed behaviour
Add a "Transported scopes" row to the repeater stats table in the node detail sidebar. The list is derived passively by inspecting the scope_name field of all transmissions the repeater appears in as a path hop (byPathHop index). No user action or active probing required.
Why this is useful
A repeater's geographic relay footprint is not always obvious from its location alone. Knowing which region scopes transited through a repeater helps operators understand cross-region bridging behaviour, diagnose unexpected scope bleed, and plan coverage. The traffic-share and bridge-score metrics already hint at structural importance; the scope list makes that concrete.
Implementation sketch
The data is almost entirely available in-memory already:
- Add
ScopeName string to StoreTx and populate it from transmissions.scope_name during Load (the column is guarded by the existing hasScopeName flag).
- In
computeRepeaterRelayInfoMap (repeater_enrich_bulk.go), accumulate a deduplicated []string of scope names while walking byPathHop entries. Store as TransportedScopes []string on RepeaterRelayInfo.
- Expose the field via
handleNodeDetail alongside the existing relay_count_1h, relay_count_24h fields.
- Render a new table row in
nodes.js (the repeater stats block around line 634), visible only when the array is non-empty.
Estimated effort: small (~50 lines Go + ~15 lines JS). No new endpoint or DB query at request time needed.
Fallback
If hasScopeName is false (older schema), the field is simply absent and the row is hidden, so there is no regression for older deployments.
When clicking a repeater node, the detail sidebar currently shows relay stats (last relayed, relay count, traffic share, bridge score) but gives no indication of which region scopes the repeater has been transporting.
Proposed behaviour
Add a "Transported scopes" row to the repeater stats table in the node detail sidebar. The list is derived passively by inspecting the
scope_namefield of all transmissions the repeater appears in as a path hop (byPathHopindex). No user action or active probing required.Why this is useful
A repeater's geographic relay footprint is not always obvious from its location alone. Knowing which region scopes transited through a repeater helps operators understand cross-region bridging behaviour, diagnose unexpected scope bleed, and plan coverage. The traffic-share and bridge-score metrics already hint at structural importance; the scope list makes that concrete.
Implementation sketch
The data is almost entirely available in-memory already:
ScopeName stringtoStoreTxand populate it fromtransmissions.scope_nameduringLoad(the column is guarded by the existinghasScopeNameflag).computeRepeaterRelayInfoMap(repeater_enrich_bulk.go), accumulate a deduplicated[]stringof scope names while walkingbyPathHopentries. Store asTransportedScopes []stringonRepeaterRelayInfo.handleNodeDetailalongside the existingrelay_count_1h,relay_count_24hfields.nodes.js(the repeater stats block around line 634), visible only when the array is non-empty.Estimated effort: small (~50 lines Go + ~15 lines JS). No new endpoint or DB query at request time needed.
Fallback
If
hasScopeNameis false (older schema), the field is simply absent and the row is hidden, so there is no regression for older deployments.