Merge branch 'main' into fix/streamdown-trailing-emphasis
Only completed-turn-content.tsx conflicted. Main's 73e96ac2 rewrote the exact region this branch had patched: the single early return that used to catch every live reply became a `foldable` predicate plus per-round fold state. Took main's structure wholesale — this branch has no stake in the fold logic — and re-applied its own intent on top. That re-application is not the one-line patch it was. Under the old shape `!completed` always took the early return, so the progress and answer renderers below it were provably settled and needed nothing. Main's `foldable` disjunct (`!completed || hasVisibleAnswer(...)`) drops a live reply that has already made a tool call into the fold branch instead, so both halves now render growing text and both need to be told so. Hence a named `isStreaming` passed at every renderer in the component rather than at one of them. completed-turn-streaming-mode.test.tsx pins that: a live foldable reply renders both halves streaming, a settled one static. Dropping the flag from the two fold-branch sites fails it.
X
xintaofei committed
d58c8e19e2b4423164d5e73fb080ce9d959a2fa0