From 5f2a58a99f4d0aa3860071a4e4253dbf756161c9 Mon Sep 17 00:00:00 2001 From: you Date: Mon, 23 Mar 2026 16:18:30 +0000 Subject: [PATCH] Node details: add hash size display, replace side pane URL button with Details link MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Side pane: replace '📋 URL' button with '🔍 Details' link to full detail page - Side pane: add hash size badge next to role badge - Full detail page: add hash size badge next to role badge - Full detail page: add Hash Size row in stats section - Handle null hash_size gracefully --- public/nodes.js | 16 ++++------------ 1 file changed, 4 insertions(+), 12 deletions(-) diff --git a/public/nodes.js b/public/nodes.js index 0e20d034..2d80603d 100644 --- a/public/nodes.js +++ b/public/nodes.js @@ -120,7 +120,7 @@ ${hasLoc ? `
` : ''}
${escapeHtml(n.name || '(unnamed)')}
-
${n.role} ${statusLabel}
+
${n.role} ${n.hash_size ? `${n.hash_size}-byte hash` : ''} ${statusLabel}
${n.public_key}
@@ -139,6 +139,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 Size
${n.hash_size ? n.hash_size + '-byte (' + (n.hash_size * 2) + ' hex chars)' : 'Unknown'}
@@ -500,8 +501,8 @@
${hasLoc ? `
` : ''}
${escapeHtml(n.name || '(unnamed)')}
-
${n.role} ${statusLabel} - +
${n.role} ${n.hash_size ? `${n.hash_size}-byte hash` : ''} ${statusLabel} + 🔍 Details 📊 Analytics
@@ -593,15 +594,6 @@ } catch {} } - // Copy URL - document.getElementById('copyUrlBtn').addEventListener('click', () => { - navigator.clipboard.writeText(nodeUrl).then(() => { - const btn = document.getElementById('copyUrlBtn'); - btn.textContent = '✅ Copied!'; - setTimeout(() => btn.textContent = '📋 Copy URL', 2000); - }).catch(() => {}); - }); - // Fetch paths through this node api('/nodes/' + encodeURIComponent(n.public_key) + '/paths', { ttl: CLIENT_TTL.nodeDetail }).then(pathData => { const el = document.getElementById('pathsContent');