chahinebrini 685782b538 fix(coach): dynamische Sprache (Text-Detection + App-Locale-Fallback)
LLM-Prompt (message.post + sos-stream):
- LANG_INSTRUCTIONS Map raus, ersetzt durch dynamische Instruktion
  'Reply in {detectedFromUser} ... fallback: {appLang}'
- Lyra matcht jetzt die Sprache der letzten User-Message (per
  detectLang Unicode-Detection); App-Locale ist nur noch Fallback
- Instruktion doppelt eingehängt (Anfang + Ende des System-Prompts)
  gegen recency bias bei langen deutschen Prompts

TTS (speak dispatcher + speak-cartesia + speak-elevenlabs):
- Kein 'de'-Default mehr für language. detectLang(text, locale) leitet
  Sprache primär aus dem Antwort-Text ab (Arabic/Cyrillic/CJK/Turkish-
  Letters), Locale als Fallback
- Cartesia + ElevenLabs: language/language_code nur senden wenn
  ableitbar, sonst Provider auto-detect statt erzwungenem 'de'
- speak-cartesia: sonic-2 → sonic-3 (Multi-Lang, war beim Dispatcher-
  Fix gestern vergessen worden)
- Google: en-US neutraler Fallback statt de-DE-Bias

Neu: server/utils/detect-lang.ts
2026-05-31 00:12:40 +02:00

28 lines
657 B
Swift

import Foundation
enum WizardStep: Int, CaseIterable, Identifiable {
case welcome = 0
case preflight
case supervise
case enroll
case configure
case done
var id: Int { rawValue }
var title: String {
switch self {
case .welcome: return "iPhone verbinden"
case .preflight: return "Pre-Flight Check"
case .supervise: return "Supervisieren"
case .enroll: return "MDM-Enrollment"
case .configure: return "Schutz aktivieren"
case .done: return "Fertig"
}
}
var stepNumber: Int { rawValue + 1 }
static var total: Int { allCases.count - 1 }
}