From a4a136d0af09545612fe6f917ec91250cb85d8a0 Mon Sep 17 00:00:00 2001 From: Bob Lee Date: Thu, 16 Jul 2026 11:32:43 +0800 Subject: [PATCH] fix(web-ui): allow Tab focus traversal inside modal dialogs Keep the global IDE-style Tab block for app chrome, but let Tab move between fields in modal forms such as SSH connect and account login. --- src/web-ui/src/main.tsx | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/src/web-ui/src/main.tsx b/src/web-ui/src/main.tsx index 58685bf2fb..a727002af8 100644 --- a/src/web-ui/src/main.tsx +++ b/src/web-ui/src/main.tsx @@ -188,14 +188,21 @@ function registerGlobalErrorHandlers() { registerGlobalErrorHandlers(); -// Disable Tab-key focus traversal globally. -// Tab still works inside Monaco Editor and xterm terminal where it has semantic meaning. +// Disable Tab-key focus traversal globally (IDE-style chrome). +// Allow Tab where it has semantic meaning: Monaco, xterm, and modal/dialog forms +// (SSH connect, account login, settings dialogs, etc. — Modal focus trap keeps focus inside). document.addEventListener( 'keydown', (e: KeyboardEvent) => { if (e.key !== 'Tab') return; const target = e.target as Element | null; - if (target?.closest('.monaco-editor, .xterm')) return; + if ( + target?.closest( + '.monaco-editor, .xterm, [role="dialog"], [aria-modal="true"]' + ) + ) { + return; + } e.preventDefault(); }, true