Kokoro-FastAPI ships English, Spanish, French, Hindi, Italian, Japanese,
Portuguese and Chinese voices only. The German presets pointed at voice
ids no Kokoro server has, so German users either got English voices or
picked a voice that failed to speak.
The local voice now also lists the German voices whose Piper model is
installed (PIPER_BASE_URL) and speaks them through Piper's /synthesize
as WAV. Thorsten, the clearest model, is the German default. Mobile
plays WAV as well as MP3, and the E2E voice stub stands in for Piper.
Claude-Session: https://claude.ai/code/session_01KWEAjTw26eRf3ZXTXfRjmD
Co-authored-by: Claude <noreply@anthropic.com>
* Fix first-run onboarding UX: naming, locale, voices, Heute route, mobile drawer
Co-authored-by: cynarAI <cynarAI@users.noreply.github.com>
* Fix biome import order and formatting
Co-authored-by: cynarAI <cynarAI@users.noreply.github.com>
* Fix biome formatting on OoStage and E2E specs
Co-authored-by: cynarAI <cynarAI@users.noreply.github.com>
* Fix E2E specs for onboarding name step and Heute reload route
Co-authored-by: cynarAI <cynarAI@users.noreply.github.com>
* Fix German onboarding heading matcher in E2E
Co-authored-by: cynarAI <cynarAI@users.noreply.github.com>
* Fix German signup E2E, Escape menu stacking, and Heute rhythm click
Co-authored-by: cynarAI <cynarAI@users.noreply.github.com>
* Make onboarding E2E helpers locale-aware for German UI
Co-authored-by: cynarAI <cynarAI@users.noreply.github.com>
* Fix completeOnboarding language skip for Skip · locale label
Co-authored-by: cynarAI <cynarAI@users.noreply.github.com>
* Use language-step Skip · locale button in completeOnboarding
Co-authored-by: cynarAI <cynarAI@users.noreply.github.com>
* Fix German E2E: Nachricht composer, voice loading wait, Heute rhythm
Co-authored-by: cynarAI <cynarAI@users.noreply.github.com>
* Stabilize Heute reload URL and German voice E2E assertions
Co-authored-by: cynarAI <cynarAI@users.noreply.github.com>
* Fix Heute bootstrap redirect and German onboarding voices
When Kokoro lists no locale-matched voices, onboarding now uses offline
presets instead of showing English-only options. Shell bootstrap skips
bot redirects while the user is on /app/heute.
Co-authored-by: cynarAI <cynarAI@users.noreply.github.com>
* Relax German voice E2E name matching for voice labels
Co-authored-by: cynarAI <cynarAI@users.noreply.github.com>
* Harden Heute route and German voice onboarding E2E
Rebased onto main with Expo SDK 57 typecheck fixes. Voice options expose
stable test ids; Shell keeps /app/heute across bootstrap and redirects
legacy /app/heute bot URLs. Heute coach E2E asserts URL after reload.
Co-authored-by: cynarAI <cynarAI@users.noreply.github.com>
* Format Shell after Heute route helper
Co-authored-by: cynarAI <cynarAI@users.noreply.github.com>
---------
Co-authored-by: Cursor Agent <cursoragent@cursor.com>
Co-authored-by: cynarAI <cynarAI@users.noreply.github.com>