diff --git a/src/renderer/components/team/review/ChangeReviewDialog.tsx b/src/renderer/components/team/review/ChangeReviewDialog.tsx index 59a7d2c0..efac7fb9 100644 --- a/src/renderer/components/team/review/ChangeReviewDialog.tsx +++ b/src/renderer/components/team/review/ChangeReviewDialog.tsx @@ -606,14 +606,18 @@ export const ChangeReviewDialog = ({ // even if focus is inside a CM editor (focus often remains there after clicking buttons). const now = Date.now(); - // Undo: recently rejected NEW file (deleted from disk + removed from review list) - const removedRecently = now - lastNewFileRemoveAtRef.current < 30_000; + // Undo: rejected NEW file (deleted from disk + removed from review list) const removedStack = removedNewFileUndoStackRef.current; - if ( - removedRecently && - removedStack.length > 0 && - !document.activeElement?.closest('.cm-editor') - ) { + const lastHunkAt = Object.values(lastHunkActionAtRef.current).reduce( + (max, v) => Math.max(max, v), + 0 + ); + const lastReviewActionAt = Math.max(lastBulkActionAtRef.current, lastHunkAt); + const newFileWasLastAction = lastNewFileRemoveAtRef.current >= lastReviewActionAt; + const isInEditor = !!document.activeElement?.closest('.cm-editor'); + const lastViewConnected = !!lastFocusedEditorRef.current?.dom.isConnected; + const shouldPreferEditorUndo = isInEditor && lastViewConnected; + if (newFileWasLastAction && removedStack.length > 0 && !shouldPreferEditorUndo) { e.preventDefault(); e.stopPropagation(); const snap = removedStack.pop()!; @@ -621,7 +625,7 @@ export const ChangeReviewDialog = ({ ...snap.file, originalFullContent: '', modifiedFullContent: snap.restoreContent, - contentSource: 'disk-current', + contentSource: 'snippet-reconstruction', }; addReviewFile(snap.file, { index: snap.index, content: restoredContent }); setActiveFilePath(snap.file.filePath); diff --git a/src/renderer/components/team/review/ReviewToolbar.tsx b/src/renderer/components/team/review/ReviewToolbar.tsx index 1b93dae2..dde07a11 100644 --- a/src/renderer/components/team/review/ReviewToolbar.tsx +++ b/src/renderer/components/team/review/ReviewToolbar.tsx @@ -153,7 +153,7 @@ export const ReviewToolbar = ({ Undo - Undo last bulk operation (Ctrl+Z) + Undo last review operation (Ctrl+Z) )}