Skip to content

feat: show transported region scopes in repeater sidebar #1751

@syssi

Description

@syssi

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:

  1. Add ScopeName string to StoreTx and populate it from transmissions.scope_name during Load (the column is guarded by the existing hasScopeName flag).
  2. In computeRepeaterRelayInfoMap (repeater_enrich_bulk.go), accumulate a deduplicated []string of scope names while walking byPathHop entries. Store as TransportedScopes []string on RepeaterRelayInfo.
  3. Expose the field via handleNodeDetail alongside the existing relay_count_1h, relay_count_24h fields.
  4. 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.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions