fix(#572): render Markdown in assistant chat bubbles after streaming (#577)
* fix(#572): render Markdown in assistant chat bubbles after streaming
- Add MarkdownText composable: block-aware parser (headings, lists,
blockquotes, fenced code, inline code, bold, italic, links)
- Gate formatting on message.isStreaming: plain text during streaming,
formatted view swapped in on completion (kills flicker/re-parse churn)
- Fenced code blocks render as a scrollable card with a copy button
- Remove dead RichText; wire AssistantBubble to MarkdownText
- ktlintCheck + compileDebugKotlin + testDebugUnitTest green
* fix(#572): address agy review — memoize inline parse, drop nested SelectionContainers, fix heading detection, reset copy state
* fix(#572): expand Markdown support — tables, strike, bold+italic, task lists, hr, footnotes, def-lists, highlight, sup/sub, kbd (math excluded)
* fix(#572): address agy review — fix table alignment (textAlign) + quote bar height (IntrinsicSize), fix ktlint line length
* fix(#572): resolve infinite loop hang on hashtag refs in markdown parser
---------
Co-authored-by: M57 <m57@hermes-control.app>