diff --git a/public/nodes.js b/public/nodes.js index 7613706d..dc2c449d 100644 --- a/public/nodes.js +++ b/public/nodes.js @@ -82,6 +82,11 @@ } let lastHeard = localStorage.getItem('meshcore-nodes-last-heard') || ''; let statusFilter = localStorage.getItem('meshcore-nodes-status-filter') || 'all'; + // 'all' | 'domestic' | 'foreign' — domestic/foreign split on the `foreign` + // flag (#730 geo_filter classification: self-reported GPS outside the + // configured box). The unfiltered node list can be dominated by foreign + // nodes, making it hard to see which ones are actually local. + let geoScope = localStorage.getItem('meshcore-nodes-geo-scope') || 'all'; let wsHandler = null; let detailMap = null; @@ -1236,6 +1241,9 @@ return getNodeStatus(role, lastMs) === statusFilter; }); } + // Geo scope filter (domestic vs foreign, #730 `foreign` flag) + if (geoScope === 'domestic') filtered = filtered.filter(n => !n.foreign); + else if (geoScope === 'foreign') filtered = filtered.filter(n => n.foreign); nodes = filtered; // Defensive filter: hide nodes with obviously corrupted data @@ -1304,6 +1312,11 @@ +
+ + + +