diff --git a/src/dashboard/react-components/LogViewerPanel.tsx b/src/dashboard/react-components/LogViewerPanel.tsx index f758a5a2a..a7c3852cf 100644 --- a/src/dashboard/react-components/LogViewerPanel.tsx +++ b/src/dashboard/react-components/LogViewerPanel.tsx @@ -69,15 +69,21 @@ export function LogViewerPanel({ return () => window.removeEventListener('keydown', handleKeyDown); }, [isOpen, onClose]); - // Prevent body scroll when fullscreen + // Prevent body scroll when panel is open (fix mobile scroll capture) useEffect(() => { - if (isOpen && position === 'fullscreen') { - document.body.style.overflow = 'hidden'; - return () => { - document.body.style.overflow = ''; - }; - } - }, [isOpen, position]); + if (!isOpen) return; + + const previousOverflow = document.body.style.overflow; + const previousOverscroll = document.body.style.overscrollBehavior; + + document.body.style.overflow = 'hidden'; + document.body.style.overscrollBehavior = 'none'; + + return () => { + document.body.style.overflow = previousOverflow; + document.body.style.overscrollBehavior = previousOverscroll; + }; + }, [isOpen]); if (!isOpen) return null; @@ -280,7 +286,7 @@ export function LogViewerPanel({ {/* Log viewer */} -
+
)} - {/* Terminal container - don't use overflow-auto here, xterm-viewport handles scrolling */} + {/* Terminal container - keep a dedicated scroll boundary for mobile */}
+ className="flex-1 min-h-0 overflow-hidden" + style={{ maxHeight, minHeight: '200px' }} + > +
+
{/* Footer status bar */}