-
feat(tui): live Markdown rendering during text streaming (v0.9.0)
released this
2026-05-24 22:18:45 -07:00 | 246 commits to main since this releaseReplaces v0.8.2's drop-Markdown patch with proper in-place Markdown
rendering. The transcript becomes a VerticalScroll container; each
turn's response body lives as a single Static widget whose content
is updated as Text deltas arrive — Markdown is re-rendered in place
rather than re-printed on Done. Eliminates the v0.8.x double-print
without sacrificing rich formatting.- transcript: RichLog → VerticalScroll (#transcript-scroll)
- Text deltas: mount Static(Markdown(buffer)) on first delta;
Static.update(Markdown(buffer)) on subsequent deltas - --raw mode: bypass Markdown, mount Static(plain_str) for the same
in-place update semantics - Terminal events (Done/Error/Cancelled) mount styled label Statics
- _cancel_via_sse: write → mount Static on the new container
- _write_turn_headers: transcript gets a styled RichText Static
("── turn N ──"); other panes still receive Rule renderables - Test suite reshape: bulk rename
log→transcriptfor the
presenter contract,_mounted_renderableshelper extracts
Static.content for assertion,_spy_writescaptures both
RichLog.write and VerticalScroll.mount
Downloads