From 0e7a4559c1755b068e1d53db829a34dd926f8b08 Mon Sep 17 00:00:00 2001 From: Bharat Middha <5100938+bmiddha@users.noreply.github.com> Date: Wed, 27 May 2026 13:34:21 -0700 Subject: [PATCH 1/2] Add homeDirectory config to debug certificate manager extension Adds a new extension setting that, when set, is used as the resolved home directory for expanding `~` in the workspace certificate store path, overriding both the local `os.homedir()` lookup and the terminal-based resolution used in remote workspaces. Recommended to be configured at the user level rather than per-workspace. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --- .../package.json | 5 +++++ .../src/config.ts | 7 ++++++- .../src/constants.ts | 1 + .../src/extension.ts | 6 +++++- 4 files changed, 17 insertions(+), 2 deletions(-) diff --git a/vscode-extensions/debug-certificate-manager-vscode-extension/package.json b/vscode-extensions/debug-certificate-manager-vscode-extension/package.json index 271aa6a85cb..7ee7c4317a6 100644 --- a/vscode-extensions/debug-certificate-manager-vscode-extension/package.json +++ b/vscode-extensions/debug-certificate-manager-vscode-extension/package.json @@ -101,6 +101,11 @@ "title": "Automatically Sync Certificates", "default": true, "description": "Check certificates when extension is activated. Extension is automatically activated when a `.vscode/debug-certificate-manager.json` file is present in the workspace." + }, + "debugCertificateManager.homeDirectory": { + "type": "string", + "title": "Home Directory", + "description": "Absolute path to the home directory, used to resolve `~` in the workspace certificate store path. When set, this overrides the default behavior (`os.homedir()` for local workspaces, or running a command in a workspace terminal for remote workspaces like Codespaces, SSH, Dev Containers, WSL, or Tunnels). Note: this setting is recommended to be configured at the user level, not the workspace level." } } } diff --git a/vscode-extensions/debug-certificate-manager-vscode-extension/src/config.ts b/vscode-extensions/debug-certificate-manager-vscode-extension/src/config.ts index 1a6371b81b8..e0723471b50 100644 --- a/vscode-extensions/debug-certificate-manager-vscode-extension/src/config.ts +++ b/vscode-extensions/debug-certificate-manager-vscode-extension/src/config.ts @@ -11,12 +11,14 @@ import { CONFIG_CA_CERTIFICATE_FILENAME, CONFIG_CERTIFICATE_FILENAME, CONFIG_KEY_FILENAME, + CONFIG_HOME_DIRECTORY, CONFIG_STORE_PATH } from './constants'; type StorePaths = Record<'windows' | 'linux' | 'osx', string>; export interface IExtensionConfig extends ICertificateStoreOptions { autoSync: boolean; + homeDirectory: string | undefined; } export function getConfig(terminal: ITerminal): IExtensionConfig { @@ -27,6 +29,8 @@ export function getConfig(terminal: ITerminal): IExtensionConfig { config.get(CONFIG_CERTIFICATE_FILENAME) || 'rushstack-serve.pem'; const keyFilename: string | undefined = config.get(CONFIG_KEY_FILENAME) || 'rushstack-serve.key'; const autoSync: boolean = config.get(CONFIG_AUTOSYNC) ?? false; + const homeDirectory: string | undefined = + config.get(CONFIG_HOME_DIRECTORY) || undefined; let storePath: string | undefined = undefined; const platformMap: Record = { @@ -54,7 +58,8 @@ export function getConfig(terminal: ITerminal): IExtensionConfig { caCertificateFilename, certificateFilename, keyFilename, - autoSync + autoSync, + homeDirectory }; terminal.writeLine(`Extension config: ${JSON.stringify(extensionConfig)}`); return extensionConfig; diff --git a/vscode-extensions/debug-certificate-manager-vscode-extension/src/constants.ts b/vscode-extensions/debug-certificate-manager-vscode-extension/src/constants.ts index 795cb65d887..e0a725e1fd8 100644 --- a/vscode-extensions/debug-certificate-manager-vscode-extension/src/constants.ts +++ b/vscode-extensions/debug-certificate-manager-vscode-extension/src/constants.ts @@ -20,5 +20,6 @@ export const CONFIG_CA_CERTIFICATE_FILENAME: string = 'caCertificateFilename'; export const CONFIG_CERTIFICATE_FILENAME: string = 'certificateFilename'; export const CONFIG_KEY_FILENAME: string = 'keyFilename'; export const CONFIG_STORE_PATH: string = 'storePath'; +export const CONFIG_HOME_DIRECTORY: string = 'homeDirectory'; export const VSCODE_COMMAND_WORKSPACE_OPEN_SETTINGS: string = 'workbench.action.openSettings'; diff --git a/vscode-extensions/debug-certificate-manager-vscode-extension/src/extension.ts b/vscode-extensions/debug-certificate-manager-vscode-extension/src/extension.ts index 3e027fa5574..90b436a69c3 100644 --- a/vscode-extensions/debug-certificate-manager-vscode-extension/src/extension.ts +++ b/vscode-extensions/debug-certificate-manager-vscode-extension/src/extension.ts @@ -206,7 +206,11 @@ export function activate(context: vscode.ExtensionContext): void { } else if (storePath.startsWith('~')) { let homeDir: string; - if (vscode.env.remoteName) { + const { homeDirectory } = getConfig(terminal); + if (homeDirectory) { + homeDir = homeDirectory; + terminal.writeLine(`Using configured home directory: ${homeDir}`); + } else if (vscode.env.remoteName) { const markerPrefix: string = '<<>>'; const markerSuffix: string = '<<>>'; const output: string = await runWorkspaceCommandAsync({ From e04764fd9e80edd47db00138af90e75e237c24d2 Mon Sep 17 00:00:00 2001 From: Bharat Middha <5100938+bmiddha@users.noreply.github.com> Date: Wed, 27 May 2026 13:42:33 -0700 Subject: [PATCH 2/2] Bump debug-certificate-manager to 0.0.8 Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --- .../debug-certificate-manager-vscode-extension/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/vscode-extensions/debug-certificate-manager-vscode-extension/package.json b/vscode-extensions/debug-certificate-manager-vscode-extension/package.json index 7ee7c4317a6..aa5924cbaaa 100644 --- a/vscode-extensions/debug-certificate-manager-vscode-extension/package.json +++ b/vscode-extensions/debug-certificate-manager-vscode-extension/package.json @@ -1,6 +1,6 @@ { "name": "debug-certificate-manager", - "version": "0.0.7", + "version": "0.0.8", "repository": { "type": "git", "url": "https://github.com/microsoft/rushstack.git",