diff --git a/public/index.html b/public/index.html index bd293a15..5581eb29 100644 --- a/public/index.html +++ b/public/index.html @@ -84,7 +84,7 @@ - + diff --git a/public/packets.js b/public/packets.js index cffb9240..c5f9c862 100644 --- a/public/packets.js +++ b/public/packets.js @@ -13,6 +13,8 @@ let selectedId = null; let groupByHash = true; let filters = {}; + { const o = localStorage.getItem('meshcore-observer-filter'); if (o) filters.observer = o; + const t = localStorage.getItem('meshcore-type-filter'); if (t) filters.type = t; } let wsHandler = null; let observers = []; let regionMap = {}; @@ -21,6 +23,7 @@ let totalCount = 0; let expandedHashes = new Set(); let hopNameCache = {}; + let showHexHashes = localStorage.getItem('meshcore-hex-hashes') === 'true'; let filtersBuilt = false; const PANEL_WIDTH_KEY = 'meshcore-panel-width'; @@ -116,6 +119,9 @@ } function renderHop(h) { + if (showHexHashes) { + return `${escapeHtml(h)}`; + } const entry = hopNameCache[h]; const name = entry ? (typeof entry === 'string' ? entry : entry.name) : null; const pubkey = entry?.pubkey || h; @@ -242,8 +248,8 @@ // Check if new packets pass current filters const filtered = newPkts.filter(p => { - if (filters.type !== undefined && filters.type !== '' && p.payload_type !== Number(filters.type)) return false; - if (filters.observer && p.observer_id !== filters.observer) return false; + if (filters.type) { const types = filters.type.split(',').map(Number); if (!types.includes(p.payload_type)) return false; } + if (filters.observer) { const obsSet = new Set(filters.observer.split(',')); if (!obsSet.has(p.observer_id)) return false; } if (filters.hash && p.hash !== filters.hash) return false; if (RegionFilter.getRegionParam()) { const selectedRegions = RegionFilter.getRegionParam().split(','); @@ -462,6 +468,7 @@
+