260910 – Dev update

239 commits, 1,544 files, ~289k insertions. Two long-running branches landed in this window: the hangar programme (37 items) and the onboarding front door. 38 features newly Implemented, plus 18 bug fixes to already-shipped ones.

🛩️ The Hangar — 27 items, aircraft management is now a product

  • The tab is called Hangar, and every paying tier can actually open it (F1173, F1172)
  • The type typeahead resolved six aircraft and half of them were wrong; it now searches the real ICAO catalogue on-device, and the whole 7,388-variant source is no longer collapsed to 2,688 (F1176, F1169, F1171)
  • Types carry facets, so the add form shows the fields that apply and hides the ones that don’t — a microlight that glides gets 8:1, not a glider’s 30:1 (F1170, F1178)
  • Prefilled figures are now visibly distinguishable from ones the pilot entered, and the glide figures a pilot was never shown are on screen (F1177)
  • Everything typed into the add wizard was lost on a tab switch; the wizard now keeps your work and asks before losing it, and says which step you’re on (F1179, F1175)
  • A typo in a registration was permanent — registration is now editable, and a null one stops rendering as the word “None” (F1187, F1121)
  • The hangar reads as a card with a photograph instead of a settings list; translations fixed (F1190, F1191)
  • Maintenance could be read and never written — there’s now a way to record an oil change; and defect reporting interface live (F1192, F1193)

📋 Flight planning & fuel

  • “Failed to save” now says which of three figures is missing, and captures a missing burn rate where the pilot meets it instead of sending them to the hangar and losing the route (F1186)
  • A missing cruise speed became 1 m/s; it now refuses. A cruise speed came back different from the one you typed (F1200, F1198 raised)
  • A diesel aircraft weighed its fuel as Avgas; saving an over-weight loading no longer says “Within MTOW”; today’s load can never be written back to the aircraft (F06, F632, F1185)
  • A fuel plan from a generic preset no longer renders in the same green as one from real figures (F1183)

🚪 Onboarding & sign-in

  • The front door shipped: landing page, then four steps — free account with no password, an emailed code that verifies and signs you in, four questions about how you fly, and the plan cards (F1205)
  • Email validation codes are eight characters and non-numeric, plus magic-link sign-in. (F1209, F1210, F90 — in progress)

👥 Social & connections

  • You can now add pilots, including two on an airfield with no signal, via invite codes (F1157, F1063)
  • Dashboard feed cards now read as a map — airspace, rivers, roads, nav points and named aerodromes, with the geometry off the JS thread in a worklet, and the backdrop cached 48 hours (F1155, in progress)
  • “My Community” moved to a pill top-right at a third of the height, reclaiming a full-width Dashboard row (F1164)
  • Traceless “null” flights accumulated forever; they’re now purged, hidden locally rather than deleted, with a route back to a hidden flight (F1161)

🔐 Privacy & logout

  • Sign-out fails closed, asks first, and then wipe the user specific data (F1212)
  • GDPR account erasure from Settings, with the grace period; the PII response cache clears on every session end rather than only sign-out; the per-device guest identity is released on sign-in; the flight-exports directory is bounded (F1227)

🎫 Tiers & entitlements

  • The Fly Safe promise is closed: NOTAMs, winds aloft, and contour lines reach the free tier (F1202)
  • Export and share were locked for every tier, including Club (F1203)

🗺️ Charts

  • Chart cartography programme defined — 14 items (F1213–F1226) covering the web map rendering no text at all, controlled airspace painted red, no basemap above zoom 5, one cartographic spec across both renderers, zoom-weighted boundaries, VOR compass roses, and a mobile chart-look toggle

🧱Data integrity & migrations

  • New defect class found and gated: a WatermelonDB migration’s correctness depends on the schema version the device installed at. Two live instances repaired (v21, v29) against real SQLite, a fourth fixed, and the class is now gated rather than fixed once (F1152, F1153)
  • The v74 airways migration failure resolved
  • Two WDB rows for one aircraft put a duplicate key in the Hangar (fixed)

⚙️ Tooling & CI

  • Cleaned up 393 eslint-disable directives that suppressed nothing; the mobile and web ratchet is at zero (F1163)
  • Mobile aligned to Expo 57.0.20 (F1156, F795)
  • NPM audit advisories cleared with updates (F1022)