SIGN IN SIGN UP

fix(chat): stop a steered reply's first half from forking at the tail

Forking sends a turn id, and the backend cannot resolve one this client
minted for its own live stream — `fork_session` degrades an unresolvable
fork point to a TAIL fork rather than refusing the click. That is the
right answer for the newest reply, where the tail IS the fork point, and
until now it was the only reply that could be in that state: consecutive
assistant turns merge into one group, so a live-named group was always
the last one.

A steered reply breaks that. It promotes as assistant / user message /
assistant, so its first half is a settled, non-tail group with a fork
button, and `source_turn_id` — the parser's name for it — does not
arrive until the post-turn reparse a second and a half later. Forking
there silently produced the whole reply, steer included, instead of the
half the user pointed at.

That case now greys the button out and says why, the way an in-flight
turn already does, until the reparse names the turn.
X
xintaofei committed
a0d54b092f2df7028ff6fcd9c254764babd019ba
Parent: c5f5062