Simulated token-by-token streaming with markdown rendering and a virtualized viewport that stays pinned as message content grows.
LLMs stream tokens via SSE. As each token arrives, the message content grows and
ResizeObserver detects the height change automatically.
Height corrections are batched per animation frame — not per token. The viewport
stays pinned to bottom with zero jitter.
Markdown rendering is powered by @humanspeak/svelte-markdown in streaming mode (~1.6ms avg per update) — code blocks, tables, and lists all render
live without scroll disruption.