- CompassTapeHUD: fighter-jet style horizontal scrolling tape,
smooth sub-pixel phase correction, cardinal labels (N/E/S/W) in
yellow, intercardinals (NE/SE/SW/NW), numeric ticks every 30°;
fixed yellow ▼ centre indicator; degree readout (e.g. 327°)
- Toggle button (top-left, waveform icon) shows/hides HUD with
fade+slide animation; defaults to on; yellow when active
- "NO IMU" placeholder when saltybot/imu data not yet received
- SensorManager: subscribe saltybot/imu in startStreaming() and
ensureMQTTConnected(); handleBotIMU() parses heading / true_heading
(degrees) or yaw (auto-detects radians vs degrees); normalises to
[0, 360); exposes as @Published var botHeadingDeg: Double?
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>