From 3d7095f9ce0d7ef083ca43a21a64ebb7e1e1ebf4 Mon Sep 17 00:00:00 2001 From: Eulices Lopez <105620565+eulicesl@users.noreply.github.com> Date: Thu, 19 Mar 2026 10:42:51 -0400 Subject: [PATCH] fix(ios): revalidate deferred streaming auto-scroll Follow up on PR review by re-checking the pin-to-bottom state inside the deferred streaming scroll task. This keeps queued tasks from yanking the list back down after the user scrolls away during token streaming.\n\nAlso rebase the branch onto current origin/main and validate with a simulator build. --- apps/shared/OpenClawKit/Sources/OpenClawChatUI/ChatView.swift | 1 + 1 file changed, 1 insertion(+) diff --git a/apps/shared/OpenClawKit/Sources/OpenClawChatUI/ChatView.swift b/apps/shared/OpenClawKit/Sources/OpenClawChatUI/ChatView.swift index 9a78bcd494b..a6236e02cc1 100644 --- a/apps/shared/OpenClawKit/Sources/OpenClawChatUI/ChatView.swift +++ b/apps/shared/OpenClawKit/Sources/OpenClawChatUI/ChatView.swift @@ -183,6 +183,7 @@ public struct OpenClawChatView: View { // Defer past the current layout pass to avoid "onChange tried to update // multiple times per frame" warnings during rapid streaming token delivery. Task { @MainActor in + guard self.hasPerformedInitialScroll, self.isPinnedToBottom else { return } withAnimation(.snappy(duration: 0.22)) { self.scrollPosition = self.scrollerBottomID }