From b5304525d87a2fc43ba36fa3bb025d01e6c8e7cf Mon Sep 17 00:00:00 2001 From: Kainoa Date: Sun, 18 Jan 2026 20:44:17 -0800 Subject: [PATCH] feat: add escape key to close diff modals Co-Authored-By: Claude Opus 4.5 --- src/renderer/components/AllChangesDiffModal.tsx | 10 ++++++++++ src/renderer/components/ChangesDiffModal.tsx | 10 ++++++++++ 2 files changed, 20 insertions(+) diff --git a/src/renderer/components/AllChangesDiffModal.tsx b/src/renderer/components/AllChangesDiffModal.tsx index 110d7bfc..05898952 100644 --- a/src/renderer/components/AllChangesDiffModal.tsx +++ b/src/renderer/components/AllChangesDiffModal.tsx @@ -55,6 +55,16 @@ export const AllChangesDiffModal: React.FC = ({ const editorRefs = useRef>(new Map()); const changeDisposables = useRef>(new Map()); + // Close on escape key + useEffect(() => { + if (!open) return; + const handleKeyDown = (e: KeyboardEvent) => { + if (e.key === 'Escape') onClose(); + }; + document.addEventListener('keydown', handleKeyDown); + return () => document.removeEventListener('keydown', handleKeyDown); + }, [open, onClose]); + const updateFileData = (filePath: string, updater: (data: FileDiffData) => FileDiffData) => { setFileData((prev) => { const existing = prev.get(filePath); diff --git a/src/renderer/components/ChangesDiffModal.tsx b/src/renderer/components/ChangesDiffModal.tsx index 9d2f4de2..06826d73 100644 --- a/src/renderer/components/ChangesDiffModal.tsx +++ b/src/renderer/components/ChangesDiffModal.tsx @@ -79,6 +79,16 @@ export const ChangesDiffModal: React.FC = ({ const [isSaving, setIsSaving] = useState(false); const [saveError, setSaveError] = useState(null); + // Close on escape key + useEffect(() => { + if (!open) return; + const handleKeyDown = (e: KeyboardEvent) => { + if (e.key === 'Escape') onClose(); + }; + document.addEventListener('keydown', handleKeyDown); + return () => document.removeEventListener('keydown', handleKeyDown); + }, [open, onClose]); + // Load file data when selected file changes useEffect(() => { if (!open || !selected || !safeTaskPath) {