diff --git a/public/nodes.js b/public/nodes.js
index 07dfb54..e325dfc 100644
--- a/public/nodes.js
+++ b/public/nodes.js
@@ -119,8 +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 ? `⚠️ variable hash size ` : ''} ${statusLabel}
- ${n.hash_size_inconsistent ? `
This node has sent adverts with different hash sizes (${(n.hash_sizes_seen||[]).join('-byte, ')}-byte ). Likely a firmware bug in MeshCore versions before 1.14.1. Update firmware to fix.
` : ''}
+
${n.role} ${n.hash_size ? `
${n.public_key.slice(0, n.hash_size * 2).toUpperCase()} ` : ''} ${n.hash_size_inconsistent ? `
⚠️ variable hash size ` : ''} ${statusLabel}
+ ${n.hash_size_inconsistent ? `
Adverts show varying hash sizes (${(n.hash_sizes_seen||[]).join('-byte, ')}-byte ). Likely a firmware bug — update to MeshCore 1.14.1+. See advert details below.
` : ''}
${n.public_key}
📋 Copy URL
@@ -180,9 +180,17 @@
const snr = p.snr != null ? ` · SNR ${p.snr}dB` : '';
const rssi = p.rssi != null ? ` · RSSI ${p.rssi}dBm` : '';
const obsBadge = p.observation_count > 1 ? `
👁 ${p.observation_count} ` : '';
+ // Show hash size per advert if inconsistent
+ let hashSizeBadge = '';
+ if (n.hash_size_inconsistent && p.payload_type === 4 && p.raw_hex) {
+ const pb = parseInt(p.raw_hex.slice(2, 4), 16);
+ const hs = ((pb >> 6) & 0x3) + 1;
+ const isDefault = hs === n.hash_size;
+ hashSizeBadge = `
${hs}B `;
+ }
return `
${timeAgo(p.timestamp)}
-
${typeLabel}${detail}${obsBadge}${obs ? ' via ' + escapeHtml(obs) : ''}${snr}${rssi}
+
${typeLabel}${detail}${hashSizeBadge}${obsBadge}${obs ? ' via ' + escapeHtml(obs) : ''}${snr}${rssi}
Analyze →
`;
}).join('') : '
No recent packets
'}
@@ -210,6 +218,12 @@
}).catch(() => {});
});
+ // Auto-scroll to adverts if highlight=hashsize
+ if (location.hash.includes('highlight=hashsize')) {
+ const recentSection = body.querySelector('.node-activity-list');
+ if (recentSection) setTimeout(() => recentSection.scrollIntoView({ behavior: 'smooth', block: 'start' }), 300);
+ }
+
// QR code for full-screen view
const qrFullEl = document.getElementById('nodeFullQrCode');
if (qrFullEl && typeof qrcode === 'function') {
@@ -504,11 +518,10 @@
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 ? `
⚠️ variable hash size ` : ''} ${statusLabel}
+
- ${n.hash_size_inconsistent ? `
Adverts show hash sizes ${(n.hash_sizes_seen||[]).join('-byte, ')}-byte . Likely a firmware bug — update to MeshCore 1.14.1+.
` : ''}
${hasLoc ? `