From 04cb9c955feebb13dc1adea355aa14c305d57bc3 Mon Sep 17 00:00:00 2001 From: dborup Date: Sun, 26 Jul 2026 09:28:50 +0200 Subject: [PATCH] feat: node detail page shows its own configured scope, not just transported The Transported Scopes row shows regions a repeater has relayed for OTHERS, but not what the node's own hashRegions scope actually is -- dborup asked for that distinction to be visible too. Added an "Own scope" row right above it, for any node (not just repeater/room -- any node can configure its own scope). Mirrors live.js's existing null (no schema support) / empty ("unknown scope") / value distinction for default_scope. --- public/nodes.js | 1 + 1 file changed, 1 insertion(+) diff --git a/public/nodes.js b/public/nodes.js index a22a8d43..78d78dd7 100644 --- a/public/nodes.js +++ b/public/nodes.js @@ -679,6 +679,7 @@ const btooltip = "Normalized betweenness centrality (0..1). How often this node sits on the shortest path between other pairs of nodes in the affinity graph. 1.0 = the most structurally critical node on the mesh. High Bridge + low Traffic share = a quiet but irreplaceable chokepoint."; return `Bridge score ⓘ${bpct}% ${blabel}`; })() : ''} + ${'default_scope' in n ? `Own scope${n.default_scope === null ? '—' : n.default_scope === '' ? 'unknown scope' : '' + escapeHtml(n.default_scope) + ''}` : ''} ${(n.role === 'repeater' || n.role === 'room') && Array.isArray(n.transported_scopes) && n.transported_scopes.length ? `Transported scopes${n.transported_scopes.map(sc => '' + escapeHtml(String(sc)) + '').join('')}` : ''} First Seen${renderNodeTimestampHtml(n.first_seen)} Total Packets${stats.totalTransmissions || stats.totalPackets || n.advert_count || 0}${stats.totalObservations && stats.totalObservations !== (stats.totalTransmissions || stats.totalPackets) ? ' (seen ' + stats.totalObservations + '×)' : ''}