diff --git a/.changeset/popular-teachers-brush.md b/.changeset/popular-teachers-brush.md new file mode 100644 index 0000000000..57ad81f797 --- /dev/null +++ b/.changeset/popular-teachers-brush.md @@ -0,0 +1,5 @@ +--- +"roo-cline": patch +--- + +Remove the experimental unified diff diff --git a/evals/packages/types/src/roo-code-defaults.ts b/evals/packages/types/src/roo-code-defaults.ts index 855b0ca231..dc872ee13a 100644 --- a/evals/packages/types/src/roo-code-defaults.ts +++ b/evals/packages/types/src/roo-code-defaults.ts @@ -47,9 +47,8 @@ export const rooCodeDefaults: RooCodeSettings = { diffEnabled: true, fuzzyMatchThreshold: 1.0, experiments: { - experimentalDiffStrategy: false, // unified diff - multi_search_and_replace: false, // multi-line search and replace - search_and_replace: true, // single-line search and replace + multi_search_and_replace: false, + search_and_replace: true, insert_content: false, powerSteering: false, }, diff --git a/evals/packages/types/src/roo-code.ts b/evals/packages/types/src/roo-code.ts index 732d5af815..2106d44094 100644 --- a/evals/packages/types/src/roo-code.ts +++ b/evals/packages/types/src/roo-code.ts @@ -271,7 +271,6 @@ export type CustomSupportPrompts = z.infer */ export const experimentIds = [ - "experimentalDiffStrategy", "search_and_replace", "insert_content", "powerSteering", @@ -287,7 +286,6 @@ export type ExperimentId = z.infer */ const experimentsSchema = z.object({ - experimentalDiffStrategy: z.boolean(), search_and_replace: z.boolean(), insert_content: z.boolean(), powerSteering: z.boolean(), diff --git a/src/core/diff/DiffStrategy.ts b/src/core/diff/DiffStrategy.ts index eacf0f1f22..abd89ffb67 100644 --- a/src/core/diff/DiffStrategy.ts +++ b/src/core/diff/DiffStrategy.ts @@ -20,6 +20,4 @@ type GetDiffStrategyOptions = { } export const getDiffStrategy = ({ fuzzyMatchThreshold, experiments }: GetDiffStrategyOptions): DiffStrategy => - experiments[EXPERIMENT_IDS.DIFF_STRATEGY_UNIFIED] - ? new NewUnifiedDiffStrategy(fuzzyMatchThreshold) - : new MultiSearchReplaceDiffStrategy(fuzzyMatchThreshold) + new MultiSearchReplaceDiffStrategy(fuzzyMatchThreshold) diff --git a/src/core/webview/__tests__/ClineProvider.test.ts b/src/core/webview/__tests__/ClineProvider.test.ts index 9022427075..9f89a01e9f 100644 --- a/src/core/webview/__tests__/ClineProvider.test.ts +++ b/src/core/webview/__tests__/ClineProvider.test.ts @@ -1190,7 +1190,7 @@ describe("ClineProvider", () => { }), })) - // Mock getState to return experimentalDiffStrategy, diffEnabled and fuzzyMatchThreshold + // Mock getState to return diffEnabled and fuzzyMatchThreshold jest.spyOn(provider, "getState").mockResolvedValue({ apiConfiguration: { apiProvider: "openrouter", @@ -1202,7 +1202,6 @@ describe("ClineProvider", () => { enableMcpServerCreation: true, mcpEnabled: false, browserViewportSize: "900x600", - experimentalDiffStrategy: true, diffEnabled: true, fuzzyMatchThreshold: 0.8, experiments: experimentDefault, @@ -1259,7 +1258,6 @@ describe("ClineProvider", () => { mode: "code", mcpEnabled: false, browserViewportSize: "900x600", - experimentalDiffStrategy: true, diffEnabled: false, fuzzyMatchThreshold: 0.8, experiments: experimentDefault, diff --git a/src/core/webview/webviewMessageHandler.ts b/src/core/webview/webviewMessageHandler.ts index 7e3c67593d..43cab5b60b 100644 --- a/src/core/webview/webviewMessageHandler.ts +++ b/src/core/webview/webviewMessageHandler.ts @@ -1253,13 +1253,6 @@ export const webviewMessageHandler = async (provider: ClineProvider, message: We await provider.updateGlobalState("experiments", updatedExperiments) - const currentCline = provider.getCurrentCline() - - // Update diffStrategy in current Cline instance if it exists. - if (message.values[EXPERIMENT_IDS.DIFF_STRATEGY_UNIFIED] !== undefined && currentCline) { - await currentCline.updateDiffStrategy(updatedExperiments) - } - await provider.postStateToWebview() break } diff --git a/src/exports/roo-code.d.ts b/src/exports/roo-code.d.ts index aa9607a012..c75db2ab2f 100644 --- a/src/exports/roo-code.d.ts +++ b/src/exports/roo-code.d.ts @@ -253,7 +253,6 @@ type GlobalSettings = { experiments?: | { search_and_replace: boolean - experimentalDiffStrategy: boolean insert_content: boolean powerSteering: boolean } diff --git a/src/exports/types.ts b/src/exports/types.ts index 794c120904..64e4a1eb29 100644 --- a/src/exports/types.ts +++ b/src/exports/types.ts @@ -256,7 +256,6 @@ type GlobalSettings = { experiments?: | { search_and_replace: boolean - experimentalDiffStrategy: boolean insert_content: boolean powerSteering: boolean } diff --git a/src/schemas/index.ts b/src/schemas/index.ts index a339e9bb54..b1a24b4722 100644 --- a/src/schemas/index.ts +++ b/src/schemas/index.ts @@ -274,12 +274,7 @@ export type CustomSupportPrompts = z.infer * ExperimentId */ -export const experimentIds = [ - "search_and_replace", - "experimentalDiffStrategy", - "insert_content", - "powerSteering", -] as const +export const experimentIds = ["search_and_replace", "insert_content", "powerSteering"] as const export const experimentIdsSchema = z.enum(experimentIds) @@ -291,7 +286,6 @@ export type ExperimentId = z.infer const experimentsSchema = z.object({ search_and_replace: z.boolean(), - experimentalDiffStrategy: z.boolean(), insert_content: z.boolean(), powerSteering: z.boolean(), }) diff --git a/src/shared/__tests__/experiments.test.ts b/src/shared/__tests__/experiments.test.ts index 4214f8e390..ff2f4fd040 100644 --- a/src/shared/__tests__/experiments.test.ts +++ b/src/shared/__tests__/experiments.test.ts @@ -14,7 +14,6 @@ describe("experiments", () => { it("returns false when experiment is not enabled", () => { const experiments: Record = { powerSteering: false, - experimentalDiffStrategy: false, search_and_replace: false, insert_content: false, } @@ -24,7 +23,6 @@ describe("experiments", () => { it("returns true when experiment is enabled", () => { const experiments: Record = { powerSteering: true, - experimentalDiffStrategy: false, search_and_replace: false, insert_content: false, } @@ -33,7 +31,6 @@ describe("experiments", () => { it("returns false when experiment is not present", () => { const experiments: Record = { - experimentalDiffStrategy: false, search_and_replace: false, insert_content: false, powerSteering: false, diff --git a/src/shared/experiments.ts b/src/shared/experiments.ts index c6f28551c3..aeaefa2c94 100644 --- a/src/shared/experiments.ts +++ b/src/shared/experiments.ts @@ -4,7 +4,6 @@ import { AssertEqual, Equals, Keys, Values } from "../utils/type-fu" export type { ExperimentId } export const EXPERIMENT_IDS = { - DIFF_STRATEGY_UNIFIED: "experimentalDiffStrategy", INSERT_BLOCK: "insert_content", SEARCH_AND_REPLACE: "search_and_replace", POWER_STEERING: "powerSteering", @@ -19,7 +18,6 @@ interface ExperimentConfig { } export const experimentConfigsMap: Record = { - DIFF_STRATEGY_UNIFIED: { enabled: false }, INSERT_BLOCK: { enabled: false }, SEARCH_AND_REPLACE: { enabled: false }, POWER_STEERING: { enabled: false }, diff --git a/webview-ui/src/components/settings/AdvancedSettings.tsx b/webview-ui/src/components/settings/AdvancedSettings.tsx index 36e0a8f380..7942ca0f56 100644 --- a/webview-ui/src/components/settings/AdvancedSettings.tsx +++ b/webview-ui/src/components/settings/AdvancedSettings.tsx @@ -3,12 +3,10 @@ import { useAppTranslation } from "@/i18n/TranslationContext" import { VSCodeCheckbox } from "@vscode/webview-ui-toolkit/react" import { Cog } from "lucide-react" -import { EXPERIMENT_IDS, ExperimentId } from "../../../../src/shared/experiments" - import { cn } from "@/lib/utils" import { Slider } from "@/components/ui" -import { SetCachedStateField, SetExperimentEnabled } from "./types" +import { SetCachedStateField } from "./types" import { SectionHeader } from "./SectionHeader" import { Section } from "./Section" @@ -17,16 +15,12 @@ type AdvancedSettingsProps = HTMLAttributes & { diffEnabled?: boolean fuzzyMatchThreshold?: number setCachedStateField: SetCachedStateField<"rateLimitSeconds" | "diffEnabled" | "fuzzyMatchThreshold"> - experiments: Record - setExperimentEnabled: SetExperimentEnabled } export const AdvancedSettings = ({ rateLimitSeconds, diffEnabled, fuzzyMatchThreshold, setCachedStateField, - experiments, - setExperimentEnabled, className, ...props }: AdvancedSettingsProps) => { @@ -66,10 +60,6 @@ export const AdvancedSettings = ({ checked={diffEnabled} onChange={(e: any) => { setCachedStateField("diffEnabled", e.target.checked) - if (!e.target.checked) { - // Reset experimental strategies when diffs are disabled. - setExperimentEnabled(EXPERIMENT_IDS.DIFF_STRATEGY_UNIFIED, false) - } }}> {t("settings:advanced.diff.label")} diff --git a/webview-ui/src/components/settings/SettingsView.tsx b/webview-ui/src/components/settings/SettingsView.tsx index 2dde325ba9..2ba1c348e3 100644 --- a/webview-ui/src/components/settings/SettingsView.tsx +++ b/webview-ui/src/components/settings/SettingsView.tsx @@ -482,8 +482,6 @@ const SettingsView = forwardRef(({ onDone }, diffEnabled={diffEnabled} fuzzyMatchThreshold={fuzzyMatchThreshold} setCachedStateField={setCachedStateField} - setExperimentEnabled={setExperimentEnabled} - experiments={experiments} /> diff --git a/webview-ui/src/context/__tests__/ExtensionStateContext.test.tsx b/webview-ui/src/context/__tests__/ExtensionStateContext.test.tsx index 665bef258d..c4f1d163ad 100644 --- a/webview-ui/src/context/__tests__/ExtensionStateContext.test.tsx +++ b/webview-ui/src/context/__tests__/ExtensionStateContext.test.tsx @@ -210,7 +210,6 @@ describe("mergeExtensionState", () => { ...baseState, apiConfiguration: { modelMaxTokens: 1234, modelMaxThinkingTokens: 123 }, experiments: { - experimentalDiffStrategy: true, search_and_replace: true, insert_content: true, } as Record, @@ -232,7 +231,6 @@ describe("mergeExtensionState", () => { }) expect(result.experiments).toEqual({ - experimentalDiffStrategy: true, search_and_replace: true, insert_content: true, powerSteering: true,