From 82a2da47bbbec65a3b11014cab920a081caaea9f Mon Sep 17 00:00:00 2001 From: gsxdsm Date: Wed, 11 Feb 2026 23:51:15 -0800 Subject: [PATCH] fix: Keep terminal view out of the way of the keyboard on mobile views (#398) --- .../ui/src/components/layout/MainLayout.tsx | 7 +++++++ .../components/terminal/TerminalViewport.tsx | 17 ++++++++++++++++- .../ui/src/components/views/TerminalView.tsx | 6 +++++- 3 files changed, 28 insertions(+), 2 deletions(-) diff --git a/packages/ui/src/components/layout/MainLayout.tsx b/packages/ui/src/components/layout/MainLayout.tsx index 677d6b1a..22ccc007 100644 --- a/packages/ui/src/components/layout/MainLayout.tsx +++ b/packages/ui/src/components/layout/MainLayout.tsx @@ -206,6 +206,13 @@ export const MainLayout: React.FC = () => { if (!active) { return null; } + const explicitTargetId = active.getAttribute('data-keyboard-avoid-target-id'); + if (explicitTargetId) { + const explicitTarget = document.getElementById(explicitTargetId); + if (explicitTarget instanceof HTMLElement) { + return explicitTarget; + } + } const markedTarget = active.closest('[data-keyboard-avoid]') as HTMLElement | null; if (markedTarget) { // data-keyboard-avoid="none" opts out of translateY avoidance entirely. diff --git a/packages/ui/src/components/terminal/TerminalViewport.tsx b/packages/ui/src/components/terminal/TerminalViewport.tsx index 3cc7cd89..f7337ead 100644 --- a/packages/ui/src/components/terminal/TerminalViewport.tsx +++ b/packages/ui/src/components/terminal/TerminalViewport.tsx @@ -65,11 +65,24 @@ interface TerminalViewportProps { className?: string; enableTouchScroll?: boolean; autoFocus?: boolean; + keyboardAvoidTargetId?: string; } const TerminalViewport = React.forwardRef( ( - { sessionKey, chunks, onInput, onResize, theme, fontFamily, fontSize, className, enableTouchScroll, autoFocus = true }, + { + sessionKey, + chunks, + onInput, + onResize, + theme, + fontFamily, + fontSize, + className, + enableTouchScroll, + autoFocus = true, + keyboardAvoidTargetId, + }, ref ) => { const containerRef = React.useRef(null); @@ -1443,6 +1456,7 @@ const TerminalViewport = React.forwardRef