Home subscribed to the whole streamingReply object, so each animation frame of an answer re-ran the page (header, picker, composer, overlays) and the desktop natal panel under it. ChatStreamingTranscript now subscribes for its session and feeds ChatTranscript; Home reads one derived boolean for the stop label. ChatChartSplit is memoized. 100 frames: Home <=2 commits (was >=100), panel 0. Two source-contract tests now pin the new component instead of the old names. The onboarding typewriter still ticks at Home level (out of this ticket). Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>