From 1ff152edcdd339098aa8087beae16e8b78512007 Mon Sep 17 00:00:00 2001 From: Mohamed Boudra Date: Wed, 29 Jul 2026 10:09:43 +0000 Subject: [PATCH] fix(projects): retain archived reference errors --- .../src/server/project-reference.test.ts | 23 ++++++++++++++++--- .../server/src/server/project-reference.ts | 2 +- 2 files changed, 21 insertions(+), 4 deletions(-) diff --git a/packages/server/src/server/project-reference.test.ts b/packages/server/src/server/project-reference.test.ts index 37951f1e4..3066fba53 100644 --- a/packages/server/src/server/project-reference.test.ts +++ b/packages/server/src/server/project-reference.test.ts @@ -1,4 +1,4 @@ -import { describe, expect, test, vi } from "vitest"; +import { describe, expect, test } from "vitest"; import type { PersistedProjectRecord } from "./workspace-registry.js"; import { resolveProjectReference } from "./project-reference.js"; @@ -36,12 +36,29 @@ describe("resolveProjectReference", () => { rootPath: "/new/app", }); const registry = { - get: vi.fn().mockResolvedValue(archivedLegacyProject), - list: vi.fn().mockResolvedValue([archivedLegacyProject, activeProject]), + get: async () => archivedLegacyProject, + list: async () => [archivedLegacyProject, activeProject], }; await expect(resolveProjectReference(reference, registry, ["/new/app"])).resolves.toEqual( activeProject, ); }); + + test("preserves an archived direct project when there is no active replacement", async () => { + const archivedProject = project({ + projectId: "archived-project-id", + projectKey: "remote:github.com/acme/app", + rootPath: "/old/app", + archivedAt: "2026-02-01T00:00:00.000Z", + }); + const registry = { + get: async () => archivedProject, + list: async () => [archivedProject], + }; + + await expect(resolveProjectReference(archivedProject.projectId, registry)).resolves.toEqual( + archivedProject, + ); + }); }); diff --git a/packages/server/src/server/project-reference.ts b/packages/server/src/server/project-reference.ts index 8c88e7f9f..65d593278 100644 --- a/packages/server/src/server/project-reference.ts +++ b/packages/server/src/server/project-reference.ts @@ -20,5 +20,5 @@ export async function resolveProjectReference( ); if (matches.length === 1) return matches[0] ?? null; } - return candidates.length === 1 ? (candidates[0] ?? null) : null; + return candidates.length === 1 ? (candidates[0] ?? null) : direct; }