mirror of
https://github.com/cline/cline.git
synced 2026-09-21 13:21:23 +08:00
* fix(webview): restore aggressive pin-to-bottom auto scroll in chat view The auto-scroll effect only fired on groupedMessages.length changes, but in the SDK-migrated extension new content can appear in the chat without the message list length changing: - The Thinking placeholder row is driven by turnState alone (e.g. the plan to act switch auto-continues the task with no new message), and it was appended to the rendered list inside MessagesArea where the scroll hook never saw it. - New tool messages merge into the trailing tool group, and the thinking placeholder gets swapped for a real reasoning row at constant length. Fixes: - Lift the thinking placeholder computation out of MessagesArea into a new useDisplayedGroupedMessages hook so ChatView feeds the same list to both Virtuoso and useScrollBehavior; the placeholder appearing now pins to bottom like a real message. - Key the pin effect on the tail message ts (skipping the placeholder) in addition to list length, covering in-place tail changes. - Re-engage auto scroll when turnState.phase transitions into streaming. In the old extension every turn start was accompanied by a user send/button click that reset disableAutoScrollRef; turnState-driven turn starts like plan to act auto-continue have no webview-side action, so handle it in the scroll hook. * refactor(webview): replace scroll fix with minimal single-file version Same three behaviors as the previous commit (pin when the thinking placeholder appears, pin on in-place tail changes, re-engage auto scroll when a turn starts streaming) but implemented as two small effects in MessagesArea, which already has both the rendered list and scrollBehavior in scope. Reverts the useDisplayedGroupedMessages hook extraction and the ChatView/useScrollBehavior changes; net diff vs the base branch is now one file.