Captures all open tasks (Emergency modules, Decision Mode engine,
ATC Perspective, unlock system), key design decisions, implementation
lessons learned, and ICAO conformity notes from the planning session.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Lessons: Conditional Runway Crossing, Complex Holding Pattern, Amended
Departure Clearance, Speed Then Altitude, Immediate Traffic Avoidance,
Multiple STAR Crossing Restrictions, TCAS RA Override, Late Runway
Change on Approach. All ICAO-standard phraseology with multiple fields.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Radio Check: remove readability field (pilot can't know it before
controller responds), focus on initiating the check call.
Say Again: make expected answer concrete ("all before [SID]") instead
of subjective, improve hints to guide the answer.
Monitor vs Contact: simplify by replacing huge initial-call field with
a yes/no "do you transmit?" field.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Lessons: Unicom Blind Call, Radio Check & Readability, Say Again
(Targeted), Monitor vs Contact, Two-Step Frequency Change, ATIS
Update During Taxi. All with multiple meaningful fields and
ICAO-standard phraseology.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Adds soulsOnBoard, fuelMinutes, positionDescription, holding pattern
data (fix, inbound, turn, legTime, EFC), and crossing restriction
data (two fixes with altitudes and restriction types) to the
scenario generator.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Hub now imports learnTracks and renders modules grouped by track with
track title, subtitle, and aggregate progress bar. modules computed
is derived from tracks.flatMap for backward compat with search/progress.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Adds TrackDef type to shared/learn/types.ts and creates learnTracks
export in learnModules.ts with existing 4 modules grouped under
'Core Flight Missions' track. Backward compatible — learnModules
flat array still exported.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Fix client: playbackRate was set to 1 for non-native-speed providers (Speaches/Piper),
making the speed slider ineffective in the main Pizzicato audio path
- Fix server: pass speed parameter to Speaches TTS API
- Add pitch-preserving playback via MediaElementSourceNode when rate != 1,
routing through the same Web Audio effects chain (radio filters, distortion, etc.)
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Documents all user feedback issues and planned fixes for audio speed,
METAR normalization, phonetics, and UI text.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Add collapsible sidebar with phase stepper (jump between phases)
- Add SimBridge conditions panel in sidebar (live values, progress bars, targets)
- Add global progress bar (top edge, glowing) + phase-local TTS progress bar
- Add skip button to skip TTS speech while ATC is speaking
- Add skipSpeech() to audio composable (stops current Pizzicato sound)
- Wire up bridge data.post.ts with user auth (JWT) + example payload
- Add server-side telemetry store with pub/sub for Bridge→WS relay
- Extend WS handler with subscribe-telemetry message + userId tracking
- Extend sync composable with subscribeTelemetry() + onTelemetry() callback
- Add require-auth middleware to all flightlab pages
- Fix instructor station ECONNREFUSED via import.meta.client guard
- Add animations: phase transitions, button lists, fade-scale, check-pop, pulse
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Design for guided A320 takeoff scenario targeting people with flight
anxiety. Covers scripted phases, WebSocket instructor sync, audio
pipeline, and tablet-optimized UI.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>