Commit Graph

248 Commits

Author SHA1 Message Date
itsrubberduck
db7b147e9c test: expand coverage for core backend features 2026-02-17 18:36:13 +01:00
itsrubberduck
d35930565e smoketests 2026-02-17 18:26:20 +01:00
itsrubberduck
bf4ce3abdf typescript 2026-02-17 18:19:55 +01:00
itsrubberduck
4a01593612 fix typescript errors and update dependencies 2026-02-17 18:13:04 +01:00
itsrubberduck
25e4f77ca3 add server log 2026-02-17 15:31:32 +01:00
itsrubberduck
c673d52811 Fix bridge connect UI states for unauthenticated users 2026-02-16 17:32:13 +01:00
itsrubberduck
33b2511fd4 Redesign bridge connect flow and simplify linking UX 2026-02-16 17:25:53 +01:00
itsrubberduck
8bf2638a9a feat(bridge): add unlink flow for linked tokens 2026-02-16 16:39:18 +01:00
itsrubberduck
fec1b90f4c fix: add CORS middleware for bridge endpoints 2026-02-16 16:21:30 +01:00
itsrubberduck
562ad236a2 use 6 digit codes for bridge 2026-02-16 15:47:12 +01:00
itsrubberduck
f271943684 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
d09221d8e3 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
ae0f0b0f86 Unify bridge auth header and add live telemetry panel 2026-02-15 16:04:07 +01:00
itsrubberduck
57fc0e3150 Fix local sharp setup for Nuxt image processing 2026-02-15 15:47:06 +01:00
itsrubberduck
237e4d53ed Unify bridge connect login flow with explicit login button 2026-02-15 15:34:30 +01:00
itsrubberduck
46f95baf9e 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
56bd770a13 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
0bd506a8ed 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
52734e8d8b 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
d4190c9d95 dont log users id on transmission 2026-02-13 18:44:34 +01:00
itsrubberduck
57f4303af0 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
37dbfc17e9 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
c6e7eb396f 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
3af04ad234 chore: add .worktrees to gitignore 2026-02-13 14:18:29 +01:00
itsrubberduck
cabdc8db6d fix pm 2026-02-13 08:50:02 +01:00
itsrubberduck
76a9e05563 add todo for najan 2025-10-19 21:03:52 +02:00
Remi
c3d6a116ac Add bidirectional airport geocode and name-aware taxi routing 2025-10-19 19:17:18 +02:00
Remi
c821ef34b3 Remove explicit type hints from airport geocode lookup 2025-10-19 19:07:23 +02:00
Remi
4d44b96665 Infer airport geocode types from query text 2025-10-19 19:00:32 +02:00
Remi
ba39b4357a Add airport geocode endpoint 2025-10-19 18:56:48 +02:00
itsrubberduck
3c6db660b6 Merge branch 'codex/fix-readback-field-validation-issue' 2025-10-19 16:48:41 +02:00
itsrubberduck
a1cdbd667c change footer linsk 2025-10-19 16:48:33 +02:00
Remi
713f342814 Tighten readback matching and add classroom home link 2025-10-19 16:12:52 +02:00
itsrubberduck
f23bc0a025 Merge branch 'codex/analyze-taxi-route-api-response' 2025-10-18 21:50:45 +02:00
Remi
363faa6149 Refine taxiway collapse and radius default 2025-10-18 21:47:54 +02:00
Remi
1e7748a60e Adjust taxi route collapse rules 2025-10-18 21:47:54 +02:00
Remi
143ffbf527 Preserve raw taxi route names 2025-10-18 21:47:53 +02:00
Remi
660972a54e Refine taxiway collapse and radius default 2025-10-18 21:46:55 +02:00
Remi
317151dfa7 Brighten high-readability profiles and default to level 5 2025-10-18 21:39:23 +02:00
Remi
2884c4af4c Loosen readability 4-5 filters for clarity 2025-10-18 21:33:52 +02:00
Remi
111687366b Adjust taxi route collapse rules 2025-10-18 21:33:43 +02:00
Remi
291c18ed03 Normalize taxi routes for clearer speech 2025-10-18 21:29:56 +02:00
Remi
48f769ee81 Preserve raw taxi route names 2025-10-18 21:08:24 +02:00
Remi
7e8702758b Merge pull request #246 from OpenSquawk/codex/add-fromaddress-for-email-notifications
Add reply-to handling for admin notifications
2025-10-18 16:33:18 +02:00
Remi
3dbf7c2bc6 Add reply-to support for admin notifications 2025-10-18 16:33:06 +02:00
Remi
e1b5a33649 Handle Hotjar consent via local storage 2025-10-18 14:48:13 +02:00
Remi
1133dbb6e1 feat: integrate nuxt hotjar module 2025-10-18 14:31:16 +02:00
Remi
de66b77ec3 Merge pull request #242 from OpenSquawk/codex/update-community-source-license
Adopt OpenSquawk Community Source License 1.0 licensing
2025-10-18 14:03:24 +02:00
Remi
b27bdec9dd Adopt OpenSquawk Community Source License 1.0 licensing 2025-10-18 14:03:14 +02:00
Remi
0d3966201e Guard classroom audio playback with tokens 2025-10-18 11:41:01 +02:00