diff --git a/frontend/src/components/tasks/TaskDetailsPanel.tsx b/frontend/src/components/tasks/TaskDetailsPanel.tsx index e82df57b..56796f6a 100644 --- a/frontend/src/components/tasks/TaskDetailsPanel.tsx +++ b/frontend/src/components/tasks/TaskDetailsPanel.tsx @@ -158,6 +158,22 @@ export function TaskDetailsPanel({ const scrollContainerRef = useRef(null); const { config } = useConfig(); + // Handle ESC key locally to prevent global navigation + useEffect(() => { + if (!isOpen) return; + + const handleKeyDown = (event: KeyboardEvent) => { + if (event.key === 'Escape') { + event.preventDefault(); + event.stopPropagation(); + onClose(); + } + }; + + document.addEventListener('keydown', handleKeyDown, true); // Use capture phase + return () => document.removeEventListener('keydown', handleKeyDown, true); + }, [isOpen, onClose]); + // Available executors const availableExecutors = [ { id: "echo", name: "Echo" },