Extract voice recording logic from FloatingVoice.vue into useVoiceCapture composable. TranscriptCard now does real recording instead of mock typing. InputSettings allows voice mode toggle (WebSpeech/Whisper GPU), mic selection, and debug audio playback. ChatInput gets a settings gear button. Long-press on FloatBubble shows a floating TranscriptCard (push-to-talk) instead of opening the full PromptBar. Release stops recording after a 500ms buffer. Click still opens PromptBar normally. Parallel MediaRecorder captures raw audio in WebSpeech mode for DB save and debug playback. Transient errors (no-speech) no longer kill sessions. Touch selection prevention on FloatBubble for tablets.
Vue 3 + TypeScript + Vite
This template should help get you started developing with Vue 3 and TypeScript in Vite. The template uses Vue 3 <script setup> SFCs, check out the script setup docs to learn more.
Learn more about the recommended Project Setup and IDE Support in the Vue Docs TypeScript Guide.