9fe7479ddc
The TTS path was hardwired to the parked zonos-gateway: it force-reverted the endpoint field back to zonos :8890 on load, hardcoded model=ext-tts, and decoded the response as Zonos-specific raw float32 PCM @ 44.1kHz. Result: quoted-text TTS was dead once zonos was parked, and pointing the field elsewhere silently failed. - Honor the interface: set endpoint/model/voice defaults only when a field is empty; never rewrite a user-typed value (removed the zonos auto-revert regex). - Add a TTS model field (ttsModel); send the UI's model instead of hardcoding. - Playback: request standard OpenAI /v1/audio/speech mp3 and decode via audioCtx.decodeAudioData (handles wav/mp3/ogg/flac from any endpoint). - Defaults: endpoint = LiteLLM ext-tts alias (fleet TTS gateway), voice = nova.