Legacy TypeScript-harness transcript replay (store.legacyTranscript.ts), which hydrates old local chats after the Rust server stopped emitting assistant_message, reasoning, and model_stream_chunk events:
cwd plus the raw fragment), tool_input_end promotes and renames the card, a bare end does not invent a tool, numeric ids match across start and tool_error, and denial without a reason does not invent a result.0 is kept.reasoning_summary and assistant_reasoning are inserted before the first streamed assistant reply.session_busy: true does not clear the stream, so the duplicate final reply stays hidden. session_busy: false does, so the final reply is shown again.text_end closes: index fallback, unknown ids, empty annotation lists, commentary ends, and a later turn that reuses the stream id.apps/desktop/test/store-feed-mapping.transcript.test.tsThe decoder landed in #393 and was patched twice on 2026-11-11 (citation text_end chunks, streamed tool_input_delta args). Those fixes only locked the happy path. A reset, dedup, or annotation miss renders old threads with the wrong command, a dropped answer, a duplicated reply, or a citation on the wrong message, and that replay is what buildContextPreamble() feeds back into the model.
No production code changed.
bun scripts/run_tests.ts apps/desktop/test/store-feed-mapping.transcript.test.ts — 18 pass, 0 fail. Biome check on the file is clean. Full suite was not re-run.
Sign in to comment.
Update README.md
#125 mobile-fixes ← main
Updated 5 months ago
test(desktop): cover legacy transcript replay edges
#401 main ← cursor/regression-test-coverage-ab62
Updated 20 hours ago