diff --git a/webview-ui/src/components/worktrees/DeleteWorktreeModal.tsx b/webview-ui/src/components/worktrees/DeleteWorktreeModal.tsx index 3f40c73ff6..9e3f4802d5 100644 --- a/webview-ui/src/components/worktrees/DeleteWorktreeModal.tsx +++ b/webview-ui/src/components/worktrees/DeleteWorktreeModal.tsx @@ -18,7 +18,7 @@ export const DeleteWorktreeModal = ({ open, onClose, worktree, onSuccess }: Dele const { t } = useAppTranslation() const [isDeleting, setIsDeleting] = useState(false) - const [forceDelete, setForceDelete] = useState(false) + const [forceDeleteLocked, setForceDeleteLocked] = useState(false) const [error, setError] = useState(null) useEffect(() => { @@ -44,12 +44,15 @@ export const DeleteWorktreeModal = ({ open, onClose, worktree, onSuccess }: Dele setError(null) setIsDeleting(true) + // Always force delete unless worktree is locked and user hasn't opted in + const shouldForce = worktree.isLocked ? forceDeleteLocked : true + vscode.postMessage({ type: "deleteWorktree", worktreePath: worktree.path, - worktreeForce: forceDelete, + worktreeForce: shouldForce, }) - }, [worktree.path, forceDelete]) + }, [worktree.path, worktree.isLocked, forceDeleteLocked]) return ( !isOpen && onClose()}> @@ -90,13 +93,13 @@ export const DeleteWorktreeModal = ({ open, onClose, worktree, onSuccess }: Dele - {/* Force delete option (if worktree is locked) */} + {/* Force delete option (only shown if worktree is locked) */} {worktree.isLocked && (
setForceDelete(checked === true)} + checked={forceDeleteLocked} + onCheckedChange={(checked) => setForceDeleteLocked(checked === true)} />