From f88ef4f0755186fcf6a4605a0a91930fb3ac621c Mon Sep 17 00:00:00 2001 From: arafatkatze Date: Mon, 7 Jul 2025 18:54:55 -0600 Subject: [PATCH] Get the chatsettings back to global --- src/core/controller/index.ts | 4 ++-- src/core/controller/state/updateSettings.ts | 15 +++++---------- src/core/storage/state-keys.ts | 8 ++------ src/core/storage/state.ts | 6 +++--- 4 files changed, 12 insertions(+), 21 deletions(-) diff --git a/src/core/controller/index.ts b/src/core/controller/index.ts index ab5e586252..4f248b1cf0 100644 --- a/src/core/controller/index.ts +++ b/src/core/controller/index.ts @@ -400,9 +400,9 @@ export class Controller { } } - // Save only non-mode properties to workspace storage + // Save only non-mode properties to global storage const { mode, ...persistentChatSettings }: { mode: string } & StoredChatSettings = chatSettings - await updateWorkspaceState(this.context, "chatSettings", persistentChatSettings) + await updateGlobalState(this.context, "chatSettings", persistentChatSettings) await this.postStateToWebview() if (this.task) { diff --git a/src/core/controller/state/updateSettings.ts b/src/core/controller/state/updateSettings.ts index 741bee583e..d20f5a7b31 100644 --- a/src/core/controller/state/updateSettings.ts +++ b/src/core/controller/state/updateSettings.ts @@ -59,22 +59,17 @@ export async function updateSettings(controller: Controller, request: UpdateSett if (request.chatSettings) { const chatSettings = convertProtoChatSettingsToChatSettings(request.chatSettings) - // Split settings: mode goes to global, other settings to workspace + // Store mode to global state if (chatSettings.mode !== undefined) { await controller.context.globalState.update("mode", chatSettings.mode) } - // Store workspace-specific settings (excluding mode) - const { mode, ...workspaceChatSettings } = chatSettings - await controller.context.workspaceState.update("chatSettings", workspaceChatSettings) + // Store chat settings (excluding mode) to global state + const { mode, ...globalChatSettings } = chatSettings + await controller.context.globalState.update("chatSettings", globalChatSettings) if (controller.task) { - // Ensure task settings include the current mode from global state - const currentMode = (await controller.context.globalState.get("mode")) as "plan" | "act" | undefined - controller.task.chatSettings = { - ...chatSettings, - mode: chatSettings.mode || currentMode || "plan", - } + controller.task.chatSettings = chatSettings } } diff --git a/src/core/storage/state-keys.ts b/src/core/storage/state-keys.ts index d165c8f55a..94493331b5 100644 --- a/src/core/storage/state-keys.ts +++ b/src/core/storage/state-keys.ts @@ -79,6 +79,7 @@ export type GlobalStateKey = | "sapAiResourceGroup" | "claudeCodePath" // Settings around plan/act and ephemeral model configuration + | "chatSettings" | "mode" // Current active model configuration (per workspace) | "apiProvider" @@ -112,9 +113,4 @@ export type GlobalStateKey = | "previousModeAwsBedrockCustomModelBaseId" | "previousModeSapAiCoreModelId" -export type LocalStateKey = - | "localClineRulesToggles" - | "localCursorRulesToggles" - | "localWindsurfRulesToggles" - | "workflowToggles" - | "chatSettings" +export type LocalStateKey = "localClineRulesToggles" | "localCursorRulesToggles" | "localWindsurfRulesToggles" | "workflowToggles" diff --git a/src/core/storage/state.ts b/src/core/storage/state.ts index d3856270b5..55c541a3c6 100644 --- a/src/core/storage/state.ts +++ b/src/core/storage/state.ts @@ -204,7 +204,7 @@ export async function getAllExtensionState(context: vscode.ExtensionContext) { const localClineRulesToggles = (await getWorkspaceState(context, "localClineRulesToggles")) as ClineRulesToggles const [ - workspaceChatSettings, + chatSettings, currentMode, storedApiProvider, apiModelId, @@ -236,7 +236,7 @@ export async function getAllExtensionState(context: vscode.ExtensionContext) { previousModeSapAiCoreModelId, sapAiCoreModelId, ] = await Promise.all([ - getWorkspaceState(context, "chatSettings") as Promise, + getGlobalState(context, "chatSettings") as Promise, getGlobalState(context, "mode") as Promise<"plan" | "act" | undefined>, getGlobalState(context, "apiProvider") as Promise, getGlobalState(context, "apiModelId") as Promise, @@ -391,7 +391,7 @@ export async function getAllExtensionState(context: vscode.ExtensionContext) { browserSettings: { ...DEFAULT_BROWSER_SETTINGS, ...browserSettings }, // this will ensure that older versions of browserSettings (e.g. before remoteBrowserEnabled was added) are merged with the default values (false for remoteBrowserEnabled) chatSettings: { ...DEFAULT_CHAT_SETTINGS, // Apply defaults first - ...(workspaceChatSettings || {}), // Spread fetched workspace chatSettings, which includes preferredLanguage, and openAIReasoningEffort + ...(chatSettings || {}), // Spread fetched global chatSettings, which includes preferredLanguage, and openAIReasoningEffort mode: currentMode || "plan", // Merge mode from global state }, userInfo,