Aircraft model rebuilt with proper Three.js coordinate system:
- Wings along X axis (horizontal), fuselage along Z (forward=-Z), Y=up
- Pitch rotates around X, bank around Z
- Camera positioned for front-left view
Heading indicator fixed to match Airbus PFD style:
- Yellow heading readout box at top with pointer triangle below
- Ticks grow upward from bottom edge
- Labels positioned above ticks
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Pitch rotates around Y axis (wing axis), bank around X axis
(longitudinal axis). Camera moved to front-right view to clearly
show both pitch and bank movements.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Remove Y-axis inversion so pulling stick down (toward user) gives
positive pitch (nose up), matching real Airbus sidestick behavior.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Nuxt auto-import prefixes component names based on directory path.
Components in app/components/flightlab/pfd/ are registered as
FlightlabPfd*, not Pfd*. Fixed in learn-pfd.vue and PfdContainer.vue.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- learn-pfd.vue now creates a WebSocket session on mount and displays
the 4-char session code in the header bar for touchscreen connection
- New stick-input.vue page at /flightlab/medienstationen/stick-input
with touch-based sidestick (spring-loaded 2D pad) and throttle
(vertical slider). Joins session by code, sends input at 30Hz.
- Stick input page added to medienstationen index as second card.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Root div min-h-screen → h-screen ensures flex-1 children get real
height. Grid children get min-h-[200px] so Three.js and PFD SVG
have measurable container dimensions to render into.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Integrates FBW physics, PFD SVG instruments, 3D aircraft model,
TTS narration, goal evaluation engine, and WebSocket stick input
into a single interactive learning experience. Features dynamic
CSS Grid layout that transitions between model-focus, split, and
pfd-focus modes as the user progresses through phases.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
New index page at /flightlab/medienstationen with PFD learning card
and coming-soon placeholder. Adds medienstationen section link to
the main flightlab index page.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Composable manages phase navigation, interaction goal monitoring with
hold-time validation, progress tracking, and hint system for the
learn-pfd medienstation.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Rewrote all takeoff scenario texts from passive fear-of-flying coaching
to active simulator operation instructions (thrust levers, sidestick,
rudder pedals, gear lever, instrument readings). Stop looping ambient
sounds automatically when transitioning to phases that don't reference them.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
SimConnect sends boolean fields (on_ground, parking_brake, etc.) as 0/1
numbers. The condition evaluator uses strict equality (===), so
0 === false was returning false even when the condition was semantically
met. Cast boolean telemetry fields with !! to ensure proper type matching.
Also reduce solo-mode telemetry polling from 500ms to 2000ms.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Map raw bridge fields (ias_kt, on_ground, etc.) to FlightLabTelemetryState
format, add direct telemetry polling endpoint for solo mode, and show
sim condition panel in sidebar regardless of auto-advance toggle state.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>