A 5e storytelling engine with an LLM DM
Something went wrong. Try again.
Stream markdown a block at a time master
The play loop prints a reply into scrollback as it arrives, and terminal scrollback cannot be repainted, so a row must be final before it goes out. MarkdownStream keeps the text of the round and the count of rows it has handed out, re-renders the whole text on every call, and slices from that count. A block commits once a blank line and a later block follow it, which is the point after which appended text cannot change its rows: a lone `|` after a table reads as a paragraph until the rest of its row arrives, and the blank line is what rules that out. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01CUXjWo1zGFhdJUig1hcQGf
Author Chris Guidry Co-author Claude Fable 5 Date (Aug 1, 2026, 3:50 AM UTC) Commit 4c7fdc29 4c7fdc29fd8ea2ab9bffd39c11441da0b9eca7fe Parent 0ddb9796 0ddb979698cddebb1b0881f9a6fa433c75dbfd14