From a44c30ab86a9d3648d42a5d02f11f6a8b733e8fe Mon Sep 17 00:00:00 2001 From: Roo Code Date: Thu, 18 Sep 2025 01:48:24 +0000 Subject: [PATCH] fix: respect custom storage path for global custom modes - Update ensureSettingsDirectoryExists() to use getSettingsDirectoryPath() - This ensures custom storage path setting is honored when loading custom modes - Also update createModeInstructions() and migrateSettings() for consistency Fixes #8122 --- src/core/prompts/instructions/create-mode.ts | 4 +++- src/utils/globalContext.ts | 8 ++++---- src/utils/migrateSettings.ts | 4 +++- 3 files changed, 10 insertions(+), 6 deletions(-) diff --git a/src/core/prompts/instructions/create-mode.ts b/src/core/prompts/instructions/create-mode.ts index ea99a66901..39721319f6 100644 --- a/src/core/prompts/instructions/create-mode.ts +++ b/src/core/prompts/instructions/create-mode.ts @@ -2,11 +2,13 @@ import * as path from "path" import * as vscode from "vscode" import { GlobalFileNames } from "../../../shared/globalFileNames" +import { getSettingsDirectoryPath } from "../../../utils/storage" export async function createModeInstructions(context: vscode.ExtensionContext | undefined): Promise { if (!context) throw new Error("Missing VSCode Extension Context") - const settingsDir = path.join(context.globalStorageUri.fsPath, "settings") + // Use getSettingsDirectoryPath to respect custom storage path setting + const settingsDir = await getSettingsDirectoryPath(context.globalStorageUri.fsPath) const customModesPath = path.join(settingsDir, GlobalFileNames.customModes) return ` diff --git a/src/utils/globalContext.ts b/src/utils/globalContext.ts index 882501850d..a40aa95a82 100644 --- a/src/utils/globalContext.ts +++ b/src/utils/globalContext.ts @@ -1,13 +1,13 @@ -import { mkdir } from "fs/promises" -import { join } from "path" import { ExtensionContext } from "vscode" +import { getSettingsDirectoryPath } from "./storage" export async function getGlobalFsPath(context: ExtensionContext): Promise { return context.globalStorageUri.fsPath } export async function ensureSettingsDirectoryExists(context: ExtensionContext): Promise { - const settingsDir = join(context.globalStorageUri.fsPath, "settings") - await mkdir(settingsDir, { recursive: true }) + // Use getSettingsDirectoryPath which respects the custom storage path setting + const settingsDir = await getSettingsDirectoryPath(context.globalStorageUri.fsPath) + // getSettingsDirectoryPath already creates the directory, so we just return the path return settingsDir } diff --git a/src/utils/migrateSettings.ts b/src/utils/migrateSettings.ts index 0ddd553610..ec8f518c31 100644 --- a/src/utils/migrateSettings.ts +++ b/src/utils/migrateSettings.ts @@ -3,6 +3,7 @@ import * as path from "path" import * as fs from "fs/promises" import { fileExistsAtPath } from "./fs" import { GlobalFileNames } from "../shared/globalFileNames" +import { getSettingsDirectoryPath } from "./storage" import * as yaml from "yaml" const deprecatedCustomModesJSONFilename = "custom_modes.json" @@ -26,7 +27,8 @@ export async function migrateSettings( ] try { - const settingsDir = path.join(context.globalStorageUri.fsPath, "settings") + // Use getSettingsDirectoryPath to respect custom storage path + const settingsDir = await getSettingsDirectoryPath(context.globalStorageUri.fsPath) // Check if settings directory exists first if (!(await fileExistsAtPath(settingsDir))) {