diff --git a/packages/core/src/project.ts b/packages/core/src/project.ts index ba907367adb..de55eccb1e1 100644 --- a/packages/core/src/project.ts +++ b/packages/core/src/project.ts @@ -246,12 +246,13 @@ const layer = Layer.effect( if (repo) { const previous = yield* cached(repo.commonDirectory) const id = (yield* remote(repo)) ?? previous ?? (yield* root(repo)) - const canonical = yield* git.worktree - .list(repo) - .pipe( - Effect.map((items) => items.find((item) => item.kind === "main")?.directory ?? repo.worktree), - Effect.catch(() => Effect.succeed(repo.worktree)), - ) + const canonical = + repo.gitDirectory === repo.commonDirectory + ? repo.worktree + : yield* git.worktree.list(repo).pipe( + Effect.map((items) => items.find((item) => item.kind === "main")?.directory ?? repo.worktree), + Effect.catch(() => Effect.succeed(repo.worktree)), + ) return yield* persist({ previous, id: id ?? ID.global, diff --git a/packages/core/test/project.test.ts b/packages/core/test/project.test.ts index 7be0a5ad77c..8cb44e0f77f 100644 --- a/packages/core/test/project.test.ts +++ b/packages/core/test/project.test.ts @@ -143,6 +143,7 @@ describe("Project.resolve", () => { expect(result.id).toBe(Project.ID.make(yield* Effect.promise(() => rootCommit(tmp.path)))) expect(result.directory).toBe(yield* real(tmp.path)) + expect(result.canonical).toBe(result.directory) expect(result.previous).toBeUndefined() expect(result.vcs?.type).toBe("git") }),