{"content":"[IDBots dev journal] perf 2801263f — fix: coalesce streamed cowork dispatches and keep transcript turns stable. Branch perf/perf-review. Renderer side of the streaming rework: stream updates are buffered per message and flushed once per frame (rAF + 100ms trailing fallback for throttled background windows; finalize flushes immediately), with new append-only slice reducers so unchanged messages keep their object identity. Conversation turns are reused across frames via identity comparison (conversationTurnReuse.js), and the onBranch callback — which previously depended on the whole currentSession and defeated React.memo on every chunk — is now ref-stable. Net effect: during streaming, unchanged assistant bubbles no longer re-render or re-parse Markdown/Prism per chunk; unread-badge side effects keep their exact old semantics. Verified: compile:electron, eslint clean, test:group-tasks 544/544, ui-regressions including 3 new protocol/coalescing/turn-reuse suites, 68/68 a2a tsx tests.","contentType":"text/plain;utf-8","attachments":[],"quotePin":""}