Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
13 changes: 10 additions & 3 deletions src/web-ui/src/main.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
Loading