From 904334de88db9f4efab1cf80fcf130482caa210d Mon Sep 17 00:00:00 2001 From: Bohdan Triapitsyn Date: Sat, 5 Sep 2026 14:46:10 +0300 Subject: [PATCH] fix(vscode): compare workspace folders through the shared path helper The add-folder dedup normalized the drive letter to uppercase on one side and compared it with Uri.fsPath, which VS Code lowercases again. On Windows an already-open folder therefore never matched and was re-added. Uses pathsEqualWithNormalizedDriveLetter so both sides normalize. --- packages/vscode/src/bridge-system-runtime.ts | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/packages/vscode/src/bridge-system-runtime.ts b/packages/vscode/src/bridge-system-runtime.ts index a99e8181..6acd66f6 100644 --- a/packages/vscode/src/bridge-system-runtime.ts +++ b/packages/vscode/src/bridge-system-runtime.ts @@ -10,7 +10,7 @@ import { credentialStatus, deleteCredential, importCursorCredential, normalizeCr import { getSessionActivitySnapshot } from './sessionActivityWatcher'; import { getOpenCodeUpgradeStatus, upgradeManagedOpenCode } from './opencode-upgrade-runtime'; import { buildDeferredRestartResponse } from './config-mutation-response'; -import { normalizeWindowsDriveLetter } from './pathUtils'; +import { normalizeWindowsDriveLetter, pathsEqualWithNormalizedDriveLetter } from './pathUtils'; import { resolveWorkspaceFolders } from './workspaceResolver'; import type { BridgeContext, BridgeResponse } from './bridge'; @@ -608,10 +608,10 @@ export async function handleSystemBridgeMessage( } const folders = vscode.workspace.workspaceFolders ?? []; const uri = vscode.Uri.file(normalizeWindowsDriveLetter(targetPath.trim())); - // VS Code reports workspace folder paths with lowercase Windows drive - // letters (see pathUtils), so normalize both sides before comparing. + // `Uri.fsPath` lowercases the Windows drive letter again, so both sides + // have to go through the shared comparison (see pathUtils). const alreadyAdded = folders.some( - (folder) => normalizeWindowsDriveLetter(folder.uri.fsPath) === uri.fsPath, + (folder) => pathsEqualWithNormalizedDriveLetter(folder.uri.fsPath, uri.fsPath), ); if (!alreadyAdded) { const updated = await vscode.workspace.updateWorkspaceFolders(folders.length, null, { uri });