feat(ui): redesign voice cockpit with clinical companion drawer, Svelte 5 migration, and Gemini 3.8 voice

- Re-architect VoiceSession into full-bleed studio cockpit with overlay slide-over companion drawer
- Eliminate width squishing defect on LiveInsightPanel and add native dark/light theme support
- Integrate authentic Google Gemini 3.8 Flash TTS with Fenrir persona and fallback audio pipeline
- Implement comprehensive Playwright E2E visual regression suite across Desktop, iPad, and iPhone (21 tests, 45 snapshots)
- Migrate core application to Svelte 5 runes (, , ) with reactive stores
- Maintain .NET 8 Azure Functions serverless endpoints and clean build hygiene
This commit is contained in:
jpremill committed 2026-09-29 23:35:05 -04:00
1 parent c82b112624
commit 1feea40684
148 files changed
+11230 -1706

No files matched your search

+5 -3
View File
@@ -17,7 +17,9 @@ import { VersionBadge } from './components/VersionBadge';
const DEFAULT_SETTINGS: UserSettings = {
voiceName: 'Zephyr',
vocalStyle: 'Helpful',
genderPreference: 'Neutral'
genderPreference: 'Neutral',
roleplayModel: 'google/gemini-3.8-flash',
supervisorModel: 'google/gemini-3.8-flash'
};
const CUSTOM_SCENARIOS_KEY = 'cognitive-clarity-custom-scenarios';
@@ -143,7 +145,7 @@ const App: React.FC = () => {
return (
<div className="min-h-screen bg-slate-50 flex flex-col items-center pt-8 px-4 pb-8 animate-in fade-in duration-700">
{sessionMode === 'text' ? (
<ChatSession scenario={activeScenario} onExit={handleExitSession} />
<ChatSession scenario={activeScenario} userSettings={userSettings} onExit={handleExitSession} />
) : (
<div className="w-full max-w-4xl h-[80vh]">
<VoiceSession
@@ -162,7 +164,7 @@ const App: React.FC = () => {
<div className="min-h-screen bg-[#FDFDFF] text-slate-900 font-sans relative animate-in fade-in duration-500">
<ReloadPrompt />
{/* Modals */}
{showGenerator && <ScenarioGenerator onGenerate={handleScenarioGenerated} onCancel={() => setShowGenerator(false)} />}
{showGenerator && <ScenarioGenerator userSettings={userSettings} onGenerate={handleScenarioGenerated} onCancel={() => setShowGenerator(false)} />}
{showReference && <CBTReference onClose={() => setShowReference(false)} />}
{showSettings && <SettingsModal settings={userSettings} onUpdate={setUserSettings} onClose={() => setShowSettings(false)} />}