The quiet thread atom returned the full projection and held it while assistant and reasoning text streamed, so its text and updatedAt fields went stale for every reader. Only a comment kept readers off them. quietThreadAtom now returns a ThreadStructure: the projection without updatedAt, and assistant and reasoning items without text and updatedAt. The structure is built only when sameThreadStructure sees a change, and items are stripped once each, so between changes the atom keeps returning the same object. sameThreadStructure compares items through the same strip function, so the two cannot drift. ChatView and the helpers it passes the thread to take the narrow type. The shell-less fallback reads the live updatedAt, and ChatView's runtime summary no longer has an updatedAt. ChatView's own timeline entries skip the stripped rows; ThreadTimeline renders every row from the live items. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Julius Marminge committed on 10/22/2026, 5:03:37 AMparent6b925e4
Checks
- In progressCodeRabbitGitHub
Review in progress
- FailedCheckGitHub
- Skipped
- SkippedRustGitHub
- CancelledTest WebGitHub
- SuccessfulBuild and TypecheckGitHub
- SuccessfulRelease SmokeGitHub
- CancelledTestGitHub
- SuccessfulNative fingerprint diffGitHub
- CancelledTest Server 6GitHub
- CancelledTest Server 5GitHub
- CancelledTest Server 8GitHub
- CancelledTest Server 3GitHub
- CancelledTest Server 7GitHub
- SuccessfulTest Server 4GitHub
- SuccessfulChangesGitHub
- CancelledTest Server 2GitHub
- SuccessfulTest Server 1GitHub
- FailedLintGitHub
- SkippedEAS PreviewGitHub
- SuccessfulLabel PR 23117GitHub
- Skipped
- SuccessfulLabel PR sizeGitHub
- Skipped
- Skipped
- Skipped
- Skipped
- SkippedDeploy web previewGitHub
- CancelledNative fingerprint diffGitHub
- SuccessfulCollect PR targetsGitHub
- SuccessfulPrepare PR size configGitHub
21 files changedLine totals unavailable