Logs panel follows its tail by scrolling its own list: scrollIntoView scrolled every ancestor too, so with the code editor expanded each new line slid the whole editor up to bring the hidden dock into view
Docs / docs (push) Successful in 23s
Playwright Tests / test-playwright (1, 2) (push) Failing after 4m17s
Playwright Tests / test-playwright (2, 2) (push) Successful in 2m18s
pre-commit / pre-commit (push) Failing after 2m22s
Playwright Tests / merge-reports (push) Canceled after 0s
Test Backend / test-backend (3.12) (push) Canceled after 2m3s
Test Backend / test-backend (3.14) (push) Canceled after 0s
Compose Smoke Test / test-compose (push) Canceled after 0s

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
2026-10-16 10:39:09 +02:00
co-authored by Claude Opus 5.5
parent 5ddd02d88b
commit 7eef6c0eca
+5 -1
View File
@@ -102,9 +102,13 @@ function OpenLogsPanel({
const bottom = useRef<HTMLLIElement | null>(null)
// Follow the tail, which is where a running flow puts what just happened.
// Only the list moves: `scrollIntoView` would scroll every ancestor too, and
// with the code editor expanded the dock sits below the canvas, so the whole
// editor slid up to bring this line into view.
// biome-ignore lint/correctness/useExhaustiveDependencies: a new line is what scrolls.
useEffect(() => {
bottom.current?.scrollIntoView({ block: "end" })
const viewport = bottom.current?.closest("[data-slot=scroll-area-viewport]")
viewport?.scrollTo({ top: viewport.scrollHeight })
}, [lines.length])
// Escape still closes it, like everything else floating over this canvas.