← All posts

v0.3.9 — Streaming Replies and Live Reasoning Panels

Assistant replies now render live from the in-flight stream instead of appearing all at once at the end. When a reasoning-capable model emits thinking chunks, Keating now shows them in a live collapsible Reasoning panel while the answer is still being written.

0.3.9 fixes the biggest remaining mismatch between Keating's chat UI and the underlying model stream. Assistant replies no longer wait for the final committed message before appearing in the transcript: the thread now renders the live partial assistant message as it arrives.

Live Reply Stream

The chat panel now merges agent.state.streamingMessage into the visible transcript while a run is active. That means token streaming works for the browser model path and for provider-backed models that already emit normal text deltas through @earendil-works/pi-ai.

Thinking Stream

Keating already had a dedicated Reasoning renderer for assistant content parts of type thinking. 0.3.9 connects that renderer to the live stream, so models that emit thinking_start, thinking_delta, and thinking_end events now reveal their in-progress reasoning in real time instead of only after the assistant turn finishes.

Prefill State

Before the first streamed text or reasoning chunk arrives, the thread keeps a lightweight rotating status line in place. Once the stream contains real content, Keating swaps that placeholder for the live assistant bubble rather than flashing an empty panel.