Skip to content

Commit 8de7fff

Browse files
committed
Merge branch 'main' of github.com:RooVetGit/Roo-Code into refactor/general-ui-improvements
2 parents 60f09e1 + 14afaca commit 8de7fff

File tree

320 files changed

+17172
-9620
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

320 files changed

+17172
-9620
lines changed

.roomodes

Lines changed: 15 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
"customModes": [
33
{
44
"slug": "test",
5-
"name": "Test",
5+
"name": "🧪 Test",
66
"roleDefinition": "You are Roo, a Jest testing specialist with deep expertise in:\n- Writing and maintaining Jest test suites\n- Test-driven development (TDD) practices\n- Mocking and stubbing with Jest\n- Integration testing strategies\n- TypeScript testing patterns\n- Code coverage analysis\n- Test performance optimization\n\nYour focus is on maintaining high test quality and coverage across the codebase, working primarily with:\n- Test files in __tests__ directories\n- Mock implementations in __mocks__\n- Test utilities and helpers\n- Jest configuration and setup\n\nYou ensure tests are:\n- Well-structured and maintainable\n- Following Jest best practices\n- Properly typed with TypeScript\n- Providing meaningful coverage\n- Using appropriate mocking strategies",
77
"groups": [
88
"read",
@@ -20,7 +20,7 @@
2020
},
2121
{
2222
"slug": "translate",
23-
"name": "Translate",
23+
"name": "🌐 Translate",
2424
"roleDefinition": "You are Roo, a linguistic specialist focused on translating and managing localization files. Your responsibility is to help maintain and update translation files for the application, ensuring consistency and accuracy across all language resources.",
2525
"groups": [
2626
"read",
@@ -34,6 +34,19 @@
3434
]
3535
],
3636
"source": "project"
37+
},
38+
{
39+
"slug": "release-engineer",
40+
"name": "🚀 Release Engineer",
41+
"roleDefinition": "You are Roo, a release engineer specialized in automating the release process for software projects. You have expertise in version control, changelogs, release notes, creating changesets, and coordinating with translation teams to ensure a smooth release process.",
42+
"customInstructions": "When preparing a release:\n1. Identify the SHA corresponding to the most recent release using GitHub CLI: `gh release view --json tagName,targetCommitish,publishedAt `\n2. Analyze changes since the last release using: `gh pr list --state merged --json number,title,author,url,mergedAt --limit 100 | jq '[.[] | select(.mergedAt > \"TIMESTAMP\") | {number, title, author: .author.login, url, mergedAt}]'`\n3. Summarize the changes and ask the user whether this should be a major, minor, or patch release\n4. Create a changeset in .changeset/v[version].md instead of directly modifying package.json. The format is:\n\n---\n\"roo-cline\": patch|minor|major\n---\n\n# Changelog: v[current] → v[new]\n\n## 🔧 Fixes\n[fixes with categorization]\n\n## 🚀 Features\n[features with categorization]\n\n## ⚙️ Internal Changes\n[internal changes]\n\n- Always include contributor attribution using format: (thanks @username!)\n- Provide brief descriptions under each item to explain the change\n\n5. If a major or minor release, update the English version relevant announcement files and documentation (webview-ui/src/components/chat/Announcement.tsx, README.md, and the `latestAnnouncementId` in src/core/webview/ClineProvider.ts)\n6. Ask the user to confirm the English version\n7. Use the new_task tool to create a subtask in `translate` mode with detailed instructions of which content needs to be translated into all supported languages",
43+
"groups": [
44+
"read",
45+
"edit",
46+
"command",
47+
"browser"
48+
],
49+
"source": "project"
3750
}
3851
]
3952
}

CHANGELOG.md

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,30 @@
11
# Roo Code Changelog
22

3+
## [3.15.1] - 2025-04-30
4+
5+
- Capture stderr in execa-spawned processes
6+
- Play sound only when action needed from the user (thanks @olearycrew)
7+
- Make retries respect the global auto approve checkbox
8+
- Fix a selection mode bug in the history view (thanks @jr)
9+
10+
## 3.15.0 - 2025-04-30
11+
12+
- Add prompt caching to the Google Vertex provider (thanks @ashktn)
13+
- Add a fallback mechanism for executing terminal commands if VSCode terminal shell integration fails
14+
- Improve the UI/UX of code snippets in the chat (thanks @KJ7LNW)
15+
- Add a reasoning effort setting for the OpenAI Compatible provider (thanks @mr-ryan-james)
16+
- Allow terminal commands to be stopped directly from the chat UI
17+
- Adjust chat view padding to accommodate small width layouts (thanks @zhangtony239)
18+
- Fix file mentions for filenames containing spaces
19+
- Improve the auto-approve toggle buttons for some high-contrast VSCode themes
20+
- Offload expensive count token operations to a web worker (thanks @samhvw8)
21+
- Improve support for mult-root workspaces (thanks @snoyiatk)
22+
- Simplify and streamline Roo Code's quick actions
23+
- Allow Roo Code settings to be imported from the welcome screen (thanks @julionav)
24+
- Remove unused types (thanks @wkordalski)
25+
- Improve the performance of mode switching (thanks @dlab-anton)
26+
- Fix importing & exporting of custom modes (thanks @julionav)
27+
328
## [3.14.3] - 2025-04-25
429

530
- Add Boomerang Orchestrator as a built-in mode

README.md

Lines changed: 30 additions & 30 deletions
Large diffs are not rendered by default.

e2e/src/suite/subtasks.test.ts

Lines changed: 8 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ import type { ClineMessage } from "../../../src/exports/roo-code"
44

55
import { sleep, waitFor, waitUntilCompleted } from "./utils"
66

7-
suite("Roo Code Subtasks", () => {
7+
suite.skip("Roo Code Subtasks", () => {
88
test("Should handle subtask cancellation and resumption correctly", async () => {
99
const api = globalThis.api
1010

@@ -17,18 +17,17 @@ suite("Roo Code Subtasks", () => {
1717
}
1818
})
1919

20-
await api.setConfiguration({
21-
mode: "ask",
22-
alwaysAllowModeSwitch: true,
23-
alwaysAllowSubtasks: true,
24-
autoApprovalEnabled: true,
25-
enableCheckpoints: false,
26-
})
27-
2820
const childPrompt = "You are a calculator. Respond only with numbers. What is the square root of 9?"
2921

3022
// Start a parent task that will create a subtask.
3123
const parentTaskId = await api.startNewTask({
24+
configuration: {
25+
mode: "ask",
26+
alwaysAllowModeSwitch: true,
27+
alwaysAllowSubtasks: true,
28+
autoApprovalEnabled: true,
29+
enableCheckpoints: false,
30+
},
3231
text:
3332
"You are the parent task. " +
3433
`Create a subtask by using the new_task tool with the message '${childPrompt}'.` +

esbuild.js

Lines changed: 37 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -32,41 +32,33 @@ const copyWasmFiles = {
3232
const nodeModulesDir = path.join(__dirname, "node_modules")
3333
const distDir = path.join(__dirname, "dist")
3434

35-
// tiktoken
35+
// tiktoken WASM file
3636
fs.copyFileSync(
3737
path.join(nodeModulesDir, "tiktoken", "tiktoken_bg.wasm"),
3838
path.join(distDir, "tiktoken_bg.wasm"),
3939
)
4040

41-
// tree-sitter WASM
41+
// Main tree-sitter WASM file
4242
fs.copyFileSync(
4343
path.join(nodeModulesDir, "web-tree-sitter", "tree-sitter.wasm"),
4444
path.join(distDir, "tree-sitter.wasm"),
4545
)
4646

47-
// language-specific tree-sitter WASMs
48-
const languageWasmDir = path.join(nodeModulesDir, "tree-sitter-wasms", "out")
49-
const languages = [
50-
"typescript",
51-
"tsx",
52-
"python",
53-
"rust",
54-
"javascript",
55-
"go",
56-
"cpp",
57-
"c",
58-
"c_sharp",
59-
"ruby",
60-
"java",
61-
"php",
62-
"swift",
63-
"kotlin",
64-
]
65-
66-
languages.forEach((lang) => {
67-
const filename = `tree-sitter-${lang}.wasm`
68-
fs.copyFileSync(path.join(languageWasmDir, filename), path.join(distDir, filename))
69-
})
47+
// Copy language-specific WASM files
48+
const languageWasmDir = path.join(__dirname, "node_modules", "tree-sitter-wasms", "out")
49+
50+
// Dynamically read all WASM files from the directory instead of using a hardcoded list
51+
if (fs.existsSync(languageWasmDir)) {
52+
const wasmFiles = fs.readdirSync(languageWasmDir).filter((file) => file.endsWith(".wasm"))
53+
54+
console.log(`Copying ${wasmFiles.length} tree-sitter WASM files to dist directory`)
55+
56+
wasmFiles.forEach((filename) => {
57+
fs.copyFileSync(path.join(languageWasmDir, filename), path.join(distDir, filename))
58+
})
59+
} else {
60+
console.warn(`Tree-sitter WASM directory not found: ${languageWasmDir}`)
61+
}
7062
})
7163
},
7264
}
@@ -181,7 +173,7 @@ const extensionConfig = {
181173
{
182174
name: "alias-plugin",
183175
setup(build) {
184-
build.onResolve({ filter: /^pkce-challenge$/ }, (args) => {
176+
build.onResolve({ filter: /^pkce-challenge$/ }, (_args) => {
185177
return { path: require.resolve("pkce-challenge/dist/index.browser.js") }
186178
})
187179
},
@@ -195,22 +187,31 @@ const extensionConfig = {
195187
external: ["vscode"],
196188
}
197189

190+
const workerConfig = {
191+
bundle: true,
192+
minify: production,
193+
sourcemap: !production,
194+
logLevel: "silent",
195+
entryPoints: ["src/workers/countTokens.ts"],
196+
format: "cjs",
197+
sourcesContent: false,
198+
platform: "node",
199+
outdir: "dist/workers",
200+
}
201+
198202
async function main() {
199-
const extensionCtx = await esbuild.context(extensionConfig)
203+
const [extensionCtx, workerCtx] = await Promise.all([
204+
esbuild.context(extensionConfig),
205+
esbuild.context(workerConfig),
206+
])
200207

201208
if (watch) {
202-
// Start the esbuild watcher
203-
await extensionCtx.watch()
204-
205-
// Copy and watch locale files
206-
console.log("Copying locale files initially...")
209+
await Promise.all([extensionCtx.watch(), workerCtx.watch()])
207210
copyLocaleFiles()
208-
209-
// Set up the watcher for locale files
210211
setupLocaleWatcher()
211212
} else {
212-
await extensionCtx.rebuild()
213-
await extensionCtx.dispose()
213+
await Promise.all([extensionCtx.rebuild(), workerCtx.rebuild()])
214+
await Promise.all([extensionCtx.dispose(), workerCtx.dispose()])
214215
}
215216
}
216217

evals/packages/types/src/roo-code.ts

Lines changed: 1 addition & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -706,7 +706,6 @@ export const clineAsks = [
706706
"mistake_limit_reached",
707707
"browser_action_launch",
708708
"use_mcp_server",
709-
"finishTask",
710709
] as const
711710

712711
export const clineAskSchema = z.enum(clineAsks)
@@ -716,7 +715,6 @@ export type ClineAsk = z.infer<typeof clineAskSchema>
716715
// ClineSay
717716

718717
export const clineSays = [
719-
"task",
720718
"error",
721719
"api_req_started",
722720
"api_req_finished",
@@ -729,15 +727,12 @@ export const clineSays = [
729727
"user_feedback",
730728
"user_feedback_diff",
731729
"command_output",
732-
"tool",
733730
"shell_integration_warning",
734731
"browser_action",
735732
"browser_action_result",
736-
"command",
737733
"mcp_server_request_started",
738734
"mcp_server_response",
739-
"new_task_started",
740-
"new_task",
735+
"subtask_result",
741736
"checkpoint_saved",
742737
"rooignore_error",
743738
"diff_error",

knip.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@
1717
"evals/**",
1818
"src/activate/**",
1919
"src/exports/**",
20+
"src/workers/**",
2021
"src/schemas/ipc.ts",
2122
"src/extension.ts",
2223
"scripts/**"

0 commit comments

Comments
 (0)