From 0e51a1ab9b898b25ee1921c00ca1c19a0c65a46d Mon Sep 17 00:00:00 2001 From: "roomote[bot]" <219738659+roomote[bot]@users.noreply.github.com> Date: Mon, 17 Nov 2025 14:03:28 -0500 Subject: [PATCH] fix: Replace broken badgen.net badges with shields.io (#9318) Co-authored-by: Roo Code --- README.md | 6 +- locales/ca/README.md | 4 +- locales/de/README.md | 4 +- locales/es/README.md | 4 +- locales/fr/README.md | 4 +- locales/hi/README.md | 4 +- locales/id/README.md | 4 +- locales/it/README.md | 4 +- locales/ja/README.md | 4 +- locales/ko/README.md | 4 +- locales/nl/README.md | 4 +- locales/pl/README.md | 4 +- locales/pt-BR/README.md | 4 +- locales/ru/README.md | 4 +- locales/tr/README.md | 4 +- locales/vi/README.md | 4 +- locales/zh-CN/README.md | 4 +- locales/zh-TW/README.md | 4 +- src/api/providers/featherless.ts | 7 +- .../__tests__/ShadowCheckpointService.spec.ts | 152 +++++++++--------- src/services/mcp/McpHub.ts | 4 +- src/services/tree-sitter/queries/c-sharp.ts | 2 - webview-ui/src/components/chat/TaskHeader.tsx | 2 +- 23 files changed, 121 insertions(+), 120 deletions(-) diff --git a/README.md b/README.md index 12741f6a1e..9e98cd8845 100644 --- a/README.md +++ b/README.md @@ -1,7 +1,5 @@

- VS Code - Installs - Rating + VS Code Marketplace X YouTube Join Discord @@ -37,7 +35,7 @@ - [简体中文](locales/zh-CN/README.md) - [繁體中文](locales/zh-TW/README.md) - ... - + --- diff --git a/locales/ca/README.md b/locales/ca/README.md index f5c33b0c67..b8feb8a99a 100644 --- a/locales/ca/README.md +++ b/locales/ca/README.md @@ -1,5 +1,5 @@

- VS Code + VS Code Marketplace X YouTube Join Discord @@ -35,7 +35,7 @@ - [简体中文](../zh-CN/README.md) - [繁體中文](../zh-TW/README.md) - ... - + --- diff --git a/locales/de/README.md b/locales/de/README.md index e0322da970..d63dfdf955 100644 --- a/locales/de/README.md +++ b/locales/de/README.md @@ -1,5 +1,5 @@

- VS Code + VS Code Marketplace X YouTube Join Discord @@ -35,7 +35,7 @@ - [简体中文](../zh-CN/README.md) - [繁體中文](../zh-TW/README.md) - ... - + --- diff --git a/locales/es/README.md b/locales/es/README.md index 90e3af4b7d..af7666d106 100644 --- a/locales/es/README.md +++ b/locales/es/README.md @@ -1,5 +1,5 @@

- VS Code + VS Code Marketplace X YouTube Join Discord @@ -35,7 +35,7 @@ - [简体中文](../zh-CN/README.md) - [繁體中文](../zh-TW/README.md) - ... - + --- diff --git a/locales/fr/README.md b/locales/fr/README.md index 5eb2b42a57..b92535f9e7 100644 --- a/locales/fr/README.md +++ b/locales/fr/README.md @@ -1,5 +1,5 @@

- VS Code + VS Code Marketplace X YouTube Join Discord @@ -35,7 +35,7 @@ - [简体中文](../zh-CN/README.md) - [繁體中文](../zh-TW/README.md) - ... - + --- diff --git a/locales/hi/README.md b/locales/hi/README.md index a9b3153d77..4499feac72 100644 --- a/locales/hi/README.md +++ b/locales/hi/README.md @@ -1,5 +1,5 @@

- VS Code + VS Code Marketplace X YouTube Join Discord @@ -35,7 +35,7 @@ - [简体中文](../zh-CN/README.md) - [繁體中文](../zh-TW/README.md) - ... - + --- diff --git a/locales/id/README.md b/locales/id/README.md index feeff54c5e..9c46a5ca2e 100644 --- a/locales/id/README.md +++ b/locales/id/README.md @@ -1,5 +1,5 @@

- VS Code + VS Code Marketplace X YouTube Join Discord @@ -35,7 +35,7 @@ - [简体中文](../zh-CN/README.md) - [繁體中文](../zh-TW/README.md) - ... - + --- diff --git a/locales/it/README.md b/locales/it/README.md index a67dbd74f4..71bbda7c81 100644 --- a/locales/it/README.md +++ b/locales/it/README.md @@ -1,5 +1,5 @@

- VS Code + VS Code Marketplace X YouTube Join Discord @@ -35,7 +35,7 @@ - [简体中文](../zh-CN/README.md) - [繁體中文](../zh-TW/README.md) - ... - + --- diff --git a/locales/ja/README.md b/locales/ja/README.md index f17bc615fe..1bf753546a 100644 --- a/locales/ja/README.md +++ b/locales/ja/README.md @@ -1,5 +1,5 @@

- VS Code + VS Code Marketplace X YouTube Join Discord @@ -35,7 +35,7 @@ - [简体中文](../zh-CN/README.md) - [繁體中文](../zh-TW/README.md) - ... - + --- diff --git a/locales/ko/README.md b/locales/ko/README.md index 9740a09567..8b8f45ebb5 100644 --- a/locales/ko/README.md +++ b/locales/ko/README.md @@ -1,5 +1,5 @@

- VS Code + VS Code Marketplace X YouTube Join Discord @@ -35,7 +35,7 @@ - [简体中文](../zh-CN/README.md) - [繁體中文](../zh-TW/README.md) - ... - + --- diff --git a/locales/nl/README.md b/locales/nl/README.md index eb0c170148..983318aa81 100644 --- a/locales/nl/README.md +++ b/locales/nl/README.md @@ -1,5 +1,5 @@

- VS Code + VS Code Marketplace X YouTube Join Discord @@ -35,7 +35,7 @@ - [简体中文](../zh-CN/README.md) - [繁體中文](../zh-TW/README.md) - ... - + --- diff --git a/locales/pl/README.md b/locales/pl/README.md index dcc77205f1..94e23b2980 100644 --- a/locales/pl/README.md +++ b/locales/pl/README.md @@ -1,5 +1,5 @@

- VS Code + VS Code Marketplace X YouTube Join Discord @@ -35,7 +35,7 @@ - [简体中文](../zh-CN/README.md) - [繁體中文](../zh-TW/README.md) - ... - + --- diff --git a/locales/pt-BR/README.md b/locales/pt-BR/README.md index f40ddabd24..abca12ffb7 100644 --- a/locales/pt-BR/README.md +++ b/locales/pt-BR/README.md @@ -1,5 +1,5 @@

- VS Code + VS Code Marketplace X YouTube Join Discord @@ -35,7 +35,7 @@ - [简体中文](../zh-CN/README.md) - [繁體中文](../zh-TW/README.md) - ... - + --- diff --git a/locales/ru/README.md b/locales/ru/README.md index 1a596bc7b5..d2689da5cf 100644 --- a/locales/ru/README.md +++ b/locales/ru/README.md @@ -1,5 +1,5 @@

- VS Code + VS Code Marketplace X YouTube Join Discord @@ -35,7 +35,7 @@ - [简体中文](../zh-CN/README.md) - [繁體中文](../zh-TW/README.md) - ... - + --- diff --git a/locales/tr/README.md b/locales/tr/README.md index d480560e08..c095677851 100644 --- a/locales/tr/README.md +++ b/locales/tr/README.md @@ -1,5 +1,5 @@

- VS Code + VS Code Marketplace X YouTube Join Discord @@ -35,7 +35,7 @@ - [简体中文](../zh-CN/README.md) - [繁體中文](../zh-TW/README.md) - ... - + --- diff --git a/locales/vi/README.md b/locales/vi/README.md index f9eef31447..5b8100eb2b 100644 --- a/locales/vi/README.md +++ b/locales/vi/README.md @@ -1,5 +1,5 @@

- VS Code + VS Code Marketplace X YouTube Join Discord @@ -35,7 +35,7 @@ - [简体中文](../zh-CN/README.md) - [繁體中文](../zh-TW/README.md) - ... - + --- diff --git a/locales/zh-CN/README.md b/locales/zh-CN/README.md index de95ee3a82..162e787a2b 100644 --- a/locales/zh-CN/README.md +++ b/locales/zh-CN/README.md @@ -1,5 +1,5 @@

- VS Code + VS Code Marketplace X YouTube Join Discord @@ -35,7 +35,7 @@ - [简体中文](../zh-CN/README.md) - [繁體中文](../zh-TW/README.md) - ... - + --- diff --git a/locales/zh-TW/README.md b/locales/zh-TW/README.md index dfa65152a1..05d46aca68 100644 --- a/locales/zh-TW/README.md +++ b/locales/zh-TW/README.md @@ -1,5 +1,5 @@

- VS Code + VS Code Marketplace X YouTube Join Discord @@ -35,7 +35,7 @@ - [简体中文](../zh-CN/README.md) - [繁體中文](../zh-TW/README.md) - ... - + --- diff --git a/src/api/providers/featherless.ts b/src/api/providers/featherless.ts index 56d7177de7..2a985e2a87 100644 --- a/src/api/providers/featherless.ts +++ b/src/api/providers/featherless.ts @@ -1,4 +1,9 @@ -import { DEEP_SEEK_DEFAULT_TEMPERATURE, type FeatherlessModelId, featherlessDefaultModelId, featherlessModels } from "@roo-code/types" +import { + DEEP_SEEK_DEFAULT_TEMPERATURE, + type FeatherlessModelId, + featherlessDefaultModelId, + featherlessModels, +} from "@roo-code/types" import { Anthropic } from "@anthropic-ai/sdk" import OpenAI from "openai" diff --git a/src/services/checkpoints/__tests__/ShadowCheckpointService.spec.ts b/src/services/checkpoints/__tests__/ShadowCheckpointService.spec.ts index 3ed98d0625..5172a37369 100644 --- a/src/services/checkpoints/__tests__/ShadowCheckpointService.spec.ts +++ b/src/services/checkpoints/__tests__/ShadowCheckpointService.spec.ts @@ -825,93 +825,93 @@ describe.each([[RepoPerTaskCheckpointService, "RepoPerTaskCheckpointService"]])( }) it("isolates checkpoint operations from GIT_DIR environment variable", async () => { - // This test verifies the fix for the issue where GIT_DIR environment variable - // causes checkpoint commits to go to the wrong repository. - // In the real-world Dev Container scenario, GIT_DIR is set BEFORE Roo starts, - // so we need to set it BEFORE creating the checkpoint service. + // This test verifies the fix for the issue where GIT_DIR environment variable + // causes checkpoint commits to go to the wrong repository. + // In the real-world Dev Container scenario, GIT_DIR is set BEFORE Roo starts, + // so we need to set it BEFORE creating the checkpoint service. - // Create a separate git directory to simulate GIT_DIR pointing elsewhere - const externalGitDir = path.join(tmpDir, `external-git-${Date.now()}`) - await fs.mkdir(externalGitDir, { recursive: true }) - const externalGit = simpleGit(externalGitDir) - await externalGit.init() - await externalGit.addConfig("user.name", "External User") - await externalGit.addConfig("user.email", "external@example.com") + // Create a separate git directory to simulate GIT_DIR pointing elsewhere + const externalGitDir = path.join(tmpDir, `external-git-${Date.now()}`) + await fs.mkdir(externalGitDir, { recursive: true }) + const externalGit = simpleGit(externalGitDir) + await externalGit.init() + await externalGit.addConfig("user.name", "External User") + await externalGit.addConfig("user.email", "external@example.com") - // Create and commit a file in the external repo - const externalFile = path.join(externalGitDir, "external.txt") - await fs.writeFile(externalFile, "External content") - await externalGit.add(".") - await externalGit.commit("External commit") + // Create and commit a file in the external repo + const externalFile = path.join(externalGitDir, "external.txt") + await fs.writeFile(externalFile, "External content") + await externalGit.add(".") + await externalGit.commit("External commit") - // Store the original commit count in the external repo - const externalLogBefore = await externalGit.log() - const externalCommitCountBefore = externalLogBefore.total + // Store the original commit count in the external repo + const externalLogBefore = await externalGit.log() + const externalCommitCountBefore = externalLogBefore.total - // Initialize the workspace repo BEFORE setting GIT_DIR - // (In Dev Containers, the workspace repo already exists before GIT_DIR is set) - const testShadowDir = path.join(tmpDir, `shadow-git-dir-test-${Date.now()}`) - const testWorkspaceDir = path.join(tmpDir, `workspace-git-dir-test-${Date.now()}`) - const testRepo = await initWorkspaceRepo({ workspaceDir: testWorkspaceDir }) + // Initialize the workspace repo BEFORE setting GIT_DIR + // (In Dev Containers, the workspace repo already exists before GIT_DIR is set) + const testShadowDir = path.join(tmpDir, `shadow-git-dir-test-${Date.now()}`) + const testWorkspaceDir = path.join(tmpDir, `workspace-git-dir-test-${Date.now()}`) + const testRepo = await initWorkspaceRepo({ workspaceDir: testWorkspaceDir }) - // Set GIT_DIR to point to the external repository BEFORE creating the service - // This simulates the Dev Container environment where GIT_DIR is already set - const originalGitDir = process.env.GIT_DIR - const externalDotGit = path.join(externalGitDir, ".git") - process.env.GIT_DIR = externalDotGit - - try { - // Create a new checkpoint service with GIT_DIR already set - // This is the key difference - we're creating the service - // while GIT_DIR is set, just like in a real Dev Container - const testService = await klass.create({ - taskId: `test-git-dir-${Date.now()}`, - shadowDir: testShadowDir, - workspaceDir: testWorkspaceDir, - log: () => {}, - }) - await testService.initShadowGit() - - // Make a change in the workspace and save a checkpoint - const testWorkspaceFile = path.join(testWorkspaceDir, "test.txt") - await fs.writeFile(testWorkspaceFile, "Modified with GIT_DIR set") - const commit = await testService.saveCheckpoint("Checkpoint with GIT_DIR set") - expect(commit?.commit).toBeTruthy() - - // Verify the checkpoint was saved in the shadow repo, not the external repo - // Temporarily clear GIT_DIR to check the external repo - delete process.env.GIT_DIR - const externalGitCheck = simpleGit(externalGitDir) - const externalLogAfter = await externalGitCheck.log() - const externalCommitCountAfter = externalLogAfter.total - // Restore GIT_DIR + // Set GIT_DIR to point to the external repository BEFORE creating the service + // This simulates the Dev Container environment where GIT_DIR is already set + const originalGitDir = process.env.GIT_DIR + const externalDotGit = path.join(externalGitDir, ".git") process.env.GIT_DIR = externalDotGit - // External repo should have the same number of commits (no new commits) - expect(externalCommitCountAfter).toBe(externalCommitCountBefore) + try { + // Create a new checkpoint service with GIT_DIR already set + // This is the key difference - we're creating the service + // while GIT_DIR is set, just like in a real Dev Container + const testService = await klass.create({ + taskId: `test-git-dir-${Date.now()}`, + shadowDir: testShadowDir, + workspaceDir: testWorkspaceDir, + log: () => {}, + }) + await testService.initShadowGit() - // Verify the checkpoint is accessible in the shadow repo - const diff = await testService.getDiff({ to: commit!.commit }) - expect(diff).toHaveLength(1) - expect(diff[0].paths.relative).toBe("test.txt") - expect(diff[0].content.after).toBe("Modified with GIT_DIR set") + // Make a change in the workspace and save a checkpoint + const testWorkspaceFile = path.join(testWorkspaceDir, "test.txt") + await fs.writeFile(testWorkspaceFile, "Modified with GIT_DIR set") + const commit = await testService.saveCheckpoint("Checkpoint with GIT_DIR set") + expect(commit?.commit).toBeTruthy() - // Verify we can restore the checkpoint - await fs.writeFile(testWorkspaceFile, "Another modification") - await testService.restoreCheckpoint(commit!.commit) - expect(await fs.readFile(testWorkspaceFile, "utf-8")).toBe("Modified with GIT_DIR set") - } finally { - // Restore original GIT_DIR - if (originalGitDir !== undefined) { - process.env.GIT_DIR = originalGitDir - } else { + // Verify the checkpoint was saved in the shadow repo, not the external repo + // Temporarily clear GIT_DIR to check the external repo delete process.env.GIT_DIR - } + const externalGitCheck = simpleGit(externalGitDir) + const externalLogAfter = await externalGitCheck.log() + const externalCommitCountAfter = externalLogAfter.total + // Restore GIT_DIR + process.env.GIT_DIR = externalDotGit - // Clean up external git directory - await fs.rm(externalGitDir, { recursive: true, force: true }) - } - }) + // External repo should have the same number of commits (no new commits) + expect(externalCommitCountAfter).toBe(externalCommitCountBefore) + + // Verify the checkpoint is accessible in the shadow repo + const diff = await testService.getDiff({ to: commit!.commit }) + expect(diff).toHaveLength(1) + expect(diff[0].paths.relative).toBe("test.txt") + expect(diff[0].content.after).toBe("Modified with GIT_DIR set") + + // Verify we can restore the checkpoint + await fs.writeFile(testWorkspaceFile, "Another modification") + await testService.restoreCheckpoint(commit!.commit) + expect(await fs.readFile(testWorkspaceFile, "utf-8")).toBe("Modified with GIT_DIR set") + } finally { + // Restore original GIT_DIR + if (originalGitDir !== undefined) { + process.env.GIT_DIR = originalGitDir + } else { + delete process.env.GIT_DIR + } + + // Clean up external git directory + await fs.rm(externalGitDir, { recursive: true, force: true }) + } + }) }) }, ) diff --git a/src/services/mcp/McpHub.ts b/src/services/mcp/McpHub.ts index f5ddf3e57b..2db26332fa 100644 --- a/src/services/mcp/McpHub.ts +++ b/src/services/mcp/McpHub.ts @@ -1378,8 +1378,8 @@ export class McpHub { await this.deleteConnection(serverName, serverSource) // Re-add as a disabled connection // Re-read config from file to get updated disabled state - const updatedConfig = await this.readServerConfigFromFile(serverName, serverSource) - await this.connectToServer(serverName, updatedConfig, serverSource) + const updatedConfig = await this.readServerConfigFromFile(serverName, serverSource) + await this.connectToServer(serverName, updatedConfig, serverSource) } else if (!disabled && connection.server.status === "disconnected") { // If enabling a disabled server, connect it // Re-read config from file to get updated disabled state diff --git a/src/services/tree-sitter/queries/c-sharp.ts b/src/services/tree-sitter/queries/c-sharp.ts index 350c24fff6..46f9651b36 100644 --- a/src/services/tree-sitter/queries/c-sharp.ts +++ b/src/services/tree-sitter/queries/c-sharp.ts @@ -63,5 +63,3 @@ export default ` ; LINQ expressions (query_expression) @definition.linq_expression ` - - \ No newline at end of file diff --git a/webview-ui/src/components/chat/TaskHeader.tsx b/webview-ui/src/components/chat/TaskHeader.tsx index 242db5bb91..b06d6e64f5 100644 --- a/webview-ui/src/components/chat/TaskHeader.tsx +++ b/webview-ui/src/components/chat/TaskHeader.tsx @@ -265,7 +265,7 @@ const TaskHeader = ({ {t("chat:task.contextWindow")} -

+