mirror of
https://github.com/diegosouzapw/OmniRoute.git
synced 2026-08-01 21:02:12 +03:00
* feat(#248,#260): TTS provider support + friendly display names ## #248 — Text to Speech endpoint expansion - audioRegistry: add Inworld, Cartesia, PlayHT providers with correct auth/format tags - audioSpeech handler: add handleInworldSpeech (base64 decode), handleCartesiaSpeech (X-API-Key + transcript), handlePlayHtSpeech (X-USER-ID) - /dashboard/media: add Speech tab with voice selector, format selector, and inline <audio> player (Blob URL) - /dashboard/playground: add Text to Speech option; detect audio/* Content-Type and render inline audio player ## #260 — Friendly provider/account display names - src/lib/display/names.ts: new centralized helper module with getAccountDisplayName() and getProviderDisplayName() - src/lib/usage/usageStats.ts: replace raw connectionId.slice(0,8) fallbacks with getAccountDisplayName() - src/app/api/rate-limits/route.ts: replace raw connectionId.slice(0,8) fallback with getAccountDisplayName() * feat(#248,#261): ElevenLabs voice presets + mobile UX fixes ## #248 — ElevenLabs/Cartesia/Deepgram/Inworld voice presets - MediaPageClient: replace static SPEECH_VOICES with provider-aware PROVIDER_VOICE_PRESETS - ElevenLabs: 9 premade voices with name+type (Rachel, Domi, Bella, Antoni, Elli, Josh, Arnold, Adam, Sam) - Cartesia: 3 built-in voices (Barbershop Man, Friendly Reading Man, California Girl) - Deepgram: 5 Aura voices (Asteria, Luna, Stella, Zeus, Orion) - Inworld: 2 voices (Eva, Marcus) - default: OpenAI 6 standard voices (alloy, echo, fable, onyx, nova, shimmer) - Voice dropdown updates automatically when model input prefix changes ## #261 — Mobile UX improvements - DashboardLayout: add h-dvh to mobile sidebar wrapper for proper scroll containment - Sidebar: add h-full to aside element so nav can scroll on short screens - ProvidersPage: change all 4 section headers from flex justify-between to flex flex-wrap so actions wrap on narrow screens instead of overflowing --------- Co-authored-by: diegosouzapw <diegosouzapw@users.noreply.github.com>