TASK 1: muted as orthogonal flag (separate from VoiceState)
TASK 2: AbortController in sendMessage (abort previous AI calls)
TASK 3: cancelPendingSpeech for text input
TASK 4: silenceTimer reduced to 1s
Made-with: Cursor
Fix 1 -- Opening-Prompt: processSessionOpening in serviceCommcoach.py prüft jetzt ob es die erste Session ist (isFirstSession) und gibt der AI einen expliziten Prompt, der das Erfinden von Kontext verbietet.
Fix 2 -- Stabiler Transcript: onresult in CommcoachCoachingView.tsx nutzt jetzt processedResultIndexRef um nur neue Results zu verarbeiten. Finalisierte Teile werden stabil akkumuliert, kein Flackern mehr.
Fix 3 -- Hintergrundgeräusche-Timeout: Neuer silenceTimerRef mit 5s Timeout. Wenn nach onspeechstart kein Text kommt, wird isUserSpeaking automatisch zurückgesetzt.
Fix 4 -- Stop-Button: "Stop" Button erscheint im Session-Header wenn TTS läuft (via isTtsPlaying State, synchronisiert per 200ms Interval mit isTtsPlayingRef).
Fix 5 -- Weitersprechen-Button: lastTtsAudioRef speichert das zuletzt gespielte Audio. stopTts setzt wasInterrupted = true. "Weitersprechen" Button erscheint nach Unterbrechung und spielt das Audio erneut ab.
Fix 6 -- Paralleles TTS: Neue _generateAndEmitTts() Hilfsfunktion. In processMessage und processSessionOpening wird TTS als asyncio.create_task parallel zu _emitChunkedResponse gestartet.
Fix 7 -- JSON-Response: Die AI antwortet jetzt als JSON mit text, speech, documents. Neuer Prompt-Block wird in buildCoachingSystemPrompt angehängt. _parseAiJsonResponse() und _saveGeneratedDocument() im Backend. processMessage und processSessionOpening nutzen die neue Struktur.
Fix 8 -- Loading-States: Neuer actionLoading State in useCommcoach. Alle async Funktionen setzen setActionLoading('key') vor dem Await und null im finally. Buttons zeigen Loading-Text und werden disabled.
Fix 9 -- Umlaute: Alle deutschen Strings in allen CommCoach-Dateien (Backend + Frontend) korrigiert: ae->ä, oe->ö, ue->ü.
Improve mobile and tablet usability by fixing viewport and scroll behavior, adding a mobile sidebar flow, and ensuring header action buttons wrap instead of clipping on narrow screens.
Made-with: Cursor
- New "Bot-Account (Microsoft)" section in TeamsbotSettingsView
- Email and password fields for dedicated bot account
- Hint about MFA requirement
- Updated API types: botAccountEmail, botAccountPassword in Config interfaces
Co-authored-by: Cursor <cursoragent@cursor.com>
- Dashboard: poll sessions every 10s when active sessions exist
- Session view: poll every 5s as fallback when SSE not connected
Co-authored-by: Cursor <cursoragent@cursor.com>
- Scope dropdown (Meine Kosten / Mandant / Alle) on Overview and Statistics tabs
- All user balance cards shown in Overview when scope is mandate or all
- Balance cards and statistics react to scope selection
- CSV export endpoint fixed: /api/billing/view/users/transactions
- Scope selector hidden on Transactions tab (FormGeneratorTable handles own filters)
- Fixed unused VoiceLanguage import in TeamsbotSettingsView
Co-authored-by: Cursor <cursoragent@cursor.com>
- Dynamic language list from Google TTS API (string codes instead of objects)
- Voice test sends botName for AI-generated sample text per language
- Session view auto-loads most recent session when no sessionId given
- Shows "Keine Sitzungen vorhanden" when no sessions exist
- Updated testVoice API to pass botName instead of static text
Co-authored-by: Cursor <cursoragent@cursor.com>
- Added teamsbot feature config to FEATURE_REGISTRY with labels (Teams Bot)
and view definitions (Dashboard, Sessions, Settings)
- Fixed React key warning in language dropdown (duplicate language codes from Google TTS API)
Co-authored-by: Cursor <cursoragent@cursor.com>
- Replaced static VOICE_PRESETS with dynamic API calls to /voice-google/languages and /voice-google/voices
- Languages and voices loaded from Google Cloud TTS at runtime
- Voice dropdown updates automatically when language changes
- Added fetchLanguages() and fetchVoices() API functions with VoiceLanguage/VoiceOption types
- Test button uses bot name in sample text for personalized preview
- Fallback to basic language options if API unavailable
Co-authored-by: Cursor <cursoragent@cursor.com>
- TeamsbotSettingsView: voice dropdown with predefined Google TTS voices per language
- Voice test button with audio preview (plays TTS sample in browser)
- Language change auto-selects first matching voice
- Updated config interfaces: bridgeUrl -> browserBotUrl
- Added testVoice API function
Co-authored-by: Cursor <cursoragent@cursor.com>