Status
-
β ${statusLabel}
+
${statusLabel}
Relay
diff --git a/public/observers.js b/public/observers.js
index 17376323..628285be 100644
--- a/public/observers.js
+++ b/public/observers.js
@@ -1,7 +1,7 @@
/* === CoreScope β observers.js === */
'use strict';
-// Issue #1478 β naive-clock β οΈ chip.
+// Issue #1478 β naive-clock warning chip.
// Exposed as a window global so the renderer (and a jsdom-style test) can
// call it without depending on the IIFE-scoped helpers below. Returns the
// chip HTML when the observer's clock is currently flagged naive, or "" when
@@ -97,10 +97,10 @@ window.ObserversSummary = (function () {
}
return ''
+ '
'
- + '\u25CF ' + c.online + ' Online'
- + '\u25B2 ' + c.stale + ' Stale'
- + '\u2715 ' + c.offline + ' Offline'
- + '\uD83D\uDCE1 ' + c.total + ' Total'
+ + ' ' + c.online + ' Online'
+ + ' ' + c.stale + ' Stale'
+ + ' ' + c.offline + ' Offline'
+ + ' ' + c.total + ' Total'
+ updatedHtml
+ '
';
}
@@ -151,16 +151,16 @@ window.preserveCompareSelection = function preserveCompareSelection(prevIds, tbo
-
+
@@ -294,12 +294,14 @@ window.preserveCompareSelection = function preserveCompareSelection(prevIds, tbo
window.observerHealthStatus = healthStatus;
function packetBadge(o) {
- if (!o.last_packet_at) return '
π‘β never';
+ const warnIcon = '
';
+ const broadcastIcon = '
';
+ if (!o.last_packet_at) return '
' + broadcastIcon + warnIcon + ' never';
const pktAgo = Date.now() - new Date(o.last_packet_at).getTime();
const statusAgo = o.last_seen ? Date.now() - new Date(o.last_seen).getTime() : Infinity;
const gap = pktAgo - statusAgo;
if (gap > 600000) {
- return `
π‘β ${timeAgo(o.last_packet_at)}`;
+ return `
${broadcastIcon}${warnIcon} ${timeAgo(o.last_packet_at)}`;
}
return timeAgo(o.last_packet_at);
}
@@ -363,7 +365,11 @@ window.preserveCompareSelection = function preserveCompareSelection(prevIds, tbo
${filtered.map(o => {
const h = healthStatus(o.last_seen);
- const shape = h.cls === 'health-green' ? 'β' : h.cls === 'health-yellow' ? 'β²' : 'β';
+ const shapeIcon = h.cls === 'health-green'
+ ? ''
+ : h.cls === 'health-yellow'
+ ? ''
+ : '';
// TableSort reads NaN-sortable raw values from each cell's
// data-value attr (table-sort.js comparators.numeric/time sort
// NaN last). Empty string β NaN β missing-sorts-last.
@@ -381,7 +387,7 @@ window.preserveCompareSelection = function preserveCompareSelection(prevIds, tbo
const _packetCount = (o.packet_count != null) ? o.packet_count : '';
const _packetsHour = (o.packetsLastHour != null) ? o.packetsLastHour : '';
return `
- | ${shape} ${h.label} |
+ ${shapeIcon} ${h.label} |
${escapeHtml(o.name || o.id)}${window.ObserversNaiveChip.render(o)}${o.can_relay === false ? ' listener' : (o.can_relay === true ? ' repeater' : '')} |
${o.iata ? `${o.iata}` : 'β'} |
${timeAgo(o.last_seen)} |
@@ -493,7 +499,7 @@ window.preserveCompareSelection = function preserveCompareSelection(prevIds, tbo
content.innerHTML =
(naiveChipHTML ? '' + naiveChipHTML + ' Clock is naive β per-packet timing clamped to ingest time.
' : '') +
'' +
- '- Status
- β ' + h.label + '
' +
+ '- Status
- ' + h.label + '
' +
'- Region
- ' + (o.iata ? '' + o.iata + '' : 'β') + '
' +
'- Last status
- ' + timeAgo(o.last_seen) + '
' +
'- Last packet
- ' + (o.last_packet_at ? timeAgo(o.last_packet_at) : 'β') + '
' +
diff --git a/public/style.css b/public/style.css
index 042e3257..e1f3e34c 100644
--- a/public/style.css
+++ b/public/style.css
@@ -1,5 +1,23 @@
/* === CoreScope β style.css === */
+/* Phosphor icon sprite helper (#1648 M1).
+ * Icons live in public/icons/phosphor-sprite.svg as .
+ * Reference with:
+ * Inherits color via currentColor; sized to 1em so it scales with surrounding text. */
+.ph-icon {
+ width: 1em;
+ height: 1em;
+ /* #1648 M1 follow-up: icons are 1em-sized so they scale with the
+ * surrounding text β but several nav surfaces use a smaller font-size
+ * (top-nav text is ~12.8px), which dropped the rendered icon below the
+ * intended 16px floor. Pin .ph-icon's own font-size to 16px so the
+ * icon scales independently of the parent's text size. */
+ font-size: 16px;
+ vertical-align: -0.125em;
+ fill: currentColor;
+ flex-shrink: 0;
+}
+
/* Aldrich webfont β used by the navbar logo SVG (issue #1137 follow-up).
* Self-hosted woff2 (latin subset from Google Fonts, ~16KB). Only weight
* available is 400; the SVG's font-weight="700" synthesizes bold. */
diff --git a/scripts/instrument-frontend.sh b/scripts/instrument-frontend.sh
index 51562f8c..e5f66e17 100644
--- a/scripts/instrument-frontend.sh
+++ b/scripts/instrument-frontend.sh
@@ -25,6 +25,13 @@ if [ -d public/fonts ]; then
mkdir -p public-instrumented/fonts
cp -r public/fonts/. public-instrumented/fonts/
fi
+# Copy Phosphor icon sprite (#1648 M1). Same SPA-fallback gotcha as /img β
+# without this, GET /icons/phosphor-sprite.svg returns index.html and every
+#