diff --git a/packages/app/src/pages/new-session/new-session-workspace-controller.test.ts b/packages/app/src/pages/new-session/new-session-workspace-controller.test.ts index e208faf488..d042db744e 100644 --- a/packages/app/src/pages/new-session/new-session-workspace-controller.test.ts +++ b/packages/app/src/pages/new-session/new-session-workspace-controller.test.ts @@ -39,14 +39,20 @@ describe("new session workspace selection", () => { expect(normalizeNewSessionWorktree("main", "C:\\Repo\\", "c:/repo")).toBe("main") }) - test("falls back to the local branch for main, create, and unknown worktrees", () => { + test("resolves the branch from the active location", () => { const branch = (worktree: string) => (worktree === "/project/feature" ? "feature" : undefined) - expect(resolveNewSessionBranch({ worktree: "main", local: "dev", worktreeBranch: branch })).toBe("dev") - expect(resolveNewSessionBranch({ worktree: "create", local: "dev", worktreeBranch: branch })).toBe("dev") - expect(resolveNewSessionBranch({ worktree: "/project/feature", local: "dev", worktreeBranch: branch })).toBe( + expect(resolveNewSessionBranch({ worktree: "main", directory: "/project/feature", worktreeBranch: branch })).toBe( "feature", ) - expect(resolveNewSessionBranch({ worktree: "/missing", local: "dev", worktreeBranch: branch })).toBe("dev") + expect( + resolveNewSessionBranch({ worktree: "create", directory: "/project/feature", worktreeBranch: branch }), + ).toBe("feature") + expect( + resolveNewSessionBranch({ worktree: "/project/feature", directory: "/project", worktreeBranch: branch }), + ).toBe("feature") + expect(resolveNewSessionBranch({ worktree: "/missing", directory: "/project/feature", worktreeBranch: branch })).toBe( + undefined, + ) }) test("uses location VCS state when the project inventory is stale", () => { diff --git a/packages/app/src/pages/new-session/new-session-workspace-controller.ts b/packages/app/src/pages/new-session/new-session-workspace-controller.ts index 338e14dd30..f0032bb85a 100644 --- a/packages/app/src/pages/new-session/new-session-workspace-controller.ts +++ b/packages/app/src/pages/new-session/new-session-workspace-controller.ts @@ -32,11 +32,11 @@ export function normalizeNewSessionWorktree(value: string, directory: string, pr export function resolveNewSessionBranch(input: { worktree: string - local?: string + directory: string worktreeBranch: (worktree: string) => string | undefined }) { - if (input.worktree === "main" || input.worktree === "create") return input.local - return input.worktreeBranch(input.worktree) ?? input.local + const directory = input.worktree === "main" || input.worktree === "create" ? input.directory : input.worktree + return input.worktreeBranch(directory) } export function resolveNewSessionGit(input: { projectVcs?: string; branch?: string }) { @@ -95,11 +95,10 @@ export function createNewSessionWorkspaceController(input: { const directories = project ? [project.worktree, ...workspaceDirectories(project)] : [sdk().directory] directories.forEach((directory) => void data.location.vcs.sync({ directory }).catch(() => undefined)) }) - const localBranch = createMemo(() => data.location.vcs.info({ directory: projectRoot() })?.branch.current) const branch = createMemo(() => resolveNewSessionBranch({ worktree: value(), - local: localBranch(), + directory: sdk().directory, worktreeBranch: (worktree) => data.location.vcs.info({ directory: worktree })?.branch.current, }), )