Same freeze here on the Linux desktop app. Numbers from a real thread:
- The thread has one reasoning item of 299,448 chars, from a provider loop (~38k lines, mostly
Hmm.). - Headless replay of the collapsed-preview path on
main(5b35402623) with that block: 36.9s, almost all of itremarkThoughtPreviewrescanning the growing string. Capping the preview input at 2k chars and normalizing whitespace once: 7ms. #23001 takes the same approach, so it should cover this.
One gap #23001 leaves open: projectTurnItemForWire (apps/server/src/orchestration-v2/WireProjection.ts) caps command output, diffs and subagent text, but reasoning goes through unchanged. Clients get the whole trace in the snapshot and in every turn-item.updated. I prototyped capping it at 32KB with a textTruncated flag and fetching the rest through getTurnItem on expand (256KB, like command output). On this thread, that cut the big item from 299,448 to 32,797 chars on the wire. Only 47 of 43,619 reasoning items in my local data are over 32KB, so it's a small follow-up. Happy to open a PR if maintainers want it.