add ClideMarkdown, ClideCodeBlock, ClideSvgView primitives
Three reusable rendering widgets in lib/widgets/:
- ClideMarkdown: walks markdown AST (GFM tables, task lists,
fenced code), renders headings, lists, blockquotes, tables,
inline bold/italic/code/links. Delegates code blocks to
ClideCodeBlock.
- ClideCodeBlock: syntax-highlighted code via TreeSitterService.
Async highlight, byte-to-char offset mapping, theme-aware
colors from SurfaceTokens.
- ClideSvgView: wraps jovial_svg with asset/string constructors
and optional sizing.
Retrofitted: decision detail body renders as markdown instead of
raw text. Markdown viewer uses ClideMarkdown. Welcome logo uses
ClideSvgView.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>