From 04f6e362b919f5965eac9bc1d1bf61de63868ba3 Mon Sep 17 00:00:00 2001 From: Shantur Rathore Date: Sat, 6 Dec 2025 22:22:44 +0000 Subject: [PATCH] Centralize tool call scroll helpers --- packages/ui/src/components/tool-call.tsx | 38 +++++++++++++------ .../components/tool-call/renderers/task.tsx | 10 ++++- packages/ui/src/components/tool-call/types.ts | 7 ++++ 3 files changed, 42 insertions(+), 13 deletions(-) diff --git a/packages/ui/src/components/tool-call.tsx b/packages/ui/src/components/tool-call.tsx index e3d4eba6..35bc02db 100644 --- a/packages/ui/src/components/tool-call.tsx +++ b/packages/ui/src/components/tool-call.tsx @@ -9,7 +9,14 @@ import type { DiffViewMode } from "../stores/preferences" import { sendPermissionResponse } from "../stores/instances" import type { TextPart, RenderCache } from "../types/message" import { resolveToolRenderer } from "./tool-call/renderers" -import type { DiffPayload, DiffRenderOptions, MarkdownRenderOptions, ToolCallPart, ToolRendererContext } from "./tool-call/types" +import type { + DiffPayload, + DiffRenderOptions, + MarkdownRenderOptions, + ToolCallPart, + ToolRendererContext, + ToolScrollHelpers, +} from "./tool-call/types" import { getRelativePath, getToolIcon, getToolName, isToolStateCompleted, isToolStateError, isToolStateRunning } from "./tool-call/utils" import { getLogger } from "../lib/logger" @@ -419,7 +426,20 @@ export default function ToolCall(props: ToolCallProps) { persistScrollSnapshot(event.currentTarget) } + const scrollHelpers: ToolScrollHelpers = { + registerContainer: (element, options) => { + if (options?.disableTracking) return + initializeScrollContainer(element) + }, + handleScroll: handleScrollEvent, + renderSentinel: (options) => { + if (options?.disableTracking) return null + return