# refactor\(web\): the quiet thread no longer carries streamed text or timestamps · pingdotgg/t3code

[View on GitCafe](https://git.cafe/pingdotgg/t3code/commit/b7c85b7d6049f61958c4ef338f123877444e1bf7)

Repository: [pingdotgg/t3code](https://git.cafe/pingdotgg/t3code)

Visibility: public

Requested revision: b7c85b7d6049f61958c4ef338f123877444e1bf7

Requested commit: b7c85b7d6049f61958c4ef338f123877444e1bf7

Commit: b7c85b7d6049f61958c4ef338f123877444e1bf7

Tree: e10673bcf08e949d7441202821e14f08f6842dca

Author: Julius Marminge

Committer: Julius Marminge

## Message

```
refactor(web): the quiet thread no longer carries streamed text or timestamps

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>

```

## Parents

- [6b925e441e2033e8e40eef0f70246d74d04934e6](https://git.cafe/pingdotgg/t3code/commit/6b925e441e2033e8e40eef0f70246d74d04934e6?format=markdown)

[Source at this commit](https://git.cafe/pingdotgg/t3code/tree/b7c85b7d6049f61958c4ef338f123877444e1bf7?format=markdown)
