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:
1 parent
c82b112624
commit
1feea40684
148 files changed
+11230
-1706
No files matched your search
@@ -0,0 +1,42 @@
|
||||
---
|
||||
title: "Full Frontend Rewrite to Svelte 5 (Runes & Bits UI Architecture)"
|
||||
ticket: "SVELTE-5-REWRITE"
|
||||
type: "refactor"
|
||||
author: "Antigravity Autonomous Swarm"
|
||||
date: "2026-09-29"
|
||||
---
|
||||
|
||||
### Added
|
||||
- **Svelte 5 Runes Architecture**: Fully rewritten frontend in Svelte 5 using runes (`$state`, `$derived`, `$effect`, `$props`, `$bindable`), eliminating virtual DOM overhead and React dependency chains.
|
||||
- **AudioEngine Reactive Controller**: Engineered `src/lib/audio/AudioEngine.svelte.ts` managing WebAudio contexts, FFT analyser frequency extraction, Web Speech recognition, OpenRouter TTS synthesis, and parallel clinical supervision in microtasks.
|
||||
- **Svelte 5 Reactive Stores**: Implemented `src/lib/stores/UserSettingsStore.svelte.ts` and `src/lib/stores/AppStateStore.svelte.ts` with local storage persistence and derived filters.
|
||||
- **Svelte 5 Design System Primitives (`src/lib/components/ui/`)**:
|
||||
- `Button.svelte`, `Badge.svelte`, `Card.svelte` (+ `Header`, `Title`, `Description`, `Content`, `Footer`)
|
||||
- `Input.svelte`, `Textarea.svelte`, `Tooltip.svelte`, `Dialog.svelte`
|
||||
- `Tabs.svelte`, `TabsList.svelte`, `TabsTrigger.svelte`, `TabsContent.svelte`, `tabsContext.ts`
|
||||
- `ScrollArea.svelte`, `Label.svelte`, `Separator.svelte`
|
||||
- **Recomposed Clinical Feature Components (`src/lib/components/`)**:
|
||||
- `ScenarioCard.svelte`: Scenario card with difficulty badges, CBT protocol chips, and text/voice launching.
|
||||
- `AudioVisualizer.svelte`: Canvas/CSS audio level visualizer with dynamic bar animations.
|
||||
- `AudioDeviceSelector.svelte`: Microphone input device switcher.
|
||||
- `LiveInsightPanel.svelte`: Turn-by-turn parallel supervisor feedback drawer.
|
||||
- `SessionReport.svelte`: Comprehensive post-session CBT assessment report with Markdown and JSON exports.
|
||||
- `ScenarioGenerator.svelte`: AI scenario generator modal with difficulty presets and clinical concept selection.
|
||||
- `CBTReference.svelte`: Searchable glossary reference covering all 18 clinical terms and techniques.
|
||||
- `SettingsModal.svelte`: Voice profile and OpenRouter API key/model selector modal.
|
||||
- `TranscriptPanel.svelte`: Slide-over voice transcript drawer with role styling.
|
||||
- `ChatMessage.svelte` & `ChatInput.svelte`: Roleplay message bubbles and character input box.
|
||||
- `ChatSession.svelte`: Streaming text chat controller wired to OpenRouter and live supervisor.
|
||||
- `VoiceSession/VoiceHeader.svelte`, `VoiceControls.svelte`, `ConnectionState.svelte`, `AnalyzingState.svelte`.
|
||||
- `VoiceSession.svelte`: Full voice roleplay cockpit coordinating AudioEngine and visualizer.
|
||||
- `ReloadPrompt.svelte` & `VersionBadge.svelte`: PWA reload prompt and app version indicator.
|
||||
- **App Shell & Mounting (`src/`)**:
|
||||
- `src/App.svelte`: Root application coordinator.
|
||||
- `src/main.ts`: Svelte 5 `mount()` entry point targeting `#root`.
|
||||
- **Vitest & Svelte-Check Verification Suites**:
|
||||
- Upgraded test harness to `vitest` with 16/16 unit tests passing.
|
||||
- `npx svelte-check`: 0 errors, 0 warnings across all 20 Svelte components.
|
||||
|
||||
### Changed
|
||||
- **Entry Point**: Updated `index.html` to mount `/src/main.ts` and removed obsolete React importmap.
|
||||
- **Vite Bundler**: Configured `svelte()` plugin alongside PWA injectManifest, tuning rollup manual chunks for `@lucide/svelte`, `svelte`, and `workbox`.
|
||||
Reference in new issue
Block a user