Files
orca/src/shared
86d03ff908 fix(native-chat): sending brings the latest into view and follows the reply (#24514)
* fix(native-chat): sending brings the latest into view, with visible jumps to latest and top

Sending while scrolled up left the reader parked in old history, and the way back was a faint button. A send now resumes following, opening a row to read it stops following until it is closed, and Jump to latest and Jump to top sit above the composer. Refs #23797.

* fix(native-chat): a late or unsent answer no longer moves a reader who scrolled away

An answer's reveal is now held from the click and dropped if the reader acts before the host accepts. In the terminal lane, an answer with no terminal to write to reveals nothing.

* fix(native-chat): an empty answer no longer moves the reader

The terminal lane's reveal now uses the same check the send does, and the send-site guard test ignores comments.

* fix(native-chat): preserve upstream retry and question cancellation

* refactor(native-chat): leave Jump to top out of this change

Jump to top moves to its own PR so this one lands the send reveal and
follow behaviour on their own.

* refactor(native-chat): keep Jump to latest's existing look in this change

The solid, fading Jump to latest button moves to the UI PR (#25702) so this one carries only the scroll behaviour.

* Preserve native chat reader intent across submissions and disclosure layout

Replace open-row lifetime tracking with bounded position preservation, and tie delayed reveals to the originating reader and session. Keep queued drafts and picker actions from navigating the transcript.

Co-authored-by: Kelvin Amoaba <97001695+AmoabaKelvin@users.noreply.github.com>

* fix(native-chat): retain reader takeover until its frame ends

Pending reader takeover could keep an earlier end target once a duplicate 250 ms gate expired. Let the existing pending-frame check keep the reader's actual offset until that frame ends.

Move unchanged interactive reveal and approval projection into their existing modules so both view files meet the line limit.

Co-authored-by: Kelvin Amoaba <97001695+AmoabaKelvin@users.noreply.github.com>

* fix(native-chat): only a scroll gesture stops following; sends reveal at the press

Opening or closing a row used to stop the transcript from following the
newest output. A reader at the live end who expanded a tool run then lost
the stream. Sends that wait on the host (answers, commands, goals, option
changes) only brought the latest into view after the host replied, so the
reader watched nothing happen at the press.

Now following stops only on a reader gesture: an upward wheel or scroll key
when there is content above, a scrollbar press, a touch drag once it has
carried the view off the end, or a press on content while already away from
the end. Opening, closing, layout changes and the app's own scrolls never
stop it, and returning to the end resumes it. Every local send reveals the
latest at the press. A message that waits as a queued card, a message from
another device, and Stop leave a reader who scrolled up where they are.
Queue Resume still reveals only after the host lifts the pause, and only in
the pane that pressed it while that pane is shown.

Removes the disclosure position hold, the reader-opens wiring, the held
reveal and its reader generation tracking. The queued-card decision moves
into the outbox send so the session hook stays under the line limit. Also
restores the transcript label import and the approval card's verified send
that the merge with main dropped.

* chore: leave an unrelated fixture as main has it

* refactor(native-chat): share the terminal send paths' common options in the composer

* test(native-chat): drop a field the main merge declared twice

* test(native-chat): the pane's steer still steers the queue, and also reveals

---------

Co-authored-by: Neil <4138956+nwparker@users.noreply.github.com>
Co-authored-by: Brennan Benson <79079362+brennanb2025@users.noreply.github.com>
2026-10-06 16:50:55 -07:00
..
2026-09-03 17:32:59 -07:00