Backend: - New stripMarkdown() util (utils/strip-markdown.ts) — handles **bold**, bullet-lists, headings, code-fences, links, blockquotes - /api/coach/message: applies stripMarkdown(text) post-LLM as safety-net because Haiku/Llama keep emitting markdown despite explicit prompt rule Frontend: - lyra.tsx voice-flow: hardcoded /api/coach/speak-openai → /api/coach/speak (tier-aware dispatcher: Free=Google, Pro=Cartesia, Legend=ElevenLabs) - Added Metro debug-logs at TTS call-site for endpoint + status visibility - detectEmotion extracted to lib/lyraResponse.ts (was inline duplicate) - RiveAvatar: small type-export adjustment for shared Emotion type Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Description
Self-hosted mirror of rebreak monorepo
Languages
TypeScript
68%
Vue
7.9%
Swift
7.7%
Shell
4.2%
JavaScript
3.1%
Other
8.9%