v3.02
Add per-axis gyro scale calibration via 360° rotation integration
cal
v3.07
Add gyro stab gating: gyro rate gates G-sensor LP coefficient each frame
core
v3.10
Add per-aircraft weight class turbulence normalisation (light ×1.30 to ultra-heavy ×0.38)
feat
v3.14
Add cockpit panel instruments: altimeter, compass rose, airspeed dial, VSI
feat
v3.16
Add QNH pressure input and true altitude calculation
feat
v3.21
Add settings panel: axes swap, bank/pitch flip, gyro influence sliders
feat
v3.25
Replace absolute angle extraction with relative quaternion: conj(Q_ref)⊗Q_current
core
v3.32
Attempt two-step extraction — breaks upright phone; revert in v3.38
fix
v3.34
Fix body-frame quaternion integration; correct alpha/beta/gamma axis mapping
fix
v3.39
Fix gauge sticking at ~35°: replace |dn[2]| denominator with √(fwd²+vert²)
fix
v3.45
Suppress drift correction past vertical: check gyroDn[2] <= 0 to prevent correction inversion
fix
v3.46
Add aircraft info panel: specs, turbulence notes and interesting facts per type
feat
v3.51
Replace binary gyroRollYawSwap with continuous cosine/sine axis blend; restore ez in drift correction
fix
v3.52
Revert gyro bar display to blended wx/wy/wz; remove double gyroRotVec over-correction
fix
v3.54
Add turn coordinator: slip/skid ball and rate-of-turn needle in cockpit panel
feat
v3.56
Add user-configurable gauge display LP; add gAxesSwapped independent of gyro axesSwapped
feat
v3.57
Add jet stream ETA correction: Gaussian latitude model ±65kt; bypass when GPS speed >100kt
feat
v3.58
Fix turbulence scale: set 100% = 0.30g RMS (was 0.60g); BUMP_LP 0.04→0.08; TREND_WINDOW 200→60; default bumpScale 1.0
fix
v3.59
Replace gyro cal auto-stop at 360° with user-tapped DONE button; fixes wrong scale on mis-calibrated gyros
fix
v3.60
Fix wake lock stacked listeners; add Cordova pause/resume handlers; acquire at sensor start; add wakeLockWanted flag
fix
v3.61
Fix route progress 100% mid-flight: replace flat-earth dot product with great-circle along-track projection
fix
v3.62
Add nearest divert airports panel: 200+ worldwide airports, heading-weighted score, top 5 with ICAO/dist/bearing, 30s refresh
feat
v3.63
Rename SWAP button to SETTINGS; highlight yellow when any orientation setting is non-default
feat
v3.64
Tighten physics gate: gPhysics multiplier 20→5; cap snapBoost ×0.3 to prevent accel overriding gyro in turns
fix
v3.65
Wire gyroRollYawSwap into axis blend: flip sinT sign in both motion loops for swapped-axis devices
fix
v3.66
Remove auto-set of gyroRollYawSwap from setLevel(); make swap flag purely manual user setting
fix
v3.67
Fix yaw-induced pitch/bank: replace world-down extraction with world-right [0,1,0] for bank and world-forward [1,0,0] for pitch
fix
v3.68
Add deadband to drift correction vertical gate: gyroDn[2] <= 0.1 prevents correction flickering at 90° mount
fix
v3.73
Cabin altitude model: cockpit top-left shows pressurised cabin alt (not plane alt); calcPlaneAlt() via per-aircraft CABIN_SPEC; ALT SET back-calculates QNH and altRefPressure from entered plane altitude
feat
v3.74
Flight tracker: epoch-based progress from baro climb detection (startEpoch); no phone clock reliance; persisted across crash via localStorage; overnight UTC logic removed
fix
v3.75
SET LEVEL no longer resets baro altitude reference (gyro reset only); altRefPressure persisted to localStorage across app restarts
fix
v3.76
Bottom menu z-index and flex-shrink fix to prevent accidental touch under flight info box; GPS-off gauges: airspeed and alt body opacity restored after markGpsUnavail()
fix
v3.77
Flight status shows time remaining (not depart/land times); flat phone mode added as settings toggle with threshold slider (later removed in v3.78)
feat
v3.78
Fix yaw-shows-as-bank: calcRoll() denominator changed from right[1] to √(right[0]²+right[1]²) so yaw cannot register as bank; flat phone mode removed entirely (tilt blend already handles flat phone correctly)
fix