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

@@ -198,7 +198,7 @@ static const char* const I18N_TR[] = {
"Kayıt Defteri / WebUI",
"Kayıt Defteri / WebUI",
"Bu web sayfası, uçuş kayıt defterini doğrudan tarayıcıdan görüntülemenizi, indirmenizi ve tek tek silmenizi sağlar. Aynı WiFi ağındayken tarayıcıyı açıp şu adrese gidin:",
"Bu web sayfasının üst kısmında o an görünen tüm uçakları gösteren canlı bir radar, altında ise uçuş kayıt defterini doğrudan tarayıcıdan görüntüleme, indirme ve tek tek silme imkanı bulunur. Aynı WiFi ağındayken tarayıcıyı açıp şu adrese gidin:",
"WiFi bağlantısı yok - sayfaya yalnızca bir ağ bağlantısı varken erişilebilir.",
"Hava Durumu",