Changelog

Every release, in the open.

The full history, not just the latest version. The in-app changelog links back here.

v1.0.8

  • Manage VA: owners can now rename, re-threshold, recolor, and reorder ranks after founding, in a new "Ranks" tab. Previously the 4 starting ranks were fixed forever.
  • Manage VA: moderators now have their own way in (Members + Events), instead of no UI path at all despite already having the server-side permissions.
  • Traffic icons: own aircraft and other GroundNav pilots now share one consistent size scale that matches VATSIM/IVAO's own icon sizing. Only true heavies/supers (A380, 747-class) read noticeably bigger.
  • Added aircraft artwork for ~26 more types.
  • Fixed a case where a flight could get stuck reporting "Climb" forever after a genuine level-off well below the flight-planned cruise altitude (heavier-than-planned load, or an ATC-restricted initial level).
  • Fixed Career Mode's competency-test graduation silently failing every time, leaving pilots stuck on the Competency Tests screen despite passing all 10.
  • Fixed several other Career Mode actions (sim evaluations, GA/FFS flights, recurrent checks) failing silently with no visible error if the server rejected them.
  • Fixed GN Live's flight cards sometimes showing no airline at all when a pilot's SimBrief plan didn't match their loaded aircraft. The airline now still displays; only AI-traffic model selection for other pilots stays cautious about the mismatch.
  • Fixed the Competency Tests passed-count occasionally displaying more than 10/10.
  • VA: fixed founding an airline or acquiring an aircraft failing outright due to a stale internal column name. This had been broken for every real player until now.

v1.0.7

  • Selecting a gate for autotaxi now keeps AI traffic off it: it won't get filled by future injections, and if traffic was already sitting there, it's cleared automatically.
  • Recalibrated takeoff performance numbers for the A320neo, A330-200/-300, 737-800, 777-300ER, and A380-800 for more accurate V1/VR/V2 and FLEX/derate results.
  • Added a "Reset All Settings" option in Settings, with a confirm step to avoid hitting it by accident.
  • Fixed a case where the app could still lock onto the wrong tail number on some payware aircraft (PMDG in particular) even when the correct registration was already known from an earlier flight.
  • Fixed autotaxi routes sometimes starting or ending a visible distance from your actual aircraft or gate, most noticeable at complex airports like Heathrow. Routes now connect exactly to your position and the gate.
  • Fixed arrival-gate detection occasionally using a stale "nearest airport" value instead of your real GPS position.
  • Fixed a rare case where running two copies of GroundNav at once (including a crash-relaunch) could silently wipe saved settings like your SimBrief username or CheckWX API key. GroundNav now refuses to launch a second instance and brings the existing window to the front instead.
  • Fixed the takeoff calculator silently using a placeholder temperature and pressure (15°C, 1013 hPa) instead of real conditions whenever the outside air temperature happened to read exactly 0°C, with nothing indicating it wasn't using live data. It now shows a clear warning whenever it falls back to a placeholder value.

v1.0.6

  • New WINDS tab in the Information page: crosswind, headwind/tailwind, slope, and a runway diagram for every runway end at any airport, driven by live METAR wind.
  • CHARTS tab now lets you pick between ChartFox and Microsoft Flight Simulator's own chart planner instead of being locked to ChartFox. Your choice is remembered and switchable from inside the tab.
  • New DIVERSION field next to the DEP/ARR/ALTERNATE weather cards. Declare a diversion airport mid-flight and its weather and if traffic injection is enable will inject to your diverted airport.
  • Auto-injecting AI traffic at your arrival airport is now an opt-in toggle instead of always-on. Manual injection still works regardless.
  • PLAN FLIGHT in Explore now opens SimBrief prefilled with departure, arrival, airline, and aircraft type for the route you picked.
  • New STEP-DOWN flight phase: an ATC-directed level change on the way down (e.g. FL360 to FL330 for separation) no longer gets mislabeled as the start of your arrival descent.
  • Top of Descent calculation has been improved, a real performance and forecast-wind calculation, whenever the OFP has one, instead of always falling back to a generic rule of thumb.
  • The ATC ambience mic indicator now shows three real states instead of two: playing, muted, and unmuted-with-no-coverage so the mic button no longer looks unresponsive at an airport with no recorded chatter.
  • SimBrief sync now checks for a new or updated OFP every 20 seconds instead of 60.
  • MCP/FCU remote-write support is now complete for PMDG 737 NG3, PMDG 777X, iniBuilds A350/A340, and FlyByWire A380X/A32NX — lays the groundwork for controlling select autopilot functions (heading, altitude, speed, VNAV/LNAV, approach mode, and more, varying by aircraft) from the GroundNav mobile app once that launches.
  • A flight could be marked complete with engines still running if a beacon switch was mis-hit while taxiing in. Sealing a flight now waits for engines to actually shut down.
  • Flight Save & Resume and its startup recovery popup are locked off, confirmed to freeze MSFS for some pilots on heavy aircraft. The separate popup for recovering an unlogged flight (which never touches the simulator) is unaffected and stays on.
  • Closing the crash-recovery popup used to leave the underlying recovered data in place, so it reappeared on every future launch even after being dismissed. Closing it now actually clears it.
  • The VATSIM FIR/CTR boundary lookup was silently broken due to a mismatched section header in the underlying data file.
  • FlyByWire aircraft using the newer nested presets folder layout, including the A380X, could fail to detect the correct tail number.
  • Landing and departure grades are now included when a flight is recovered after a crash, so a crash right after touchdown does not lose your score.

v1.0.5

  • Profile Gallery: added two new optional display styles — an accordion-style airport picker and a circular photo carousel — pick your favorite from the Gallery tab.
  • ATC Ambience: bundled real-world COM frequencies for every region, Center/ARTCC chatter now plays correctly, and a new mic indicator lets you manually mute, unmute, and see which frequency is currently playing.
  • General cleanup, performance, and stability improvements across the app.

v1.0.4

  • Manual traffic injection now works from any distance to the target airport, not just when you're on the ground there, and automatically targets your departure or arrival airport depending on phase of flight.
  • Manually injected traffic that never gets close to your aircraft is now cleared automatically instead of lingering and affecting performance.
  • Arrival traffic near an uncontrolled airport now injects automatically as you approach, even if you never manually injected departure traffic.
  • Corrected gate and terminal groupings for JFK and Heathrow using verified real-world charts, including new cargo apron stands at JFK.
  • Study Library: the Aeronautical Chart User's Guide, Aviation Weather Handbook, and Risk Management Handbook are now fully expanded.
  • Smart Linker's vault watcher now runs continuously in the background instead of only while the Smart Linker page is open, so newly added packages are detected automatically.
  • Aircraft Location Lock could incorrectly flag the wrong tail number, particularly on aircraft whose livery folder can't be reliably matched to a registration right away (confirmed on the iniBuilds A350). It now only acts on a confirmed registration.
  • The runway confirmation toast could auto-select a runway based on aircraft heading and get it wrong. It now only ever confirms via a real ATIS match or your own manual selection.
  • Smart Linker could show indistinguishable names for livery packs that ship many near-identical packages, such as one per registration. Package names now always match what's on disk.
  • Smart Linker could badly underestimate the size of large add-on packages with deeply nested folders, most noticeably liveries. Size calculation is now accurate regardless of folder depth.
  • Smart Linker's in-flight safety gate could remain stuck closed even after the simulator had fully disconnected, blocking changes with nothing actually running to justify it.

v1.0.3

  • New pilot-only Career Mode dashboard: key stats, an earnings chart, aircraft experience, and a flight calendar.
  • GroundNav Aviation Academy tab now shows the real GNAA logo.
  • World Traffic map now uses real aircraft icons and real airline logos in the standings panel.
  • New ATC Ambience option in Settings: plays real recorded ATC audio for your tuned frequency and airport, and pauses automatically while VATSIM is actually staffing that airport.
  • Emergency squawk codes (7500, 7600, 7700) now highlight on the map and in traffic popups, plus a toast if your own transponder gets set to one.
  • Added 144 airlines to the career mode roster.
  • Refreshed and added several airline logos.
  • Fuel remaining could show 0 kg for aircraft using MSFS 2024's newer fuel system (confirmed on the iniBuilds A350). Now reads correctly.
  • World Traffic map aircraft appeared clustered into unrealistic "flower" shapes at busy airports instead of spread out. Traffic now renders more realistically across the map.

v0.34.0

  • New 3D replay viewer for departure and arrival clips, alongside the existing 2D map replay.
  • Rebuilt the takeoff performance calculator's thrust-reduction model. It used to apply a flat linear approximation (V1 dropping a fixed number of knots per degree, balanced field length growing a fixed percentage per degree), with no regard for weight or actual runway margin. It now uses a real force-balance relationship, and a Sel Temp entry can be combined with a fixed derate (TO-1/TO-2) the way it works on a real Boeing FMC, not just with assumed temp or FLEX.
  • SID, STAR, and approach selection in the OFP panel can now be pinned to a specific procedure and via/transition instead of always falling back to a priority order.
  • Study Library: the Airplane Flying Handbook, Instrument Flying Handbook, Instrument Procedures Handbook, and Weight and Balance Handbook chapters were substantially expanded.
  • New dedicated sign-in and password-reset flows, with matching account email templates.
  • Taxi routing at some airports produced long detours or completely unreachable gates because pushback-type taxi paths were excluded outright to avoid cluttering the map with a zigzag line per gate. They're back in, but only used when they're genuinely the only way out.
  • Bulk airport scans were taking 5 to 15+ minutes because each airport's facility data was requested over its own connection, one at a time, with a 12 second wait per request. Requests are now pipelined over a single persistent connection instead.
  • STARs published as per-runway variants (confirmed at EDDF and EHAM) were being excluded entirely from procedure selection. The filter assumed a STAR always has no runway name attached, but this navdata marks common-route procedures with the literal string "ALL," not NULL, so runway-specific STARs were silently dropped.
  • When a requested runway had no matching procedure variant, the flight path used to fall back to the first candidate and draw a route that visually cut through taxiways to a runway the pilot never selected (reported at EDDF).
  • True heading was reading near-zero garbage values on study-level aircraft, a known quirk of how MSFS reports that variable for those aircraft. It's now derived from magnetic heading plus magnetic variation instead, the same workaround other EFB add-ons use.
  • Manually taken screenshots were loading the full-resolution original into the SHOTS grid instead of a proper thumbnail. A cached preview is now generated for them too.
  • Linking two packages that share an ICAO code (for example, a jetway-fix mod tagged with its base airport's code) used to silently turn off a package the pilot had manually enabled. That conflict is now advisory only and never overrides a manual choice.
  • Auto screenshots, screenshot map pins, and external-view replay clips are now off by default.
  • The startup popup offering to resume a saved flight could wrongly trigger for a flight that had already been completed normally. It's now off by default behind a new Settings toggle while Flight Save & Resume is rebuilt.

v0.32.0

  • Career Mode: real flight numbers now appear on generated rosters, joined from the real-world schedule database's individual flight records instead of an aggregated route-frequency table that had no number to give.
  • Career Mode: Career Mode now switches on automatically when the flight number/callsign filed in SimBrief matches a flight on today's roster, with an explicit Yes/No confirmation before it counts toward rank, hours, or airline.
  • Career Mode: duty/rest limits are now actually enforced, not just shown as an advisory badge — turnaround rest and the 28-day/annual FTL hour limits will now genuinely ground a flight that violates them.
  • Career Mode: medical certificate and type-rating recurrency currency are now enforced — a lapsed medical or an overdue recurrent check blocks flying that aircraft until renewed.
  • Career Mode: new base transfer mechanic — request a move to another base your airline actually operates from, using its real schedule data rather than an invented list, awarded monthly by seniority.
  • Career Mode: dispatch releases now carry real weather-aware special notes generated from the filed SimBrief plan, plus a live NOTAM feed merged on top of SimBrief's own bundled NOTAMs.
  • Career Mode: new "Study Library" tab.
  • New persistent Top of Descent and step-climb alerts (desktop) that keep alerting until acknowledged, instead of a single easy-to-miss notification.
  • Live NOTAMs now come from SkyLink API (FAA SWIM feed) — aviationweather.gov never actually had a public NOTAM endpoint, only METAR/TAF/SIGMET/AIRMET. SimBrief's own bundled NOTAMs remain the baseline; SkyLink merges in on top when a free API key is configured in Settings.
  • Information page: airport frequencies now come from local navdata (your Navigraph AIRAC data if you have it, Little Navmap's scenery scan otherwise) instead of FlightPlanDatabase, which mixed in nearby-but-different airports' frequencies with no way to tell them apart.
  • PMDG registration could briefly show a stale tail number left over from a previous flight — a timing race in the fast registration scan could win against PMDG's own aircraft-state write before it landed. The lock on a detected registration now waits ~20 seconds to settle first, so PMDG's own real self-corrections get a chance to run instead of being silently discarded.
  • Aircraft location lock (blocks flying a tail away from where it last landed) now checks ~7 seconds after spawning at the gate instead of waiting until pushback/taxi-out, catching a wrong-tail load before any time is wasted.
  • Landing analyzer was discarding an already-confirmed runway (from the 5000ft runway selector) whenever local runway geometry data was missing for that airport, instead of using it — this was the actual reason community arrival-runway stats on the Information page were showing almost no landings for airports flown many times.
  • Fuel monitor's burn-rate measurement window now only samples during cruise. It used to start the instant groundspeed passed 100kt, so the first 20-minute window was climb-out — a much higher burn rate than cruise — and got extrapolated as the sustained hourly rate, flipping the status to caution/critical right as that first window closed.
  • Smart Linker was flagging false "same airport" conflicts between completely unrelated packages when their folder names coincidentally contained a real but obscure airport's ICAO code (e.g. "PACK", a small Alaska airstrip, matching every "... City Pack" scenery folder).
  • Local flight-history cache migrations were using SQLite syntax that doesn't actually exist (SQLite has no "ADD COLUMN IF NOT EXISTS") and silently failed on every single run — the real reason the local cache, and Challenges/Achievements built on it, stayed empty for some installs.
  • Information page frequencies were showing almost every entry mislabeled as "Tower" — the underlying navdata stores type codes as short letters ("G", "D", "C"...) that the mapping only recognized as full words, and a separate unit-scaling mismatch between two different local database formats was showing frequencies like "0.119" instead of "119.550".
  • Removed a duplicate VATSIM FIR boundary map toggle that never actually rendered anything — the other one (which also covers IVAO and US TRACON boundaries) was already working correctly.
  • Onboarding could briefly show an existing pilot the onboarding flow instead of their dashboard on load, before their career data had finished fetching.

v0.31.0

  • Explore page: the DaySelector (MON–SUN) now pulls real flights from the real-world schedule database for that specific day of the week instead of random routes, and Shuffle mixes short/medium/long-haul instead of skewing toward short hops. VATSIM events for the day now show alongside it in a new side-by-side layout.
  • Landing runway confirmation now triggers around 5000 ft AGL instead of 3000, and stays open and correctable (tap "Change runway") all the way down to 1500 ft AGL instead of auto-dismissing early — addresses ATC swinging a pilot to a different (often parallel) runway mid-approach, Frankfurt being the most common case reported.
  • Screenshots on the live map can now be liked and double-clicked for a larger view directly from the map pin, and a new opt-in (Settings > Share my screenshots with other pilots) lets other pilots see your uploaded shots as pins on their own map too — off by default.
  • Flight info panel (FLIGHT/GROUND/GSX/OFP/SHOTS/REPLAY) now renders above the compass and active-runway indicator instead of underneath, so an expanded OFP/procedure section never gets visually clipped by them.
  • Airport schedule browser: aircraft-type badges are now a neutral light grey instead of color-coded by body type (gold/orange/blue), reading as plain metadata rather than a status indicator.
  • Flight import now accepts ZIP files directly — the format Volanta/ElevateX actually export — instead of requiring the CSV/JSON to be unzipped first.
  • New Diagnostics tools in Settings: an opt-in rolling diagnostic log plus a "Save Diagnostic Report" button, so troubleshooting something that just happened doesn't require reproducing it from scratch.
  • New taxiway and taxi-route line color settings — a curated pavement-toned palette for taxiway centerlines/labels, and any color for the computed taxi route line.
  • Two new basemap styles, Light and Grayscale, alongside Dark/Black/Satellite.
  • Flight debrief consolidated into one view (previously two separate screens), now also showing stabilized-approach gate status, ILS localizer deviation detail, and planned-vs-actual fuel burn.
  • New "Members" tab in the desktop VA admin dashboard — approve/reject pending applications and suspend/reinstate members without the web app; VA members also get a "Leave VA" button.
  • VA Discord webhook integration — PIREP approvals and rank promotions now post automatically to a VA's configured Discord channel.
  • New "Plan" tab on the Profile page — shows subscription/entitlement status and which devices are signed in (read-only; billing itself is still managed on the web app).
  • AI traffic: every real scheduled airline at an airport is now guaranteed at least one aircraft on the ramp, instead of a low-frequency carrier occasionally losing every random draw to the dominant hub airline; injection now windows to the airport's real local time via timezone lookup instead of the pilot's own clock; cargo carriers spawn on real cargo ramps instead of mixing in with passenger gates, and airline mix tracks the real-world schedule proportionally instead of collapsing toward whichever carrier has full livery coverage.
  • Vault bulk-activate can now target a subcategory (e.g. just "Sceneries" within Airports), not just the whole category.
  • Replay clips now carry VA affiliation when published, so they attribute correctly on GN Live.
  • New Diagnostics: opt-in CSV telemetry logging (hidden hotkey) added for tracking down a PMDG 777 lighting-simvar issue.
  • AI traffic: a failed player spawn (SimConnect queues it but never actually assigns an object) was silently recorded as a success, leaving that pilot permanently invisible to others until reconnect — now fails loudly so the existing retry logic actually runs.
  • Basemaps: "Dark" and "Black" were secretly rendering identically; also fixed switching basemaps sometimes producing a blank/black map.
  • SimBrief OFP: short durations (taxi-out, reserve, endurance) were misparsed as clock times — a 20-minute taxi was showing as "720 min".
  • VA invite codes: joining via invite code always activated membership immediately, bypassing owner/moderator review on standard/strict VAs.
  • Linker: two vault copies of the same payware airport could both be marked "always on" and get linked into Community simultaneously — now auto-resolved (most recently toggled wins), with the conflict flagged in the Vault tab.
  • GroundNav radio: 122.8/123.45 had no range limit — a pilot could hear someone on the other side of the world; now gated to ~80nm.
  • Traffic icons: VATSIM/IVAO/GN Live aircraft icons were too small when zoomed out and didn't scale with zoom; now scale smoothly, with GN Live traffic staying 1.5x larger than network traffic for legibility.
  • Logbook import: Volanta changed their export schema twice since the last update, breaking field parsing; added fallbacks for older exports, and cancelled/timed-out/unflown flights are now skipped instead of importing as junk rows.
  • Career Mode: senior captains could never get hired — the application rank-check had no branch for the top rank at all, so it silently fell through and was treated as the lowest possible rank, failing the airline's minimum-rank gate on every single application.
  • Career assessments: fixed a runtime error that could block starting an assessment.
  • Boston Logan (KBOS): Terminal E gate assignment restricted to widebody aircraft, so regional/narrowbody AI traffic no longer parks at the international terminal.
  • OFP panel: the section nav bar now auto-scrolls the active tab into view instead of leaving it clipped at the edge.

v0.30.0

  • SimBrief OFP tab: FL STEPS now shows real data — the previous field it read never existed in SimBrief's actual API, so it silently rendered empty on every flight. Fixed alongside it: real landing fuel and a real ICAO flight plan (PBN, EET boundary crossings, RMK, RALT) instead of a client-side approximation with literal "????" placeholders.
  • SimBrief OFP tab: three new sections that didn't exist before — Operational Impacts (FL/cost-index/ZFW change deltas), full Alternate Route detail (track, distance, wind, ETE, burn, weather), and Runway Analysis (V1/VR/V2, flex temp, dry/wet landing distances, per-runway limits). Flight Log, Winds, Weights, and Times all gained real fields (MORA, EFOB, multi-altitude winds aloft, max ZFW/TOW/LDW, scheduled vs. estimated times) that SimBrief provides but were never read.
  • AI traffic injection: cargo carriers now spawn on real cargo ramps instead of mixing in with passenger gates, using a proper SimConnect parking-type split (cargo ramps were previously lumped in with hangars/fuel pads/vehicle depots under one ambiguous type). Extended gate coverage to remote/bus gates and small GA ramps, which were being excluded from the usable-gate pool entirely.
  • AI traffic injection: airline mix now tracks the real-world schedule proportionally instead of collapsing toward one dominant carrier — an airline with no installed livery for its scheduled type used to be dropped from the draw entirely rather than falling back to a generic paint, which silently inflated whichever carrier did have full coverage.
  • Full Debrief: two new charts. A whole-flight altitude/groundspeed track (gate to gate), and a fixed approach/vertical-profile chart that had never rendered successfully — the flight recorder's seal condition required all four engines' N1 to read below 5%, which never happened on some payware aircraft, so the chart silently never saved. Both charts now save the instant "Log Flight" is clicked instead of waiting on engine shutdown.
  • Full Debrief: fuel breakdown (planned vs. actual burn) now populates far more reliably — actual burn used to depend on catching a clean pushback-phase transition, so attaching mid-flight left it blank.
  • Live map: the player aircraft icon now points along its real GPS ground track instead of drifting a few degrees off the drawn route/trail line — it was rotating by magnetic heading on a true-north-up map.
  • GroundNav Live broadcast rate reduced from 10Hz to ~3Hz, plus a movement gate that skips sending when barely anything has changed — meaningfully cuts Supabase Realtime message volume with no visible change in tracking smoothness.
  • Checklists: Cockpit Preparation and Before Start are now separate checklists (previously lumped into one) across all 12 supported aircraft, using each manufacturer's real SOP terminology. The active checklist now advances automatically the moment the current one is completed, and can be minimized to a small resumable chip instead of only dismiss-or-nothing.
  • Map traffic popups redesigned for legibility — clearer typographic hierarchy, real VATSIM/IVAO/GroundNav network colors, and step-climb/SELCAL data folded in.
  • Removed the DISPATCH tab from the Tools widget.
  • SimBrief NOTAMs were always empty — the field they were read from doesn't exist anywhere in SimBrief's real API. Fixed to read the actual per-airport NOTAM lists.
  • A380 (and other long-haul) Fuel Monitor false alarm: the projected-fuel-at-destination figure could swing to a large false deficit right after takeoff, before the first real burn-rate measurement replaced the seeded estimate. Status now stays clear of caution/critical until a real measurement is behind it.

v0.29.0

  • Native X-Plane support: a new GroundNav X-Plane plugin streams position, attitude, and systems telemetry into the exact same map, flight recorder, replay, and landing-debrief pipeline MSFS already uses — no separate code paths, so every existing feature that reads live telemetry works identically on either sim.
  • Fenix A320: full radio and MCP support — COM1/COM2 swap now uses the correct modern SimConnect event, and heading/altitude/speed get dedicated nudge controls (Fenix's FCU only accepts relative detent changes, never an absolute jump, confirmed live).
  • FlyByWire A32NX (A320neo): full MCP support — real heading/altitude/airspeed readback and both absolute SET and nudge controls now work, using the correct FlyByWire-specific variables instead of the standard autopilot SimVars FBW doesn't populate. Fuel quantity and flap lever position also read correctly now instead of showing stale defaults.
  • FlyByWire A380X: MCP nudge support, fuel, and flap lever position, using the aircraft's own confirmed-correct variables (found to differ from A32NX's in several places, despite sharing the same underlying LVar family).
  • iniBuilds A350: MCP nudge support for heading/altitude/airspeed using genuine stock MSFS autopilot events — confirmed directly against the aircraft's own compiled systems module, no custom workaround needed.
  • Career Mode: Maintenance Lock warns before flying a VA fleet airframe that's currently in maintenance, instead of only finding out after the flight when the PIREP is silently rejected.
  • Career Mode: Location Lock blocks flying a tail number away from wherever it last landed until it's flown back — per-user, and works for any registration you fly, not just VA fleet aircraft.
  • Career Mode: new Recurrent Check flow for arming a sim-evaluation check on a given aircraft type.
  • Settings and fleet maintenance jobs (queued/active repairs, component wear countdowns) now follow you to a new machine on login instead of a fresh install always starting from scratch.
  • VATSIM/IVAO/GroundNav Live traffic movement rewritten with buffered spline interpolation (adapted from the technique VATSIM Radar uses) — aircraft render slightly in the past and interpolate through real, already-known fixes instead of extrapolating forward from the latest one, so turns trace the aircraft's actual path instead of a dead-reckoned guess.
  • New "Follow a flight" widget: search across GroundNav, VATSIM, and IVAO traffic by callsign and the map continuously re-centers on it as it moves.
  • Screenshot storage moved from a flat JSON index file to a local SQLite database — previously the entire index was read, deserialized, and rewritten on every single screenshot and gallery load. New auto-prune setting keeps only the newest N local screenshots (cloud-backed copies are never deleted).
  • App-wide color system unified around one deliberate palette (a restrained "airline lounge" identity) — red/amber/green are now reserved exclusively for real status meaning (fuel state, GSX activity, score) and never reused decoratively, replacing a patchwork of ad hoc colors that had accumulated across panels with no shared logic.
  • The mobile Sim Control panel's gear lever handle and brake indicators never actually appeared in the right position for ANY aircraft — GEAR CENTER POSITION and BRAKE LEFT/RIGHT POSITION were read with the wrong SimConnect unit (raw 0-100 instead of the app's own 0.0-1.0 convention), so the broadcast value was 100x too large and rendered the handle far outside the visible track.
  • FlyByWire A320neo's flap gate showed "NO AIRCRAFT DATA" — the neo-family ICAO codes (A19N/A20N/A21N) don't start with "A3" the way every other supported Airbus type does, so the schedule matcher never recognized them despite a comment claiming otherwise.
  • Mobile Sim Control MCP panel: typing a new HDG/ALT/IAS value could get silently wiped the instant you tapped SET — the live-telemetry sync effect was re-triggering on every focus change instead of only on a genuine new value from the aircraft.
  • MCP target values changed in the cockpit while the aircraft was stationary never reached the mobile app — the desktop's "skip broadcast if nothing changed" check only considered position/gear/flaps, not FCU target changes.

v0.28.0

  • Flight recorder rewritten to capture natively in Rust at true SimConnect frame rate (30-60Hz+) for position/attitude, instead of the frontend's throttled ~10Hz — this is what actually fixes the turning/rudder-correction "snapping" seen in replays. Applies to both the whole-flight recorder and External View Clips.
  • Full systems-state fidelity in recordings: flaps %, gear transit %, brake pedal position, all 9 exterior lights, engine combustion state, and reverse thrust (via throttle-lever position, matching how reference recorders do it) are now captured and driven back during replay — previously only a handful of these were recorded at all.
  • Takeoff performance calculator: new OPTIMUM mode — given just runway and weight, automatically finds the lowest-thrust flap/rating/temperature combination that still meets field length and 2nd-segment climb requirements. Boeing-style types search a fixed-rating + assumed-temp space; Airbus types search FLEX alone, matching each manufacturer's real dispatch logic. New RTG / Sel Temp / %N1 readout for Boeing types. Added tire-speed-limit and brake-energy estimate warnings, and a climb-limited thrust-reduction ceiling (previously only runway length capped how much derate/FLEX could be selected).
  • Landing performance calculator: same OPTIMUM treatment — automatically finds the gentlest autobrake setting that still fits the runway, full flap by default, matching real dispatch practice.
  • Takeoff and landing calculators: added CRJ700/900/1000 and Embraer E170/175/190/195 to the aircraft database.
  • Airport Info page: real-world flight schedules (departures/arrivals, day selector, Now Airborne / Next 60 Minutes / Scheduled sections) now show directly alongside airport details — search once, see both, instead of a separate SCHEDULES tab.
  • Airport Info page: Details and Stats cards now match height instead of the shorter one trailing off early.
  • ATC frequency strip: the clickable, tune-to-COM1 list now shows each controller's online duration inline, instead of a second separate read-only strip duplicating the same facility.
  • Account recovery: "Forgot password?" is now available from the sign-in screen.
  • Virtual Airlines: Type Ratings management, Routes (with great-circle distance auto-computed), and Group Flights/Events scheduling, on the desktop profile page.
  • VATSIM/IVAO traffic: dead-reckoning between position updates now curves through an aircraft's actual turn instead of projecting a straight line, fixing a "moves, then snaps back onto the real path" artifact on any turning aircraft.
  • The arrival terminal/gate expectation popup moved to a clear area of the map — it was overlapping the wind widget and GroundNav Live traffic panel.
  • Recorded flight replays showed a "snapping" turn/rudder-correction artifact instead of a smooth curve — position was only ever sampled at the throttled ~10Hz frontend update rate, which is too sparse to represent a real turn. Also fixed independently for External View Clips, which had never been migrated when the whole-flight recorder was first fixed and so kept the same bug on its own.
  • Replayed aircraft could point in the wrong direction — the recorder was capturing magnetic heading but the replay driver writes to SimConnect's true-heading variable, so every replay was off by the local magnetic variation.
  • Reverse thrust never appeared during replay — the External View Clip recorder never captured throttle-lever position at all (silently defaulted to 0), independent of the whole-flight recorder which already had it.
  • LiveKit radio: a beta tester reported not being heard by others — subscribed remote audio tracks were never attached to a playable element, so nothing actually played even though the connection/publish layer was working correctly.
  • Ghost multiplayer aircraft could appear to float above the ground — same root cause as an earlier replay-floating fix (broadcasting indicated/baro altitude instead of true altitude), found in a second, separate location (the live GroundNav Live broadcast, not the recorder).
  • GroundNav Live presence could flicker online/offline for other users — a `sim_running` blip unrelated to a real disconnect was being treated as a full disconnect, causing a delete-then-reinsert cycle.
  • Volanta flight-history import: a departure airport or aircraft type could silently import blank ("null1EDDM"-style) when the source data used a less-common field name — the fallback logic only covered the destination field, not departure/aircraft. Now falls back symmetrically, plus a warning banner when an imported flight is still missing core data.
  • Fuel Monitor: burn rate is now measured over an actual 20-minute window triggered once airborne (GS > 100kt) instead of a rough running average, and caution/critical status now scales with the aircraft's real reserve minutes instead of a flat kg threshold that read wrong on widebodies.
  • Live CG% MAC readout showed ~0.0% instead of the real value on the Takeoff Calc page — SimConnect was being asked for the wrong unit variant (a 0.0-1.0 fraction instead of a raw 0-100 percent), so a real ~29% CG displayed as "0.3%" or rounded straight to "0.0%".
  • Hong Kong's flag showed Australia's on the real-world schedule board — a mix-up between the VH- aircraft registration prefix (Australia) and the VH airport ICAO prefix (Hong Kong).
  • El Al flights showed a placeholder instead of their airline logo — the logo asset existed but neither the IATA code nor the airline name was in the lookup tables.

v0.27.0

  • Squawk code can now be set manually — click the transponder readout, type a 4-digit code, Enter to push it to the sim.
  • AI traffic ramps now show real carrier variety instead of occasionally collapsing to one airline — a count-ranked slice of gates is reserved for the top real carriers before the rest fill by realistic weighted proportion.
  • AI traffic no longer clutters the map at low zoom — migrated to the same native MapLibre rendering GroundNav Live traffic already uses: bigger icons, callsign shown only on hover/click, and icons shrink with zoom so a busy ramp doesn't render as a solid block over the airport.
  • Route waypoint altitude/speed restrictions are now individually colored (altitude amber, speed cyan) and no longer stack illegibly when two nearby fixes' labels land close together on screen.
  • New toast notification when ATC comes online at your destination within 700 NM — previously this only showed as an on-screen strip you had to be looking at.
  • New toast confirming the landing runway when it's resolved automatically via VATSIM/IVAO ATIS — previously this only showed a toast when ATC was offline and you had to pick manually, so an online resolve gave zero feedback.
  • Settings: merged the separate Integrations and Connections sections into one Connections section, and removed the non-functional Navigraph and Twitch buttons (neither ever did more than open a website).
  • Changelog now shows only the latest version on this page — full release history is moving to a page on the GroundNav website.
  • Fuel Monitor: several SimBrief fuel fields (trip, contingency, alternate) were reading using field names that don't actually exist in SimBrief's API, so they silently read as 0 — this made "AT DEST (PLAN)" show your entire block fuel instead of the real planned landing fuel. Now sourced from SimBrief's own planned-landing-fuel figure directly.
  • Fuel Monitor: burn rate could show a wildly inflated number (e.g. 3,000+ fpm-equivalent) during descent on short flights — the measurement window only recalculated on a fixed 20-minute timer, so a climb-heavy average could carry unchanged through an entire descent. It now also resets on any flight-phase change.
  • Fuel Monitor: the MARGIN figure never displayed anything — the formatter treated any negative value (a fuel deficit, the whole point of the field) as "no data" and blanked it.
  • 3-D flight replay: vertical speed during playback could read far higher than the actual recorded descent rate, with a visible jitter roughly every 2 seconds — both traced to recording timestamps being rounded to the nearest whole second, which routinely collapsed two consecutive samples onto the same instant and corrupted the interpolator's timing math. Recordings now keep millisecond precision, and the airborne sample rate was raised from 2 Hz to 4 Hz.
  • AI-injected traffic at hub airports (e.g. a single carrier's home base) could spawn as 100% one airline despite several other real carriers being scheduled — pure chance in the weighted random draw, now bounded by a guaranteed diversity floor.
  • Added a server-side cleanup job for stale "live" flight rows — a crashed or force-quit session's row could otherwise sit in the database indefinitely; every consumer already filtered it client-side, but nothing was purging it from the table itself.

v0.26.0

  • Career Mode: consolidated aircraft maintenance into one shared system — the Maintenance page, Profile Fleet tab, and the front-page grounding gate now read and write the exact same wear/repair-job data instead of three separate copies.
  • Career Mode: manual "Send to Hangar" button on the Fleet tab — appears once any component reaches warn level and grounds just that one aircraft; a new "Due Soon" filter finds aircraft with any component approaching warn. Hitting critical still auto-decommissions an aircraft on its own.
  • Career Mode: repairs are now two-phase — a flagged fault queues the aircraft immediately, but the real-world repair duration doesn't start counting down until you explicitly hit "Begin Repair" on the Maintenance page.
  • Career Mode: the front-page grounding gate has been redesigned as a blurred (not opaque) overlay that tells you exactly what's going on — queued-not-started, in-progress with a live countdown, or (new) a career operator fleet aircraft's AOG/A-check/C-check status.
  • Career Mode: operator-track fleet maintenance (A-check/C-check/AOG) now takes real wall-clock time to complete, matching the personal wear tracker instead of finishing the instant you click it.
  • Career Mode: new "Full Component Report" — a service-history modal per registration listing every maintenance job ever done, when, and how long it took.
  • Career Mode: Free Flight / Career Mode toggle, so landing scores and hours only count toward your career when you actually mean them to.
  • Career Mode: new Dispatch Release + Crew Briefing for pilot-track flights — pulls route, fuel plan, and weather/NOTAMs from your filed SimBrief plan plus a live MEL list from the aircraft's own maintenance record, and requires Captain acceptance and a crew briefing before pushback. Accepting a release with an open performance-affecting MEL item carries a real cost.
  • 9 new aircraft-specific checklists (A330, A340, A350, A380, B777, B787, CRJ, ERJ, C172), built from real manufacturer procedures.
  • Airport Info page: new Terminals/Gates/Airlines section for airports in the verified gate database; IATA code, region, and elevation are now always available, and runway surface/lighting/displaced-threshold backfill from a bundled worldwide dataset when the primary source doesn't have them; sunrise/sunset/dawn/dusk are computed locally when unavailable elsewhere.
  • New destination-airport online-controller strip on the front page — shows who's currently controlling your destination with a live "online for HHh MMm" timer.
  • 3D Flight Replay is back, rebuilt on a freeze-and-drive SimConnect session.
  • New external-view Replay Clips recorder — short, phase-triggered departure/arrival clips, independent of the full-flight 2D map replay.
  • Fuel remaining now tracks your aircraft's actual measured burn rate once airborne, instead of a flat type-average estimate.
  • Linker page: livery/package vaults organized into subfolders (e.g. Liveries/A350) now get their own drill-down instead of being flattened into one list.
  • Further expansion of the verified gate/terminal database — Brussels, Newark, Vancouver, Cairo, and more.
  • Fixed real gaps in Career Mode found during a full audit: `generate_schedule_for_date` was a no-op stub despite being called after founding an airline or saving a route; `match_player_flight` was double-logging every flight to the pilot logbook; the `airlines.is_ai` column and the flight-matching RPCs existed live but were missing from tracked migrations; removed two fully-built components (ShopTab, LeaseAircraftModal) that were never actually imported anywhere.
  • COM radio frequencies read from Little Navmap were shown scaled up by 1000× (e.g. "119730.000" instead of "119.730").
  • Airport Info page: Region showed blank instead of a dash when unknown.
  • AI traffic gate-prefix matching failed for compound letter+digit+letter stand labels (e.g. "D19L", "B22A") — affected KLAS, KDEN, and any airport using that stand-naming convention.
  • Taxi routing could route an aircraft off the real taxiway system through an under-weighted unnamed/apron-crossing shortcut.
  • Multiplayer traffic: another player's aircraft could permanently float or sink relative to your own terrain after spawning on the ground — altitude is now left to each client's own ground physics instead of being forced from the sender's value.
  • Friends list, search, and profile stats could show a friend as online or flying long after a crashed or force-quit session — live-flight data is now checked for freshness (30s) instead of trusted indefinitely.
  • 2D flight replay: discrete systems (gear, brakes, lights, spoiler-armed) now switch cleanly at the correct point instead of interpolating through a "half on" state.
  • Aircraft tab route map was failing to render due to a broken remote tile URL — switched to the same working local tile-cache protocol as the main map.

v0.25.0

  • Massively expanded verified airport gate/terminal database — roughly 100 US/Canada airports and 28 of the world's busiest international hubs (Istanbul, Frankfurt, Madrid, Beijing Capital, Shenzhen, Barcelona, Kuala Lumpur, Jakarta, Seoul Incheon, Rome Fiumicino, Toronto Pearson, Singapore Changi, Munich, Bogotá, Bangkok, Hong Kong, Moscow, Mumbai, Mexico City, Manila, Dublin, Sydney, Zurich, Doha, Paris CDG, and more) now use hand-verified, chart-sourced terminal/gate/airline data for both the departure gate picker and AI traffic placement, instead of often-inaccurate third-party data.
  • AI traffic could place aircraft in the wrong terminal at any airport whose real terminals are named with a number (e.g. "T1"/"T4") — every numbered terminal was being read as the same generic "T", so a United flight bound for one terminal could land at the gate of an unrelated one. Affects JFK, LAX, and many others worldwide.
  • Fixed the same class of bug for airports whose real gate numbers overlap between terminals (e.g. Shanghai Pudong, Madrid, Toronto, Tokyo Haneda, Manila, Mexico City) — AI traffic now checks the actual gate number against each terminal's real range instead of just its first digit, so it no longer confuses one terminal's gates for another's.
  • The arrival gate/terminal hint popup (shown after touchdown) was checking third-party schedule data before our own verified gate data — for every airport in the new database, it could suggest a wrong terminal even though the correct one was already known. It now checks our verified data first, matching how AI traffic already prioritized it.
  • Removed roughly 15 stale, non-functional airport gate entries left over from early development that used gate-label formats that never actually matched any real gate — silently dead code with no effect, now replaced with verified data.

v0.24.1

  • OMDB (Dubai) terminal/gate layout rebuilt from verified real-world data — Terminal 3 Concourse A/B/C (Emirates-exclusive), Terminal 1 Concourse D, and Terminal 2 now show correctly grouped in the departure gate picker and AI traffic injection.
  • AI traffic injection at OMDB no longer floods Emirates-exclusive gates with other carriers, and Terminal 2 (FlyDubai) no longer sits empty — Aviation Edge's terminal data was confirmed wrong for this airport and is now skipped in favor of verified data.
  • AI traffic injection was severely undercounting high-frequency airlines (e.g. Emirates) relative to long-tail carriers due to an overly aggressive pool-weighting cap — injected traffic now reflects real schedule proportions.
  • Fixed a bug where GroundNav Live player traffic (other online users) could silently stop being discovered after a network blip or sleep/wake, with no recovery until an app restart — Realtime subscriptions now detect the drop and automatically reconnect.
  • The traffic debug overlay could be toggled by accidentally pressing "T" during normal typing — now requires Ctrl+Shift+T.

v0.24.0

  • Live FUEL/REM readout on the front-page HUD — total trip fuel (locked once ready to push) and current fuel remaining, color-coded against SimBrief's planned and reserve arrival-fuel figures.
  • Accurate fuel reporting across PMDG 777/737, FlyByWire A32NX/A380X, iniBuilds A350, and Fenix A320 — several of these aircraft don't populate the simulator's standard fuel SimVar, so GroundNav now reads the correct source per aircraft.
  • Checklist now auto-detects seatbelt sign and door state.
  • Friends chat window shows a friend's live flight phase, route, aircraft, altitude, and ground speed instead of a static "Direct Message" label.
  • Chat window and flight info panel can be dragged anywhere on screen, with position remembered between sessions.
  • Emoji picker added to the chat composer.
  • World airport ICAO labels rebuilt as a GPU-rendered map layer, replacing per-marker DOM elements — noticeably smoother map performance while connected to the sim.
  • VATSIM/IVAO ATC sector overlay switched to VATSpy FIR boundaries (VatGlass's data source had gone stale); added a SimAware TRACON boundary overlay.
  • New gate/terminal data source for AI traffic — more accurate gate assignment worldwide.
  • Local map-tile cache with route pre-fetching for smoother map performance.
  • Post-flight approach profile chart and fuel plan-vs-actual debrief.
  • Career Mode: pilot application pipeline (inbox, aptitude/tech assessment, sim evaluation), training academy, payroll and employment ledger.
  • Runway-threshold / auto-taxi bug: taxi routing no longer confuses a runway segment for a same-named taxiway at certain airports.
  • Removed the 3D flight replay viewer — 2D replay (map overlay) is unaffected.
  • IVAO traffic feed now caches like VATSIM already did, and both traffic layers are throttled to a steadier update rate — fixes the occasional "shake then teleport" artifact.
  • Camera/follow-cam smoothed during taxi and takeoff.
  • Fixed spurious "Maximum update depth" errors on some dev builds.
  • Settings now survive a wiped local store file.

v0.23.0

  • Arrival terminal/gate hint popup on taxi-in — shows the expected terminal/gate range for your airline at the destination, with a button to pre-select a gate and jump to the Ground tab.
  • 3D Flight Replay viewer.
  • Checklist system (A320 / B737 / generic).
  • Kneeboard with QR code.
  • Fuel monitor.
  • Live NOTAMs.
  • Proximity Conflict Alert — TCAS-style traffic advisories for VATSIM/IVAO traffic.
  • ATC sector coverage forecast.
  • Airport ICAO always shown on the floating runway widget, for diversion/emergency awareness.
  • VATSIM FIR/ATC boundary reliability — fixed three separate bugs causing missing or incorrect enroute FIR highlighting, especially over the US/Canada/Oceanic.

v0.22.0

  • Full Ground map migration from Leaflet to MapLibre GL — all layers (aircraft, trails, routes, airport diagrams, taxiways, gates, labels, FIR, weather) now render natively in WebGL. Pan-following and icon-drift bugs are architecturally impossible in the new stack.
  • Self-hosted Protomaps vector tiles served from Cloudflare R2 via tiles.groundnav.app — no API keys, no rate limits, full control over tile data.
  • VATSIM and IVAO traffic dead-reckoning overhauled — removed double dead-reckoning (leadHours bug) that caused forward-backward oscillation every 15-second update cycle.
  • Heading interpolation for VATSIM/IVAO traffic — aircraft icons now smoothly rotate through turns over 900ms instead of snapping to new headings.
  • VatGlass ATC sector overlay — APP, CTR, TWR, and GND sector polygons with colour-coded fills sourced live from api.vatglasses.aero.
  • New aircraft silhouette shapes: trijet (MD-11, DC-10, L-1011), Concorde delta wing, and fighter jet cranked wing — remapped from generic narrowbody/widebody.
  • Map layers speed dial — FIR, SIGMET, POI, Night, Weather, VatGlass, and Charts accessible via a compact expandable dial with a green pulsing indicator when any layer is active.
  • Taxiway label spacing tightened from 500 m to 300 m for denser labelling on long taxiways.
  • Weather radar overlay wired to OpenWeatherMap — clouds, precipitation, and wind layers.
  • Flight phase: CRUISE no longer skipped between CLIMB-OUT and STEP-CLIMB — added 6-second entry guard and raised STEP-CLIMB threshold to 30 seconds of sustained VS ≥ 800 fpm.
  • Flight phase: DESCENT no longer skipped — 3-second minimum enforced before APPROACH can fire, preventing the 100ms invisible DESCENT.
  • Departure scoring VR display: rotation up to +30 kt late now correctly shows ✓ (was incorrectly ✗ for any deviation greater than 5 kt).
  • Auth persistence: fixed startup race condition where WebView2 localStorage wipe (app update/reinstall) caused automatic sign-out even though auth-storage.json was intact. Session is now force-restored via setSession() after the Tauri IPC seed completes.
  • AI traffic VMR JSON UTF-8 BOM now stripped before parsing — prevented VMR load failure on some machines.
  • NAT track and holdings queryRenderedFeatures errors on startup suppressed — layers are checked for existence before query (StrictMode race).
  • Taxi route rendering restored after MapLibre migration.

v0.17.0

  • 3D replay enhanced — interpolation and recording increased from 1 Hz to 5 Hz for smoother playback.
  • Maintenance system enhanced and wired correctly.
  • Career mode page and tabs completed and wired, ready for testing.
  • More colors added to the stream overlay with auto-detection enabled.
  • Improved real-world airline injection based on live schedules.
  • IVAO traffic now uses dead-reckoning between 15-second polls, eliminating the freeze-then-jump artifact.
  • Airline gate/terminal mapping updated for 60+ airports worldwide (Dubai, Istanbul, JFK, O'Hare, Toronto, Singapore, Sydney, Tokyo, and more).
  • Traffic injection gate assignment greatly improved with correct terminal data.
  • Landing runway auto detection enhanced and guards added.
  • Chat notification sound added.
  • Traffic injection stability further improved.
  • Traffic injection instability fixed.

v0.14

  • Initial release of GroundNav
  • Moving map with VATSIM/IVAO traffic overlay
  • SimBrief OFP integration with full flight plan briefing
  • Real-time ATC transcription with Deepgram
  • AI traffic injection system
  • Landing quality analyzer with 4-pillar scoring