From 0dae1ba3b7e2fd564f1ba2456ffdfe6017a5618e Mon Sep 17 00:00:00 2001 From: you Date: Mon, 23 Mar 2026 16:43:42 +0000 Subject: [PATCH] =?UTF-8?q?fix:=20hash=20mismatch=20badge=20is=20clickable?= =?UTF-8?q?=20=E2=80=94=20expands=20explanation=20inline?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Badge shows cursor:help and clicking toggles a yellow-bordered info box explaining the issue and suggesting firmware update. Stats row just shows '⚠️ varies' with tooltip. Much less jarring than a dead yellow badge. --- public/nodes.js | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/public/nodes.js b/public/nodes.js index eda0367f..b3ceb6cd 100644 --- a/public/nodes.js +++ b/public/nodes.js @@ -119,7 +119,8 @@ body.innerHTML = `
${escapeHtml(n.name || '(unnamed)')}
-
${n.role} ${n.hash_size ? `${n.public_key.slice(0, n.hash_size * 2).toUpperCase()}` : ''} ${n.hash_size_inconsistent ? '⚠️ hash mismatch' : ''} ${statusLabel}
+
${n.role} ${n.hash_size ? `${n.public_key.slice(0, n.hash_size * 2).toUpperCase()}` : ''} ${n.hash_size_inconsistent ? `⚠️ hash mismatch` : ''} ${statusLabel}
+ ${n.hash_size_inconsistent ? `` : ''}
${n.public_key}
@@ -143,7 +144,7 @@ ${stats.avgSnr != null ? `Avg SNR${stats.avgSnr.toFixed(1)} dB` : ''} ${stats.avgHops ? `Avg Hops${stats.avgHops}` : ''} ${hasLoc ? `Location${n.lat.toFixed(5)}, ${n.lon.toFixed(5)}` : ''} - Hash Prefix${n.hash_size ? '' + n.public_key.slice(0, n.hash_size * 2).toUpperCase() + ' (' + n.hash_size + '-byte)' : 'Unknown'}${n.hash_size_inconsistent ? ' ⚠️ inconsistent — possible firmware bug' : ''} + Hash Prefix${n.hash_size ? '' + n.public_key.slice(0, n.hash_size * 2).toUpperCase() + ' (' + n.hash_size + '-byte)' : 'Unknown'}${n.hash_size_inconsistent ? ' ⚠️ varies' : ''} ${observers.length ? `
@@ -503,10 +504,11 @@ panel.innerHTML = `
${escapeHtml(n.name || '(unnamed)')}
-
${n.role} ${n.hash_size ? `${n.public_key.slice(0, n.hash_size * 2).toUpperCase()}` : ''} ${n.hash_size_inconsistent ? '⚠️ hash mismatch' : ''} ${statusLabel} +
${n.role} ${n.hash_size ? `${n.public_key.slice(0, n.hash_size * 2).toUpperCase()}` : ''} ${n.hash_size_inconsistent ? `⚠️ hash mismatch` : ''} ${statusLabel} 🔍 Details 📊 Analytics
+ ${n.hash_size_inconsistent ? `` : ''} ${hasLoc ? `