FlyWithLua auto-install: bridge drops fms-sync/ui-sync/terrain-probe into X-Plane's FlyWithLua Scripts dir on startup and self-updates (content-compare). Graceful when no X-Plane / no FlyWithLua. /api/lua/install + status in health. Desktop app bundles the scripts and passes LUA_SRC_DIR to the sidecar. Smoothing: shared useEased/useEasedAngle hook (api/ease.js) with render-bail on settle. VFR steam gauges now interpolate to 60fps instead of stepping at the ~10Hz value stream. MFD ownship no longer vibrates — position/heading eased in a single rAF loop, follow-pan without animated-panTo pile-up (pauses on range zoom). Airspace overlay: server/airspace.js loads per-region GeoJSON, classifies (B/C/D/TMA/CTR/MOA/Restricted/Prohibited/Danger), bbox query, and downloads regions on demand — FAA (US, key-free) and OpenAIP (Europe, user key). New AIRSPACE softkey draws chart-coloured boundaries (B blue, C magenta, D dashed), non-interactive so map-clicks still drop waypoints. Launcher gains a "Lufträume" section to pick/download regions via the running bridge. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
FlyWithLua companion — FMS two-way sync
X-Plane's Web API can't write a flight plan into the FMS. fms-sync.lua runs
inside X-Plane (via FlyWithLua, which has the FMS SDK) and syncs the shared
cockpit plan ↔ the in-sim FMS through two files in Output/fms-sync/.
Install (sim PC only)
- Install FlyWithLua NG+ (free): copy its plugin folder into
<X-Plane>/Resources/plugins/FlyWithLua/. - Start the bridge (desktop app or
node server/bridge.js) on the same PC as X-Plane. On startup it auto-copies these three scripts into<X-Plane>/Resources/plugins/FlyWithLua/Scripts/and keeps them up to date on every launch (it only writes changed/missing files):fms-sync.lua— flight-plan two-way syncui-sync.lua— G1000 UI state (page / range / inset)terrain-probe.lua— terrain-awareness elevation grid for the MFD
- In X-Plane: FlyWithLua → Reload all Lua script files (or restart).
The log shows
[glass-cockpit] FMS sync active.
No manual copying needed. If you install FlyWithLua after the bridge is
already running, trigger a re-install without restarting via
POST /api/lua/install. The current install state is reported under lua in
GET /api/health. The bridge must run on the same PC as X-Plane so both see
<X-Plane>/Output/fms-sync/. (The auto-install honours LUA_SRC_DIR — the
desktop app sets it to the bundled scripts; otherwise it finds plugins/ itself.)
What you get
- App → Sim: load/build a plan in the web cockpit → it appears in the 3-D G1000 and the autopilot can fly it.
- Sim → App: build/edit the plan in the real FMS → it shows on every tablet.
- Terrain: the MFD TERRAIN map colours real scenery elevation red/yellow
relative to your altitude (probed live by
terrain-probe.lua).
A 3-decimal lat/lon signature de-dupes the round-trip, so the two sides never loop. Waypoints are pushed as lat/lon legs (exact route; in-sim idents are generic — route accuracy over cosmetics).