Commit Graph

37 Commits

Author SHA1 Message Date
karim 55ea7fdcc8 feat(linux): native build path + Linux-specific launcher optimizations
- X-Plane auto-detection now finds Steam (native + Flatpak), /opt and
  external-drive SteamLibrary installs, not just ~/ and macOS/Windows paths.
- Close-to-background minimizes on Linux instead of hiding to tray, so the app
  is never stranded on desktops without a tray (e.g. vanilla GNOME).
- Disable WebKitGTK's DMABUF renderer on Linux to avoid black/blank windows on
  some GPU/driver combos (overridable via the env var).
- Launcher font stack gains Linux UI/mono fallbacks (Cantarell/Ubuntu/Noto).
- scripts/build.sh: Docker-free Linux AppImage build — repack the cockpit into
  the prebuilt bundle for web-only changes; recompile natively for code changes.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-05 01:33:19 +02:00
karim b9241e60c8 feat(desktop): bundle Lua plugin resources (fms-sync, terrain-probe, ui-sync)
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-04 23:39:00 +02:00
karim e8890478dd desktop: bump version to 0.1.6 (Citation X cockpit release)
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-04 23:26:49 +02:00
karim 10d4a4facf bridge: fix exponential reconnect (OOM) + add dataref resolve probe
The X-Plane socket fired both 'error' and 'close' on a failed connect, each
scheduling a reconnect — so attempts doubled every cycle, leaking sockets/timers
until the process OOMed (~3 min with the sim down). Guard onDown so each socket
schedules exactly one reconnect (and tear the dead socket down).

Also log a one-shot resolve-probe (GET /datarefs?filter[name]=airspeed…) on
connect so a Web-API version/format mismatch is visible in the log.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-04 23:20:59 +02:00
karim 1734a2d7ac FMS/CDU: 6th line-select key, HOLD page, route STEP — manual-complete
- 6 LSKs per side now (real Boeing CDU layout); LEGS shows 6 rows; FPLN bottom
  links (ROUTE MENU / VNAV) moved to the 6th key.
- HOLD page: hold fix (active wpt), inbound course, turn direction, leg time.
- STEP (p31): 6R on LEGS steps a cyan review cursor through the route, auto-
  paging, with a "viewing <wpt>" readout — the CDU side of plan review.
- Page keys: added HOLD (now FPLN/LEGS/DEP-ARR/DIR-INTC · FIX/HOLD/VNAV/PROG · MENU).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-04 21:14:41 +02:00
karim ad592a7a77 FMS/CDU to manual completeness: FIX page, discontinuities, MOD/EXEC, 2 spd limits
- FIX INFO page (manual p17-20): reference navaid + crossing radial + distance →
  computes a fix waypoint (great-circle dest point) and inserts it into the plan.
- Flight-plan discontinuities (p25-26): coordinate-less / VECTORS legs render as
  "─ DISCONTINUITY ─" in LEGS; insert a waypoint to stitch, or LSK to clear it.
  Distance/track calc now skips disco legs (no NaN).
- MOD/ACT + EXEC light: edits arm the EXEC key (glows) and flip the page title to
  MOD…; EXEC commits/exports and clears it, like the real CDU.
- VNAV CLB/DES now take two speed/alt restrictions each (DEL clears the 2nd),
  per the manual.
- Page keys: added FIX; row relaid to 4×2 (FPLN/LEGS/DEP-ARR/DIR-INTC ·
  FIX/VNAV/PROG/MENU).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-04 20:40:12 +02:00
karim 95995211a0 Citation: persist Nav Source Selector bearing-pointer choice across sessions
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-04 20:16:06 +02:00
karim 0ceb1dede3 Citation: ADF/VOR/FMS bearing pointers wired through + PFD FMA mode bar
- Nav Source Selector (p24) now fully drives the PFD: shared brg1/brg2 state
  (App ↔ RMU ↔ PFD). RMU has both pointer knobs — ◯ blue (OFF/VOR1/ADF1/FMS1)
  and ◇ white (OFF/VOR2/ADF2/FMS2). The PFD resolves each to a magnetic bearing
  (VOR bearing, ADF relative+heading, GPS bearing) and the HSI legend reflects
  the selected sources.
- PFD FMA / AFCS mode annunciation bar across the top (lateral · AP/FD ·
  vertical) reading the per-mode *_status datarefs — active green, armed white,
  matching the real Primus PFD.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-04 20:10:13 +02:00
karim e8dfa84266 Citation: match PFD/MFD size (portrait DU-870), Nav Source switch, manual audit
- MFD reworked to the same portrait DU-870 format as the PFD (800x940) so both
  tubes are identical size side-by-side in the PFD+MFD view, like the real panel.
- Nav Source Selector now on the PFD bezel (sits under the PFD per manual p24):
  NAV (VOR1/VOR2) / FMS buttons drive HSI_source_select; the HSI course pointer,
  CDI and source label colour by source — FMS magenta, VOR green (Honeywell
  convention). MFD source label (FMS1/VOR) follows the same coupling.
- Added the airspeed trend vector (PFD #3, was missing): smoothed acceleration
  projected 10 s, magenta, on the speed tape.
- Removed dead MFD soft-keys per manual: PFD SETUP → IN/HPA baro unit; EICAS SYS
  → FUEL-HYD/ELEC/APU/ENG sub-set readout (#11/#14) with RTN.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-04 14:16:15 +02:00
karim 6756acab4a Citation: combined PFD+MFD view, hardware AP look, FMS build-out, fluid easing
- CitDuo: PFD + MFD side-by-side on one tablet screen (new 'PFD+MFD' tab,
  first in the Citation profile) — the two pilot DU-870 tubes at once.
- Autopilot restyled to the real Primus FGC: machined dark bezel w/ corner
  screws, engraved square keys with green annunciator triangles (lit when
  active), ridged pitch thumbwheel.
- FMS more complete per the FMS manual: DEP/ARR now does the two-step
  procedure→transition pick (NO TRANS / RWxx / named transitions), VNAV split
  into CLB/CRZ/DES pages (trans-alt, speed/alt limits, cruise alt, target
  speed, VPA) via PREV/NEXT, and a new PROG page (TO/DEST distance-to-go + ETE
  at GS). Page keys: FPLN/LEGS/DEP-ARR/DIR-INTC/VNAV/PROG/MENU.
- Fluidity: Citation PFD/MFD/EICAS now use the same rAF time-constant easing as
  the G1000 (useEased/useEasedAngle) for attitude, speed/alt/VS tapes, HSI,
  compass, map ownship and N1/ITT gauges — smooth 60 fps instead of stepping.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-04 12:33:04 +02:00
karim b05ffedbc1 Citation X cockpit profile: full Primus 2000 suite (PFD/MFD/EICAS/AP/RMU)
Add a switchable cockpit-profile selector (Garmin G1000 / Cessna Citation X /
GA steam) and recreate the Citation X Honeywell Primus 2000 avionics line-for-
line from the X-Plane Citation X + FMS manuals:

- CitPFD: attitude w/ FD command bars, speed tape (Vmo barber-pole, Vfe, low-
  speed red/amber bands), AOA index, altitude tape + trend, VSI, round HSI with
  CDI/course pointer + VOR/ADF bearing pointers, radar altimeter, minimums,
  STD/BARO/CRS/HDG bezel.
- CitEICAS: twin FAN%/ITT bar gauges, OIL °C/PSI, FUEL (flow/qty PPH·LBS),
  ELECTRICAL, HYDRAULICS, slat chevron, STAB trim, FLAPS, CAS message stack,
  softkeys NORM/FUEL-HYD/ELEC/CTRL-POS/ENG + control-position overlay.
- CitMFD: Honeywell heading-up arc map, FMS route (magenta active/white future),
  TCAS, terrain/WX, range arc, ETE/SAT/TAS/GSPD block, clock + ET/FT timer,
  V-SPEEDS reference card, MFD-setup overlays (TRAFFIC/TERRAIN/APTS/VOR).
- CitAP: HDG/NAV/APP/BC · ALT/VNAV/BANK/STBY · FLC/C-O/VS · pitch wheel ·
  AP/YD/M-TRIM/PFD-SEL, FMA bar + lamps from per-mode *_status datarefs.
- CitRMU: COM/NAV active+standby tuning, transponder, ADF, TCAS range/mode,
  IDENT + Nav Source Selector (NAV1/2/FMS, VOR/ADF/FMS bearing source).

Integration: all avionics stream live via the X-Plane Web API (new datarefs for
N1/N2/ITT, radar-alt, AOA, hydraulics, trim, flaps/slats/gear, control
positions, ADF, mach, yaw-damper); the existing fms-sync.lua drives the
Citation's built-in FMS (aircraft-agnostic XPLM FMS SDK). Demo seeds added so
every panel renders offline. Verified headless via Playwright (no console
errors; G1000/GA profiles unaffected).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-04 12:09:55 +02:00
karim aa64959eea FMS: build out the CDU into a multi-page airliner FMS
Expands the single-page CDU into a Collins/Boeing-style FMS per the X-Plane FMS
manual: FPLN (origin/dest/flt-no), LEGS (waypoints, insert/delete/activate),
DEP/ARR (SID/STAR/approach from the CIFP parser, with transitions), DIR
(direct-to), VNAV (cruise/target-speed/path-angle; VPA feeds the shared descent
profile), and MENU (load/store .fms). Page keys + scratchpad + LSKs + keypad.
All edits flow through the shared flight plan, which fms-sync.lua mirrors two-way
into the in-sim FMS — so the app CDU and the aircraft CDU stay synchronized
(no new Lua needed; reuses the existing sync + procedures.js).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-04 05:54:36 +02:00
karim 28ab984185 Wire MENU page-menu + HRZN HDG — last dead display keys now functional
MENU (bezel hard key) now opens a G1000-style PAGE MENU (Invert / Store / Delete
flight plan) instead of only mirroring the sim command. HRZN HDG draws heading
reference marks (N/E/S/W + ticks) along the attitude horizon, toggled from the
PFD submenu. With TRAFFIC/NEXRAD/PROFILE/PATHWAY/APTSIGNS already wired, every
softkey now does something; only ENT remains a pure sim-command mirror.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-04 03:13:12 +02:00
karim 474a35c6e3 MFD PROFILE: vertical situation view (altitude vs distance along the plan)
The PROFILE softkey was dead. Now it overlays a vertical profile at the bottom of
the MFD map: own aircraft at the left, upcoming waypoints with their target
altitudes, the magenta planned descent path, and an altitude grid — pure geometry
from the active flight plan + current altitude.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-04 03:05:40 +02:00
karim a32b5a9b06 Map: TRAFFIC (TCAS) + NEXRAD overlays — two more dead softkeys now functional
The TRAFFIC and NEXRAD map keys were dead. Now: TRAFFIC draws TCAS diamonds
(threat-coloured other/proximate/TA/RA, relative altitude + climb/descend arrow);
NEXRAD draws green/yellow/red precip cells. Both toggle from the MAP softkeys and
light when active. Driven by values.traffic / values.wxCells, which the demo
synthesizes so they're demonstrable; the live-sim binding (TCAS/weather datarefs)
is the part that still needs a sim session to wire+verify.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-04 02:57:53 +02:00
karim 5f63c5032c Desktop: first-run setup wizard + FlyWithLua/Web-API/Lua-status guidance
Adds the four onboarding pieces that were missing:
- flywithlua_present Tauri command + wizard step that checks the plugin and
  links the FlyWithLua NG+ download when it's absent.
- Wizard step explaining how to enable X-Plane's Web/REST API (Settings>Network).
- FlyWithLua-Sync status row in the live diagnostics, from /api/health.lua
  ('N Skripte aktiv' / 'FlyWithLua fehlt' / 'kein X-Plane').
- 4-step guided wizard (X-Plane folder → FlyWithLua → Web-API → install+start)
  that auto-opens on first launch and is reachable via the header Einrichten
  button; the final step hands off to the normal server start (auto-installs Lua).

Verified the wizard DOM flow + the dLua status against a live bridge.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-04 02:43:32 +02:00
karim 3d6d3f710e Fix 3rd autopilot UI (Bezel APController) + wire dead PATHWAY/APTSIGNS keys
Line-by-line control audit. APController (the MFD left-bezel autopilot mode
controller) still decoded the unreliable autopilot_state bitfield — the same bug
already fixed in AutopilotPanel and KAP140, missed in the third AP UI. Now reads
per-mode *_status datarefs so every mode key lights correctly.

PATHWAY and APTSIGNS softkeys were dead (sim-mirror only). PATHWAY now draws the
flight-plan route on the synthetic-vision terrain; APTSIGNS toggles the runway
labels. Threaded via App svtOpts → PFD → SVT.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-04 02:05:06 +02:00
karim 5f1339f8b3 Manual audit B/C/D: VNAV control, Direct-To descent, NRST actions
D — NRST page: each nearest entry can now load its tower/CTAF into COM1 standby
(→COM) or a VOR into NAV1 standby (→NAV), and fly Direct-To it (D→). Nearest now
takes xp; com/nav standby datarefs made writable.

C — Direct-To with VNAV descent: the DTO dialog's ALT (MSL/AGL) and OFFSET fields
are now editable; entering an altitude makes the target a designated VNAV fix
(alt+dsgn) and arms VNAV, so the descent profile + PFD chevrons compute.

B — VNAV control: shared vnav config (enabled/fpa/offsetNm) threaded to PFD +
FplPage. The CURRENT VNV PROFILE panel gains ENBL/CNCL VNV, FPA ±, along-track
ATK ± and VNV-D→ keys; the profile + PFD chevrons honour the chosen FPA/offset
and hide when cancelled.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-04 01:33:12 +02:00
karim 5db22c85bc Manual audit fixes A/E/F: fuel totalizer, Victor/Jet airways, TIME TO BOD
A — Fuel totalizer (SYSTEM key, renamed from ENGINE): DEC/INC/RST FUEL had no
handler. Now adjust the fuel_totalizer_sum_kg dataref (±1 gal, RST→max fuel) and
the EIS shows the calculated remaining/used. cdiSrc-style writable + demo echo.

E — AIRWAYS: was a single on/off. earth_awy.dat field 8 (airway layer) is now
parsed (1=Victor/low, 2=Jet/high; name-prefix fallback), the bbox returns it, and
the AIRWAYS softkey cycles off→all→Victor→Jet with an AIRWY-LO/-HI label.

F — CURRENT VNV PROFILE now shows TIME TO BOD (bottom of descent) once past the
top of descent, instead of only TIME TO TOD.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-04 00:59:00 +02:00
karim 502fa249a0 gitignore: ignore whole desktop resources dir (web + plugins build artifacts)
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
v0.1.5
2026-06-03 22:00:36 +02:00
karim 6d61c122e1 PROC: activate approach/missed/vector-to-final; DCLTR-2 declutters airspace
PROC menu actions were empty stubs. Now: procedures.js tags approach legs with
seg ('approach'|'missed' — everything past the runway threshold = missed,
previously dropped); Proc.jsx flags loaded legs appr/missed (preserved by
flightplan.setPlan) and the ACTIVATE APPROACH / MISSED APPROACH / VECTOR-TO-FINAL
items set the active (magenta) leg to the matching segment, with a hint when
nothing is loaded. Missed legs shown dimmed in the preview.

DCLTR-2 now hides the airspace (SUA) overlay, matching the manual (p.56), in
addition to the existing nav-symbol declutter.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-03 21:43:36 +02:00
karim fb6f0182cc PFD CDI softkey cycles nav source; demo reflects dataref writes
The CDI softkey was in the PFD root row but had no handler — it never cycled the
HSI/CDI source (GPS↔VLOC1↔VLOC2). Wire it to write cdiSrc
(HSI_source_select_pilot, now writable), cycling GPS→NAV1→NAV2.

Also fix a latent demo bug: the 'needs a live sim socket' guard sat above the
setDataref/command handlers, so in DEMO (no sim socket) every dataref write
(transponder code, baro, AP bugs, CDI) was silently dropped. Reflect writes
locally before that guard so cockpit controls respond without a sim.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-03 20:34:20 +02:00
karim cd7197f06e KAP140: annunciate modes from per-mode status datarefs (same bitfield fix)
The steam-panel KAP140 LCD decoded the same unreliable autopilot_state bitfield
as the G1000 panel, so its lateral/vertical annunciation could be wrong. Read the
*_status datarefs instead, consistent with AutopilotPanel and the PFD.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-02 20:25:52 +02:00
karim 1788e56e65 Autopilot panel: light mode keys from per-mode status datarefs
Key feedback came from decoding the autopilot_state bitfield, whose bit
positions don't reliably match X-Plane (e.g. bit 0 is auto-throttle, not the
flight director), so several keys (FD/NAV/APR/BC/VS/VNV/FLC) never lit even when
the mode was engaged. Read the dedicated *_status datarefs (off/armed/active) —
the same source the PFD AFCS bar uses — so every key and the lateral/vertical
annunciator reflect the real mode. NAV also lights on GPS-coupled (gpss) mode.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-02 17:51:44 +02:00
karim 5b7cf13e9d SVT: align synthetic terrain horizon with the attitude horizon
The 3D terrain showed almost no sky — the horizon sat far above the attitude
horizon line. Base camera pitch was 72°, but with MapLibre's 36.87° vertical FOV
the flat horizon only reaches the attitude line (28% of the SVT box) at ~82°.
Invert the perspective to derive the camera pitch from aircraft pitch so the
synthetic horizon lands exactly on the attitude horizon and tracks it 1:1
(accounting for the 1.5× canvas scale). Raise maxPitch to 85.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-02 16:46:25 +02:00
karim 4a71e5f03d release: only upload artifacts matching the current version (skip stale bundles)
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-02 16:16:43 +02:00
karim 806a82383e release: merge latest.json platforms across split mac/linux releases
So a per-machine release (macOS here, Linux on Arch) of the same version keeps
both platform entries instead of clobbering the one not built this run.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-02 15:20:52 +02:00
karim be424a6c3c Bump desktop app to 0.1.5 (release with Lua auto-install, smoothing, airspace + Linux patchelf fix)
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-02 14:32:57 +02:00
karim 138498956e fix(linux): repair patchelf-corrupted Bun sidecar in AppImage
linuxdeploy injects a RUNPATH ($ORIGIN/../lib) via patchelf into every
usr/bin executable when building the AppDir. The Bun-compiled xpbridge
sidecar (self-contained, JS/assets appended past the ELF) does not
survive ELF rewriting — the patched copy core-dumps on start, so the app
launches but the bridge never listens.

Add scripts/fix-linux-appimage.sh: extract the built AppImage, restore the
pristine repo sidecar, repack with linuxdeploy-plugin-appimage (which does
not patchelf), verify the sidecar is byte-identical, and regenerate the
updater .sig. Wired into scripts/build-linux.sh after `tauri build`.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-02 14:23:59 +02:00
karim 9aba24978b Auto-install Lua, smooth all panels, airspace overlay + launcher region picker
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>
2026-06-02 13:57:50 +02:00
karim b2fab0c374 G1000 MFD EIS: real two-bus volts, alternator/battery amps, engine hours
- electrical readout now shows M (main) and E (essential) bus volts from
  bus_volts[0]/[1], M (alternator generator_amps) and S (battery_amps) separately,
  and ENG hours from flight time — replacing the hardcoded duplicate volts / +0.0
  amps / 0.0 HRS placeholders (manual S.54 C172 layout)

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-02 12:15:34 +02:00
karim 6738e6085b G1000: deepen VNAV/PFD — V-DEV & VS-TGT chevrons, GPS phase, designated toggle
- PFD VNAV: magenta flight-plan target altitude on the alt scale (S.110), V DEV
  deviation scale + chevron (left, shown in VNAV when not on an ILS), VS TGT
  chevron on the VSI (S.113)
- GPS phase annunciation is now dynamic: APR (approach leg) / TERM (<30 nm to
  destination) / ENR, instead of a fixed label
- flight-plan ALT can be toggled designated(blue) <-> reference(white) by clicking
  the cell (S.106); only designated altitudes drive the VNAV profile
- setPlan now preserves the dsgn/appr waypoint flags across the shared plan
- AFCS vertical mode labelled VPTH (manual) instead of VNV

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-02 12:07:06 +02:00
karim 053d362245 G1000: VNAV descent profile + designated-altitude flight plan colouring
- CURRENT VNV PROFILE panel on the MFD flight-plan page: active VNV waypoint +
  target altitude, VS TGT (−3° path), VS REQ, V DEV, FPA, TIME TO TOD (manual
  S.64 / S.107)
- enriched the VNAV computation (vsTgt / vDev / FPA / time-to-TOD) shared by the
  PFD VnavBox
- flight-plan ALT column now shows designated (VNAV) altitudes in blue (S.105)
- new Audio Panel + earlier manual-alignment batch already in this branch

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-02 06:01:47 +02:00
karim 033a9d406a G1000: manual-accurate radios, baro units, declutter, minimums, OBS, audio panel
Aligned to the official X-Plane 1000 manual:
- NAV radio: active RIGHT / standby LEFT (boxed) per S.12 (COM already correct)
- ALT UNIT softkey (IN / HPA) in the PFD submenu, baro readout converts (S.20)
- DCLTR cycles 3 levels (land / +NDB / flight-plan only) with DCLTR-n label (S.56)
- TOPO and TERRAIN are now independent toggles (relief vs awareness overlay) (S.57)
- Barometric MINIMUMS: BARO MIN bug + readout on the altimeter, amber "MINIMUMS"
  annunciation at/below the decision altitude; set via TMR/REF (lifted to App)
- OBS mode: HSI course follows the CRS knob (magenta "OBS"), sequencing suspended
- New Audio Panel tab (COM mic/receive, MKR/DME/ADF, intercom, Display Backup) (S.91)

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-02 05:55:56 +02:00
karim 38b048ad41 G1000: two-way sim sync, more PFD/MFD fidelity, authentic dialogs
Sync (FlyWithLua companions in plugins/ + server/fmssync.js):
- FMS flight-plan two-way sync (App <-> in-sim FMS) via fms-sync.lua
- G1000 UI-state publish (page/range/inset) via ui-sync.lua + CDI source,
  baro, map-range follow
- Terrain awareness: elevation grid probe (terrain-probe.lua) -> red/yellow
  MFD overlay vs aircraft altitude

PFD:
- AFCS mode annunciation bar from autopilot _status datarefs
- CDI source GPS/VLOC colouring, BRG1/BRG2 pointers + DME windows, marker beacons
- magenta speed/altitude trend vectors, selected-altitude alerting
- time-based (frame-rate-independent) smoothing for attitude/heading/tapes

MFD:
- nav data bar (DTK/ETE/active leg), airways overlay from earth_awy.dat,
  compass rose anchored to the ownship

Dialogs (NEAREST/FLIGHTPLAN/DIRECT-TO/PROCEDURES):
- flat, square, embedded G1000 look (no shadow/rounded/transparency)
- compact lower-right placement, no close X (softkey toggles), single window
- NEAREST 2-line entries (ILS/VFR, COM freq, runway length), PROC action menu

Service worker: network-first HTML so reloads pick up new builds (cache v2).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-02 02:17:06 +02:00
karim 354ea5d44b PFD/cockpit polish + KAP140 autopilot + UI refinements
- PFD: full-screen 2D attitude, G1000 yellow+magenta chevron symbology, rAF
  60fps horizon smoothing, translucent tapes, slimmer softkey bar, header fixes
- Collapsible macOS-dark sidebar (Inter), VFR six-pack + engine cluster + tach
- KAP140 autopilot on the analog page; GMC-710 AFCS tab
- FMS rebuilt as an X-Plane-style CDU; PWA; settings panel (knob mode)

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-01 17:20:16 +02:00
karim ebc33a78b7 Initial commit: X-Plane G1000 web cockpit + bridge + Tauri desktop app
- server/: Node bridge (datarefs/commands, navdata, CIFP procedures, flight plan)
- web/: React cockpit (PFD/MFD/Map, VFR six-pack, AFCS, FMS CDU), PWA, collapsible sidebar
- desktop/: Tauri 2 launcher (Bun sidecar, system tray, updater) + Linux build via Docker
- scripts/: prep-desktop, build-linux, Gitea release + latest.json

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
v0.1.4
2026-06-01 15:07:03 +02:00