feat(layers): highlight aircraft broadcasting a transponder emergency

Flights and Military Flights tint aircraft red while the latest poll
carries squawk 7500/7600/7700 or an adsb.lol ADS-B emergency status
(general/unlawful/nordo/downed). Minimum-fuel and lifeguard priorities
are reported but not tinted. The Cockpit HUD aircraft-meta line names
the broadcast code in red. The status is not sticky: a cleared code
stops highlighting on the next refresh.

The analyst/voice query engine gains squawk, emergency and
emergencyKind fields. No new source or request: OpenSky state vectors
already carry the squawk and adsb.lol/readsb carries both fields.

Built by the Hex project (Crew Leo Agile dev team).

Co-Authored-By: Claude <[email protected]>
This commit is contained in:
Leo PechnickiandClaude authored and Mazeyar Moeini Feizabadi committed 2026-10-13 17:22:29 +02:00
1 parent 9beadbda63
commit eb7f059750
26 files changed
+1174 -107

No files matched your search

+10 -1
View File
@@ -12,6 +12,7 @@ import {
compassDivisions,
formatAltitudeRulerTick,
formatCompassDivision,
formatCockpitEmergency,
formatSpeedRulerTick,
normalizeHeading,
relativeBearing,
@@ -133,7 +134,15 @@ export function updateHud(
: info.stale
? 'STALE FEED'
: 'LIVE TRACK';
this.aircraftMeta.textContent = `${info.layerId === 'military' ? 'MILITARY' : 'COMMERCIAL'} · ${feedState} · COURSE ALIGNED`;
const fleet = info.layerId === 'military' ? 'MILITARY' : 'COMMERCIAL';
const emergency = formatCockpitEmergency(info.emergency);
this.aircraftMeta.textContent = emergency
? `${fleet} · ${emergency} · ${feedState}`
: `${fleet} · ${feedState} · COURSE ALIGNED`;
this.aircraftMeta.classList.toggle(
'emergency',
info.emergency?.severity === 'emergency',
);
}
this.updateRoute(info);
if (