Skip to content

Commit 07cf5cd

Browse files
committed
Refactor planActSeparateModelSetting initial value implementation
1 parent eda2a60 commit 07cf5cd

File tree

1 file changed

+13
-14
lines changed

1 file changed

+13
-14
lines changed

src/core/webview/ClineProvider.ts

Lines changed: 13 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -139,19 +139,6 @@ export class ClineProvider implements vscode.WebviewViewProvider {
139139
cleanupLegacyCheckpoints(this.context.globalStorageUri.fsPath, this.outputChannel).catch((error) => {
140140
console.error("Failed to cleanup legacy checkpoints:", error)
141141
})
142-
143-
// Set defaults for new users
144-
;(async () => {
145-
const existingPlanActSeparateModelsSetting = await this.getGlobalState("planActSeparateModelsSetting")
146-
// initial state may be undefined or empty string, so we check for existence of expected values
147-
if (existingPlanActSeparateModelsSetting !== true && existingPlanActSeparateModelsSetting !== false) {
148-
// If api provider is not set, it's a new user. In order to get past the welcome screen, the user needs to choose an api provider and api key (logging into cline sets provider to cline). This is a good opportunity to set values for NEW users that we don't want to modify defaults for existing users. For example, existing users may already be using model switching between plan/act, but new users shouldn't be opted in to this behavior by default.
149-
const apiProvider = await this.getGlobalState("apiProvider")
150-
if (!apiProvider) {
151-
await this.updateGlobalState("planActSeparateModelsSetting", false)
152-
}
153-
}
154-
})()
155142
}
156143

157144
/*
@@ -2073,10 +2060,22 @@ Here is the project's README to help you get started:\n\n${mcpDetails.readmeCont
20732060

20742061
const mcpMarketplaceEnabled = vscode.workspace.getConfiguration("cline").get<boolean>("mcpMarketplace.enabled", true)
20752062

2063+
// Plan/Act separate models setting is a boolean indicating whether the user wants to use different models for plan and act. Existing users expect this to be enabled, while we want new users to opt in to this being disabled by default.
20762064
// On win11 state sometimes initializes as empty string instead of undefined
20772065
let planActSeparateModelsSetting: boolean | undefined = undefined
20782066
if (planActSeparateModelsSettingRaw === true || planActSeparateModelsSettingRaw === false) {
20792067
planActSeparateModelsSetting = planActSeparateModelsSettingRaw
2068+
} else {
2069+
// default to true for existing users
2070+
if (storedApiProvider) {
2071+
planActSeparateModelsSetting = true
2072+
} else {
2073+
// default to false for new users
2074+
planActSeparateModelsSetting = false
2075+
}
2076+
// this is a special case where it's a new state, but we want it to default to different values for existing and new users.
2077+
// persist so next time state is retrieved it's set to the correct value.
2078+
await this.updateGlobalState("planActSeparateModelsSetting", planActSeparateModelsSetting)
20802079
}
20812080

20822081
return {
@@ -2142,7 +2141,7 @@ Here is the project's README to help you get started:\n\n${mcpDetails.readmeCont
21422141
previousModeThinkingBudgetTokens,
21432142
mcpMarketplaceEnabled,
21442143
telemetrySetting: telemetrySetting || "unset",
2145-
planActSeparateModelsSetting: planActSeparateModelsSetting ?? true,
2144+
planActSeparateModelsSetting,
21462145
}
21472146
}
21482147

0 commit comments

Comments
 (0)