diff --git a/public/live.js b/public/live.js index 378c387f..4cc6b763 100644 --- a/public/live.js +++ b/public/live.js @@ -1343,7 +1343,7 @@ html += `

Recent Packets

` + recent.slice(0, 10).map(p => `
- ${escapeHtml(p.payload_type || '?')}${p.observation_count > 1 ? ' 👁 ' + p.observation_count + '' : ''} + ${escapeHtml(p.payload_type || '?')}${transportBadge(p.route_type)}${p.observation_count > 1 ? ' 👁 ' + p.observation_count + '' : ''} ${formatLiveTimestampHtml(p.timestamp)}
`).join('') + '
'; @@ -1548,7 +1548,7 @@ item.innerHTML = ` ${icon} ${typeName} - ${hopStr}${obsBadge} + ${transportBadge(pkt.route_type)}${hopStr}${obsBadge} ${escapeHtml(preview)} ${formatLiveTimestampHtml(group.latestTs || Date.now())} `; @@ -2490,7 +2490,7 @@ item.innerHTML = ` ${icon} ${typeName} - ${hopStr}${obsBadge} + ${transportBadge(pkt.route_type)}${hopStr}${obsBadge} ${escapeHtml(preview)} ${formatLiveTimestampHtml(pkt._ts || Date.now())} `; @@ -2558,7 +2558,7 @@ item.innerHTML = ` ${icon} ${typeName} - ${hopStr}${obsBadge} + ${transportBadge(pkt.route_type)}${hopStr}${obsBadge} ${escapeHtml(preview)} ${formatLiveTimestampHtml(pkt._ts || Date.now())} `; diff --git a/test-live.js b/test-live.js index 98d9325e..d3edaa92 100644 --- a/test-live.js +++ b/test-live.js @@ -881,6 +881,17 @@ console.log('\n=== live.js: source-level safety checks ==='); assert.ok(src.includes('const existingIds = new Set(VCR.buffer.map(b => b.pkt.id)'), 'vcrRewind should dedup by packet ID'); }); + + test('feed items include transport badge', () => { + const count = (src.match(/transportBadge\(pkt\.route_type\)/g) || []).length; + assert.ok(count >= 3, + `feed rendering should call transportBadge(pkt.route_type) in at least 3 places (found ${count})`); + }); + + test('node detail recent packets include transport badge', () => { + assert.ok(src.includes('transportBadge(p.route_type)'), + 'node detail recent packets should call transportBadge(p.route_type)'); + }); } // ===== SUMMARY =====