From 3a505b2691f956f4d11e167fe30096e346ad28ae Mon Sep 17 00:00:00 2001 From: Adam <2363879+adamdotdevin@users.noreply.github.com> Date: Tue, 17 Feb 2026 10:29:35 -0600 Subject: [PATCH] fix(app): virtualizer getting wrong scroll root --- packages/ui/src/pierre/virtualizer.ts | 29 ++++++++++++++++++++++++--- 1 file changed, 26 insertions(+), 3 deletions(-) diff --git a/packages/ui/src/pierre/virtualizer.ts b/packages/ui/src/pierre/virtualizer.ts index 4957afc12..42c3a4ca3 100644 --- a/packages/ui/src/pierre/virtualizer.ts +++ b/packages/ui/src/pierre/virtualizer.ts @@ -19,12 +19,35 @@ export const virtualMetrics: Partial = { fileGap: 0, } +function scrollable(value: string) { + return value === "auto" || value === "scroll" || value === "overlay" +} + +function scrollRoot(container: HTMLElement) { + let node = container.parentElement + while (node) { + const style = getComputedStyle(node) + if (scrollable(style.overflowY)) return node + node = node.parentElement + } +} + function target(container: HTMLElement): Target | undefined { if (typeof document === "undefined") return - const root = container.closest("[data-component='session-review']") - if (root instanceof HTMLElement) { - const content = root.querySelector("[data-slot='session-review-container']") + const review = container.closest("[data-component='session-review']") + if (review instanceof HTMLElement) { + const content = review.querySelector("[data-slot='session-review-container']") + return { + key: review, + root: review, + content: content instanceof HTMLElement ? content : undefined, + } + } + + const root = scrollRoot(container) + if (root) { + const content = root.querySelector("[role='log']") return { key: root, root,