Commit Graph

462 Commits

Author SHA1 Message Date
itsrubberduck
9f7a34241a test: expand coverage for core backend features 2026-02-17 18:36:13 +01:00
itsrubberduck
ff4a1c3ee5 smoketests 2026-02-17 18:26:20 +01:00
itsrubberduck
f88fced5b1 typescript 2026-02-17 18:19:55 +01:00
itsrubberduck
8f45c3397d fix typescript errors and update dependencies 2026-02-17 18:13:04 +01:00
itsrubberduck
d34fba5cba add server log 2026-02-17 15:31:32 +01:00
itsrubberduck
794555fbc2 Fix bridge connect UI states for unauthenticated users 2026-02-16 17:32:13 +01:00
itsrubberduck
b5327ec1b9 Redesign bridge connect flow and simplify linking UX 2026-02-16 17:25:53 +01:00
itsrubberduck
c4f9237916 feat(bridge): add unlink flow for linked tokens 2026-02-16 16:39:18 +01:00
itsrubberduck
e1130734c1 fix: add CORS middleware for bridge endpoints 2026-02-16 16:21:30 +01:00
itsrubberduck
3d5a18df6a use 6 digit codes for bridge 2026-02-16 15:47:12 +01:00
itsrubberduck
a495077476 fix spacing 2026-02-15 21:04:06 +01:00
itsrubberduck
954dba857e Merge branch 'landing-new-marketing3' 2026-02-15 21:02:06 +01:00
itsrubberduck
caac7e35a1 Polish landing flow and add roadmap/news hero sections 2026-02-15 21:01:52 +01:00
itsrubberduck
36f5a72c66 fix(flightlab): prevent overlapping takeoff voices on rapid phase changes 2026-02-15 18:05:11 +01:00
itsrubberduck
bb73b43a89 refactor(flightlab): rewrite takeoff texts for simulator context and auto-stop sounds on phase change
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>
2026-02-15 16:50:04 +01:00
itsrubberduck
7a1f35bc90 refactor(flightlab): remove instructor flow and simplify takeoff controls 2026-02-15 16:32:20 +01:00
itsrubberduck
08808b73b7 Fix bridge telemetry boolean coercion for auto-advance conditions
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>
2026-02-15 16:26:50 +01:00
itsrubberduck
dc36a4b63f Connect bridge telemetry to FlightLab with auto-advance triggers
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>
2026-02-15 16:16:42 +01:00
itsrubberduck
76471c4bd4 Unify bridge auth header and add live telemetry panel 2026-02-15 16:04:07 +01:00
itsrubberduck
52ddd843c1 Fix local sharp setup for Nuxt image processing 2026-02-15 15:47:06 +01:00
itsrubberduck
df21f4242d Add roadmap sim-control idea and update classroom news date 2026-02-15 15:41:02 +01:00
itsrubberduck
f471ed4887 Unify bridge connect login flow with explicit login button 2026-02-15 15:34:30 +01:00
itsrubberduck
5a25e212d7 fix(classroom): audio speed slider now actually changes playback speed with pitch correction
- 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>
2026-02-15 01:01:02 +01:00
itsrubberduck
ea51e1dcc3 feat(classroom): integrate user feedback — audio speed, METAR TTS, phonetics, UI fixes
- Lower default audio speed to 0.85x, extend slider range to 0.5-1.3x
- Add METAR normalization for intelligible TTS (wind, vis, clouds, temp, QNH)
- Expand SID/STAR suffix regex to handle spaces (SUGOL 2S)
- Add approach suffix phonetic expansion (ILS 08R Y → Yankee)
- Fix "Soll:" → "Expected:" in readback feedback
- Accept numeric values for pushback delay field
- Add news article documenting the changes

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-14 14:21:35 +01:00
itsrubberduck
04b2ec1e4f Add classroom feedback implementation plan
6 tasks covering audio speed, UI fixes, phonetics, and METAR normalization.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-14 14:08:43 +01:00
itsrubberduck
d866404490 Add classroom feedback integration design doc
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>
2026-02-14 14:06:44 +01:00
itsrubberduck
77ecd49334 feat(flightlab): sidebar, progress bars, skip speech, SimBridge telemetry & auth
- 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>
2026-02-14 10:14:33 +01:00
itsrubberduck
2efa24f7f5 umalute fixen 2026-02-13 18:49:56 +01:00
itsrubberduck
a915af4398 dont log users id on transmission 2026-02-13 18:44:34 +01:00
itsrubberduck
b73746d843 fix(flightlab): use ~~ alias for shared imports instead of relative paths
Vite cannot resolve ~/../../shared - use ~~/shared which maps to project root.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-13 18:08:21 +01:00
itsrubberduck
25378db177 fix(flightlab): resolve TypeScript strict null checks in engine composable
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-13 18:01:05 +01:00
itsrubberduck
61811d0804 feat(flightlab): add audio directory with README for cockpit sound effects
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-13 14:49:15 +01:00
itsrubberduck
494acdc8c5 feat(flightlab): add instructor control panel with full scenario control
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-13 14:48:58 +01:00
itsrubberduck
ef382cadbe feat(flightlab): add participant view with scripted phases, TTS, and session sync
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-13 14:47:41 +01:00
itsrubberduck
28ef1b8ba8 feat(flightlab): add landing page with scenario selection grid
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-13 14:46:38 +01:00
itsrubberduck
9923cbbd5d feat(flightlab): add WebSocket sync composable for instructor-participant sessions
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-13 14:45:45 +01:00
itsrubberduck
fad56ee28d feat(flightlab): add WebSocket handler for instructor-participant session sync
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-13 14:45:18 +01:00
itsrubberduck
4696885f8b feat(flightlab): add audio composable with TTS radio effects and ambient cockpit sounds
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-13 14:44:33 +01:00
itsrubberduck
ea878662f8 feat(flightlab): add scenario engine composable with phase navigation and progress tracking
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-13 14:23:32 +01:00
itsrubberduck
f778f60ac9 feat(flightlab): add complete takeoff EDDF scenario with all phases and comfort branches
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-13 14:23:05 +01:00
itsrubberduck
e8b36177ed feat(flightlab): add type definitions for FlightLab scenario engine
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-13 14:20:26 +01:00
itsrubberduck
db715aeddf chore: add .worktrees to gitignore 2026-02-13 14:18:29 +01:00
itsrubberduck
6c18e07cd9 feat(flightlab): add detailed implementation plan with 11 tasks
Covers types, scenario data, engine/audio/sync composables,
WebSocket server, participant/instructor pages, and integration testing.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-13 14:12:27 +01:00
itsrubberduck
79ddefd612 Add FlightLab takeoff experience design document
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>
2026-02-13 14:03:13 +01:00
itsrubberduck
fa8ebbf2fa fix pm 2026-02-13 08:50:59 +01:00
itsrubberduck
d90b494334 fix pm 2026-02-13 08:50:02 +01:00
Remi
ff6c546163 Translate unsubscribe page to English 2025-11-21 00:09:51 +01:00
Remi
93fed93d41 Add unsubscribe endpoint and email footers 2025-11-20 23:29:44 +01:00
itsrubberduck
43cd53780d merge 2025-11-20 21:28:57 +01:00
Remi
040783f679 Style feedback drip email like invites 2025-11-20 21:26:55 +01:00