leubeem 3b16b6f1d6 feat: scenario picker, flow chaining UX, reliable frequency checks
Scenario picker & completion:
- Login → scenario selection screen with complete chains + individual phases
- Completion screen with "fly again / try opposite / back to scenarios"
- Scenario.airport ('dep'|'arr') drives which airport frequencies to fetch;
  arrival scenarios (vfr-arrival, circuit-landing, taxi-in) use arr ICAO

Backend session integration:
- createSession forwards no_chain; response carries active_flow + session_complete
- Pass all six airport frequency variables to session so every chained flow
  has the real airport values from creation
- fetchAirportFrequencies now runs before session creation so resolved
  frequencies are included in backendVariables

Wrong-frequency check:
- airportFreqMap computed (from airportFrequencies, always up-to-date)
  used as primary source in expectedFrequencyForState — immune to flow
  snapshot switches
- setActiveFlow called when response.active_flow changes so local engine
  cursor moves to the correct flow's states after a chain
- Wrong-freq ATC reply appended to communication log (offSchema entry)

Engine fixes (communicationsEngine.ts):
- patchVariables / patchFlags: write directly to the internal reactive
  store, bypassing readonly(ref) which silently blocked all (vars as any)
  .value[k] = v mutations
- appendLogEntry: push ATC speech (and wrong-freq replies) into comm log
- ATC controller_say_rendered appended to comm log after every transmission
2026-06-08 13:03:55 +02:00
2026-02-20 23:47:48 +01:00
2026-04-25 20:29:09 +02:00
2026-02-17 18:19:55 +01:00
2025-09-19 16:42:20 +02:00
2026-02-13 14:18:29 +01:00
2025-09-20 22:48:04 +02:00
2026-02-13 08:50:02 +01:00
2025-10-18 14:03:14 +02:00
2026-05-28 21:04:09 +02:00
2025-09-14 21:09:47 +02:00
Description
No description provided
AGPL-3.0 53 MiB
Languages
TypeScript 67.3%
Vue 31.8%
CSS 0.6%
JavaScript 0.3%