From e849518c769804fa8a4f3fc57f3ed304b58dff70 Mon Sep 17 00:00:00 2001 From: Mohamed Boudra Date: Wed, 29 Jul 2026 00:02:16 +0000 Subject: [PATCH] fix(projects): normalize default remote ports --- .../server/src/server/project-group-key.test.ts | 13 +++++++++++++ packages/server/src/server/project-group-key.ts | 11 ++++++++++- 2 files changed, 23 insertions(+), 1 deletion(-) diff --git a/packages/server/src/server/project-group-key.test.ts b/packages/server/src/server/project-group-key.test.ts index 68d6bca3b..d40ad0102 100644 --- a/packages/server/src/server/project-group-key.test.ts +++ b/packages/server/src/server/project-group-key.test.ts @@ -18,6 +18,19 @@ describe("deriveProjectGroupKey", () => { ).toBe("remote:git.example.com:8443/acme/app"); }); + test("normalizes the default SSH port", () => { + const rootPath = path.resolve("repo"); + + expect( + deriveProjectGroupKey({ + rootPath, + remoteUrl: "ssh://git@github.com:22/getpaseo/paseo.git", + worktreeRoot: rootPath, + mainRepoRoot: null, + }), + ).toBe("remote:github.com/getpaseo/paseo"); + }); + test("accepts a root-level remote repository path", () => { const rootPath = path.resolve("repo"); diff --git a/packages/server/src/server/project-group-key.ts b/packages/server/src/server/project-group-key.ts index ae429a03c..25917750c 100644 --- a/packages/server/src/server/project-group-key.ts +++ b/packages/server/src/server/project-group-key.ts @@ -47,7 +47,7 @@ function deriveRemoteProjectGroupKey(remoteUrl: string | null): string | null { } else if (trimmed.includes("://")) { try { const parsed = new URL(trimmed); - host = parsed.host || null; + host = deriveRemoteHost(parsed); remotePath = parsed.pathname ? parsed.pathname.replace(/^\/+/, "") : null; } catch { return null; @@ -60,3 +60,12 @@ function deriveRemoteProjectGroupKey(remoteUrl: string | null): string | null { if (!cleanedPath) return null; return `remote:${host.toLowerCase()}/${cleanedPath}`; } + +function deriveRemoteHost(remoteUrl: URL): string | null { + const defaultPorts: Partial> = { + "git:": "9418", + "ssh:": "22", + }; + if (remoteUrl.port === defaultPorts[remoteUrl.protocol]) return remoteUrl.hostname || null; + return remoteUrl.host || null; +}