SIGN IN SIGN UP

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