From 33b87c68e1db8328325b5643d99eb6ff3f97bc34 Mon Sep 17 00:00:00 2001 From: brennanb2025 Date: Thu, 2 Jul 2026 16:34:59 -0700 Subject: [PATCH] Fix worktree list option forwarding Co-authored-by: Orca --- src/main/repo-worktrees.ts | 10 ++++++++-- .../workspace-cleanup/WorkspaceCleanupDialog.tsx | 2 ++ 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/src/main/repo-worktrees.ts b/src/main/repo-worktrees.ts index 6a346fc4d13..4f45e7d8564 100644 --- a/src/main/repo-worktrees.ts +++ b/src/main/repo-worktrees.ts @@ -9,6 +9,10 @@ type LocalRepoWorktreeListOptions = { signal?: AbortSignal } +function hasLocalRepoWorktreeListOptions(options: LocalRepoWorktreeListOptions | undefined) { + return options?.wslDistro !== undefined || options?.signal !== undefined +} + export function isRepoRoot(repos: Repo[], resolvedTarget: string): boolean { return repos.some( (repo) => !repo.connectionId && areWorktreePathsEqual(repo.path, resolvedTarget) @@ -30,7 +34,7 @@ export function createFolderWorktree(repo: Repo): GitWorktreeInfo { export async function listRepoWorktrees( repo: Repo, - options: LocalRepoWorktreeListOptions = {} + options?: LocalRepoWorktreeListOptions ): Promise { if (isFolderRepo(repo)) { return [createFolderWorktree(repo)] @@ -42,5 +46,7 @@ export async function listRepoWorktrees( // local git against a server path. return provider ? await provider.listWorktrees(repo.path) : [] } - return await listWorktrees(repo.path, options) + return hasLocalRepoWorktreeListOptions(options) + ? await listWorktrees(repo.path, options) + : await listWorktrees(repo.path) } diff --git a/src/renderer/src/components/workspace-cleanup/WorkspaceCleanupDialog.tsx b/src/renderer/src/components/workspace-cleanup/WorkspaceCleanupDialog.tsx index dfcb25d7a41..91a552735ef 100644 --- a/src/renderer/src/components/workspace-cleanup/WorkspaceCleanupDialog.tsx +++ b/src/renderer/src/components/workspace-cleanup/WorkspaceCleanupDialog.tsx @@ -557,6 +557,8 @@ export default function WorkspaceCleanupDialog(): React.JSX.Element { deleteState.error === null && deleteState.phase === 'queued' ) { + // Why: candidates that fail before removal starts would otherwise + // stay marked "Queued for deletion" in the sidebar indefinitely. clearWorktreeDeleteState(failure.worktreeId) } }