diff --git a/src/core/Cline.ts b/src/core/Cline.ts index 58be39a11b..83cdabd466 100644 --- a/src/core/Cline.ts +++ b/src/core/Cline.ts @@ -143,7 +143,7 @@ export class Cline { this.fuzzyMatchThreshold = fuzzyMatchThreshold ?? 1.0 this.providerRef = new WeakRef(provider) this.diffViewProvider = new DiffViewProvider(cwd) - this.checkpointsEnabled = process.platform !== "win32" && !!enableCheckpoints + this.checkpointsEnabled = enableCheckpoints ?? false if (historyItem) { this.taskId = historyItem.id @@ -3240,7 +3240,6 @@ export class Cline { this.checkpointService = await CheckpointService.create({ taskId: this.taskId, baseDir: vscode.workspace.workspaceFolders?.map((folder) => folder.uri.fsPath).at(0) ?? "", - log: (message) => this.providerRef.deref()?.log(message), }) } diff --git a/src/services/checkpoints/CheckpointService.ts b/src/services/checkpoints/CheckpointService.ts index 871179d500..bf5a2d90d5 100644 --- a/src/services/checkpoints/CheckpointService.ts +++ b/src/services/checkpoints/CheckpointService.ts @@ -2,6 +2,7 @@ import fs from "fs/promises" import { existsSync } from "fs" import path from "path" +import debug from "debug" import simpleGit, { SimpleGit, CleanOptions } from "simple-git" export type CheckpointServiceOptions = { @@ -312,11 +313,15 @@ export class CheckpointService { } public static async create({ taskId, git, baseDir, log = console.log }: CheckpointServiceOptions) { - if (process.platform === "win32") { - throw new Error("Checkpoints are not supported on Windows.") - } - - git = git || simpleGit({ baseDir }) + git = + git || + simpleGit({ + baseDir, + binary: "git", + maxConcurrentProcesses: 1, + config: [], + trimmed: true, + }) const version = await git.version() diff --git a/src/services/checkpoints/__tests__/CheckpointService.test.ts b/src/services/checkpoints/__tests__/CheckpointService.test.ts index caa0952fa1..9165da332a 100644 --- a/src/services/checkpoints/__tests__/CheckpointService.test.ts +++ b/src/services/checkpoints/__tests__/CheckpointService.test.ts @@ -14,7 +14,6 @@ describe("CheckpointService", () => { let git: SimpleGit let testFile: string let service: CheckpointService - let originalPlatform: string const initRepo = async ({ baseDir, @@ -49,19 +48,6 @@ describe("CheckpointService", () => { return { git, testFile } } - beforeAll(() => { - originalPlatform = process.platform - Object.defineProperty(process, "platform", { - value: "darwin", - }) - }) - - afterAll(() => { - Object.defineProperty(process, "platform", { - value: originalPlatform, - }) - }) - beforeEach(async () => { const baseDir = path.join(os.tmpdir(), `checkpoint-service-test-${Date.now()}`) const repo = await initRepo({ baseDir }) diff --git a/webview-ui/src/components/settings/SettingsView.tsx b/webview-ui/src/components/settings/SettingsView.tsx index c60bbfd136..307ac250da 100644 --- a/webview-ui/src/components/settings/SettingsView.tsx +++ b/webview-ui/src/components/settings/SettingsView.tsx @@ -701,29 +701,27 @@ const SettingsView = ({ onDone }: SettingsViewProps) => { )} - {process.platform !== "win32" && ( -
+
+ When enabled, Roo will save a checkpoint whenever a file in the workspace is modified, + added or deleted, letting you easily revert to a previous state. +
+