260906 – Dev update

✈️ Flight records

Flights now actually end: automatic end-detection, plus closeout of a flight orphaned by an OS restart (F994, F1151)
Download flight history, so a reinstall restores the logbook instead of losing it (F1142)
In-flight trail window is now pilot-controllable — and the trail actually grows, which it never did (F1149)
Flight sync outage fixed: a DB column too narrow for its own domain (F1047, F69, F95)


🗺️ Maps & data

One ranked, offline-first search behind all six waypoint pickers — previously six inconsistent implementations (F1148)
One tiered, licence-aware source framework for every aeronautical dataset; four-tier vocabulary now reaches the client and the toggles work (F1150)
Airspace vertical datums preserved through all three sources; ground-relative limits resolve against terrain (F1113)
Mobile map zoom gates were never wired to MapLibre — fixed, plus obstacle clustering (F1137, F286)
Route-scoped terrain download over mobile data with pre-flight coverage warning (F1136)


⚡ Performance

Map render path no longer subscribes to the reference-data write path; render artifacts retained by reachability, not generation count (F1143)
Background downloads stop being one-at-a-time with a 300 ms gap — parallel and link-quality adaptive (F1147)
CirclingDetector GPS sample buffer bounded (F399)


📡 Traffic / ADS-B

Unified conspicuity source registry with operator overrides (F1135)
Outbound calls send an identifying User-Agent, so ADS-B providers stops 403ing us (F709)
NASR ingest was buffering twice killing CI/CD runners, now fixed (F1116)


🔭 Observability

Production had never transmitted a span — three stacked faults; spans now tagged by environment (F736)


⚙️ Build & CI

Pre-push verdict cache, resource governor, jest worker caps (F1130/1131/1138/1139)
Additional repo scripts brought under lint coverage (F1145)
iOS sim-install targets the newest runtime, not the oldest (F520)