Add WebUI live radar; mutex-protect AirlineFilter/AircraftWatchlist

The WebUI home page now shows a live radar canvas above the flight
logbook, polling a new /radar.json endpoint every 3 seconds. It
mirrors the device display: distance rings, aircraft colored by
altitude, ground vehicles as squares, rotorcraft as diamonds, and
emergency/watchlist/heavy-category rings in that priority. Applies
the same range, hide-ground-vehicles, and airline filters as the
device radar.

AirlineFilter and AircraftWatchlist gain proper mutex protection
around their in-memory arrays (previously only guarded around SD
file I/O) since the new /lists WebUI pages reach them from Core 0
(NetTask) in addition to their existing Core 1 (menu screen)
callers.

Note: the "notable aircraft" military/government callsign-prefix
marker is not implemented - Config::NOTABLE_CALLSIGN_PREFIXES was
never defined anywhere in this project, on the device display or
here. The "notable" ring currently fires on heavy-category aircraft
only.

Also documents the OTA-testing exception to the auto-flash rule in
CLAUDE.md (build-only during Push & Release, so the test device stays
on the previous version for OTA testing).

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
Eiswolf-BG
2026-08-13 03:50:20 +02:00
parent 220e670a88
commit 5e22025d7a
10 changed files with 393 additions and 48 deletions

View File

@@ -190,6 +190,11 @@ in dieser Reihenfolge:
Alex nachfragen statt zu raten. Erst NACH dem Eintragen der korrekten
Nummer: einmal sauber `pio run` bauen, DANACH erst der Rest des
bekannten Workflows (README, Tag, index.html, Bin-Dateien, Commit/Push).
(Hier bewusst NUR bauen, NICHT flashen - Ausnahme von der sonst
geltenden Auto-Flash-Regel, siehe Abschnitt "Nach jedem erfolgreichen
Build automatisch flashen" weiter unten. Das Testgerät soll auf der
bisherigen Version bleiben, damit das neue Release per OTA getestet
werden kann.)
1. Prüfen, ob seit dem letzten Commit neue/geänderte Features hinzugekommen
sind, die für Endnutzer sichtbar sind (neue Menüpunkte, geändertes
Verhalten, neue Screens) - falls ja, **README.md entsprechend ergänzen**
@@ -245,4 +250,13 @@ fragen - außer der Nutzer sagt ausdrücklich "nur bauen, nicht flashen" o.ä.
Kurz danach bestätigen, dass der Upload ebenfalls erfolgreich war (inkl.
"[SUCCESS]"-Zeile am Ende).
AUSNAHME: Innerhalb der Push & Release-Routine (siehe Abschnitt
"Standard-Workflow: Push & Release") NICHT automatisch flashen, selbst
nach erfolgreichem Build - dort wird bewusst nur gebaut. Grund: Alex
möchte das Testgerät auf der bisherigen Version belassen, um das neue
Release anschließend über die OTA-Update-Funktion zu testen, statt es
direkt per Kabel zu flashen. Für alle anderen Anlässe (normales
Entwickeln/Testen, einzelne Fixes) gilt die automatische Flash-Regel
unverändert weiter.
Bitte diese Regel jetzt in die CLAUDE.md-Datei einpflegen.