Streaming partials were appended to log.raw per chunk, each carrying the full cumulative content, so one response left dozens of partial lines persisted. GUI clients parsing the snapshot re-rendered the growing block once per partial (O(N^2)) and replayed all historical partials on every reconnect, causing intermittent rendering loops. Partials are no longer persisted: AppendBlock writes only finalized blocks to log.raw; SetPartial broadcasts the in-flight block without storing it. New chat.raw StreamRaw file is the authoritative live JSONL source (finalized history replay, then live deltas); log.raw is a finalized-only one-shot snapshot. GUI streams chat.raw, never polls log.raw. |
||
|---|---|---|
| .. | ||
| agent | ||
| backend | ||
| bypass | ||
| fs | ||
| metrics | ||
| prompts | ||
| session | ||
| toolclient | ||