Skip to content

Commit 60c2cde

Browse files
committed
Merge branch 'main' of github.com:RooCodeInc/Roo-Code into fix/codebase-search-current-directory
2 parents 85cec2e + 4e8b174 commit 60c2cde

File tree

211 files changed

+12228
-7099
lines changed

Some content is hidden

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

211 files changed

+12228
-7099
lines changed

.github/workflows/update-contributors.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ jobs:
2424
- name: Update contributors and format
2525
run: |
2626
pnpm update-contributors
27-
npx prettier --write README.md
27+
npx prettier --write README.md locales/*/README.md
2828
if git diff --quiet; then echo "changes=false" >> $GITHUB_OUTPUT; else echo "changes=true" >> $GITHUB_OUTPUT; fi
2929
id: check-changes
3030
env:

.github/workflows/website-deploy.yml

Lines changed: 6 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ on:
55
branches:
66
- main
77
paths:
8-
- "apps/web-roo-code/**"
8+
- 'apps/web-roo-code/**'
99
workflow_dispatch:
1010

1111
env:
@@ -21,11 +21,11 @@ jobs:
2121
- name: Check if VERCEL_TOKEN exists
2222
id: check
2323
run: |
24-
if [ -n "${{ secrets.VERCEL_TOKEN }}" ]; then
25-
echo "has-vercel-token=true" >> $GITHUB_OUTPUT
26-
else
27-
echo "has-vercel-token=false" >> $GITHUB_OUTPUT
28-
fi
24+
if [ -n "${{ secrets.VERCEL_TOKEN }}" ]; then
25+
echo "has-vercel-token=true" >> $GITHUB_OUTPUT
26+
else
27+
echo "has-vercel-token=false" >> $GITHUB_OUTPUT
28+
fi
2929
3030
deploy:
3131
runs-on: ubuntu-latest
@@ -36,11 +36,6 @@ jobs:
3636
uses: actions/checkout@v4
3737
- name: Setup Node.js and pnpm
3838
uses: ./.github/actions/setup-node-pnpm
39-
- name: Migrate evals database
40-
run: pnpm db:migrate:production
41-
working-directory: packages/evals
42-
env:
43-
DATABASE_URL: ${{ secrets.EVALS_DATABASE_URL }}
4439
- name: Install Vercel CLI
4540
run: npm install --global vercel@canary
4641
- name: Pull Vercel Environment Information

CHANGELOG.md

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

3+
## [3.25.6] - 2025-08-01
4+
5+
- Set horizon-beta model max tokens to 32k for OpenRouter (requested by @hannesrudolph, PR by @app/roomote)
6+
- Add support for syncing provider profiles from the cloud
7+
8+
## [3.25.5] - 2025-08-01
9+
10+
- Fix: Improve Claude Code ENOENT error handling with installation guidance (#5866 by @JamieJ1, PR by @app/roomote)
11+
- Fix: LM Studio model context length (#5075 by @Angular-Angel, PR by @pwilkin)
12+
- Fix: VB.NET indexing by implementing fallback chunking system (#6420 by @JensvanZutphen, PR by @daniel-lxs)
13+
- Add auto-approved cost limits (thanks @hassoncs!)
14+
- Add Cerebras as a provider (thanks @kevint-cerebras!)
15+
- Add Qwen 3 Coder from Cerebras (thanks @kevint-cerebras!)
16+
- Fix: Handle Qdrant deletion errors gracefully to prevent indexing interruption (thanks @daniel-lxs!)
17+
- Fix: Restore message sending when clicking save button (thanks @daniel-lxs!)
18+
- Fix: Linter not applied to locales/\*/README.md (thanks @liwilliam2021!)
19+
- Handle more variations of chaining and subshell command validation
20+
- More tolerant search/replace match
21+
- Clean up the auto-approve UI (thanks @mrubens!)
22+
- Skip interpolation for non-existent slash commands (thanks @app/roomote!)
23+
324
## [3.25.4] - 2025-07-30
425

526
- feat: add SambaNova provider integration (#6077 by @snova-jorgep, PR by @snova-jorgep)

README.md

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

apps/vscode-e2e/src/suite/markdown-lists.test.ts

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import * as assert from "assert"
22

3-
import type { ClineMessage } from "@roo-code/types"
3+
import { RooCodeEventName, type ClineMessage } from "@roo-code/types"
44

55
import { waitUntilCompleted } from "./utils"
66
import { setDefaultSuiteTimeout } from "./test-utils"
@@ -13,7 +13,7 @@ suite("Markdown List Rendering", function () {
1313

1414
const messages: ClineMessage[] = []
1515

16-
api.on("message", ({ message }: { message: ClineMessage }) => {
16+
api.on(RooCodeEventName.Message, ({ message }: { message: ClineMessage }) => {
1717
if (message.type === "say" && message.partial === false) {
1818
messages.push(message)
1919
}
@@ -50,7 +50,7 @@ suite("Markdown List Rendering", function () {
5050

5151
const messages: ClineMessage[] = []
5252

53-
api.on("message", ({ message }: { message: ClineMessage }) => {
53+
api.on(RooCodeEventName.Message, ({ message }: { message: ClineMessage }) => {
5454
if (message.type === "say" && message.partial === false) {
5555
messages.push(message)
5656
}
@@ -87,7 +87,7 @@ suite("Markdown List Rendering", function () {
8787

8888
const messages: ClineMessage[] = []
8989

90-
api.on("message", ({ message }: { message: ClineMessage }) => {
90+
api.on(RooCodeEventName.Message, ({ message }: { message: ClineMessage }) => {
9191
if (message.type === "say" && message.partial === false) {
9292
messages.push(message)
9393
}
@@ -139,7 +139,7 @@ suite("Markdown List Rendering", function () {
139139

140140
const messages: ClineMessage[] = []
141141

142-
api.on("message", ({ message }: { message: ClineMessage }) => {
142+
api.on(RooCodeEventName.Message, ({ message }: { message: ClineMessage }) => {
143143
if (message.type === "say" && message.partial === false) {
144144
messages.push(message)
145145
}

apps/vscode-e2e/src/suite/modes.test.ts

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
import * as assert from "assert"
22

3+
import { RooCodeEventName } from "@roo-code/types"
4+
35
import { waitUntilCompleted } from "./utils"
46
import { setDefaultSuiteTimeout } from "./test-utils"
57

@@ -9,7 +11,7 @@ suite("Roo Code Modes", function () {
911
test("Should handle switching modes correctly", async () => {
1012
const modes: string[] = []
1113

12-
globalThis.api.on("taskModeSwitched", (_taskId, mode) => modes.push(mode))
14+
globalThis.api.on(RooCodeEventName.TaskModeSwitched, (_taskId, mode) => modes.push(mode))
1315

1416
const switchModesTaskId = await globalThis.api.startNewTask({
1517
configuration: { mode: "code", alwaysAllowModeSwitch: true, autoApprovalEnabled: true },

apps/vscode-e2e/src/suite/subtasks.test.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import * as assert from "assert"
22

3-
import type { ClineMessage } from "@roo-code/types"
3+
import { RooCodeEventName, type ClineMessage } from "@roo-code/types"
44

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

@@ -10,7 +10,7 @@ suite.skip("Roo Code Subtasks", () => {
1010

1111
const messages: Record<string, ClineMessage[]> = {}
1212

13-
api.on("message", ({ taskId, message }) => {
13+
api.on(RooCodeEventName.Message, ({ taskId, message }) => {
1414
if (message.type === "say" && message.partial === false) {
1515
messages[taskId] = messages[taskId] || []
1616
messages[taskId].push(message)
@@ -37,7 +37,7 @@ suite.skip("Roo Code Subtasks", () => {
3737
let spawnedTaskId: string | undefined = undefined
3838

3939
// Wait for the subtask to be spawned and then cancel it.
40-
api.on("taskSpawned", (_, childTaskId) => (spawnedTaskId = childTaskId))
40+
api.on(RooCodeEventName.TaskSpawned, (_, childTaskId) => (spawnedTaskId = childTaskId))
4141
await waitFor(() => !!spawnedTaskId)
4242
await sleep(1_000) // Give the task a chance to start and populate the history.
4343
await api.cancelCurrentTask()

apps/vscode-e2e/src/suite/task.test.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import * as assert from "assert"
22

3-
import type { ClineMessage } from "@roo-code/types"
3+
import { RooCodeEventName, type ClineMessage } from "@roo-code/types"
44

55
import { waitUntilCompleted } from "./utils"
66
import { setDefaultSuiteTimeout } from "./test-utils"
@@ -13,7 +13,7 @@ suite("Roo Code Task", function () {
1313

1414
const messages: ClineMessage[] = []
1515

16-
api.on("message", ({ message }) => {
16+
api.on(RooCodeEventName.Message, ({ message }) => {
1717
if (message.type === "say" && message.partial === false) {
1818
messages.push(message)
1919
}

apps/vscode-e2e/src/suite/tools/apply-diff.test.ts

Lines changed: 31 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ import * as fs from "fs/promises"
33
import * as path from "path"
44
import * as vscode from "vscode"
55

6-
import type { ClineMessage } from "@roo-code/types"
6+
import { RooCodeEventName, type ClineMessage } from "@roo-code/types"
77

88
import { waitFor, sleep } from "../utils"
99
import { setDefaultSuiteTimeout } from "../test-utils"
@@ -192,7 +192,7 @@ function validateInput(input) {
192192
}
193193
}
194194
}
195-
api.on("message", messageHandler)
195+
api.on(RooCodeEventName.Message, messageHandler)
196196

197197
// Listen for task events
198198
const taskStartedHandler = (id: string) => {
@@ -201,15 +201,15 @@ function validateInput(input) {
201201
console.log("Task started:", id)
202202
}
203203
}
204-
api.on("taskStarted", taskStartedHandler)
204+
api.on(RooCodeEventName.TaskStarted, taskStartedHandler)
205205

206206
const taskCompletedHandler = (id: string) => {
207207
if (id === taskId) {
208208
taskCompleted = true
209209
console.log("Task completed:", id)
210210
}
211211
}
212-
api.on("taskCompleted", taskCompletedHandler)
212+
api.on(RooCodeEventName.TaskCompleted, taskCompletedHandler)
213213

214214
let taskId: string
215215
try {
@@ -260,9 +260,9 @@ ${testFile.content}\nAssume the file exists and you can modify it directly.`,
260260
console.log("Test passed! apply_diff tool executed and file modified successfully")
261261
} finally {
262262
// Clean up
263-
api.off("message", messageHandler)
264-
api.off("taskStarted", taskStartedHandler)
265-
api.off("taskCompleted", taskCompletedHandler)
263+
api.off(RooCodeEventName.Message, messageHandler)
264+
api.off(RooCodeEventName.TaskStarted, taskStartedHandler)
265+
api.off(RooCodeEventName.TaskCompleted, taskCompletedHandler)
266266
}
267267
})
268268

@@ -305,7 +305,7 @@ ${testFile.content}\nAssume the file exists and you can modify it directly.`,
305305
}
306306
}
307307
}
308-
api.on("message", messageHandler)
308+
api.on(RooCodeEventName.Message, messageHandler)
309309

310310
// Listen for task events
311311
const taskStartedHandler = (id: string) => {
@@ -314,15 +314,15 @@ ${testFile.content}\nAssume the file exists and you can modify it directly.`,
314314
console.log("Task started:", id)
315315
}
316316
}
317-
api.on("taskStarted", taskStartedHandler)
317+
api.on(RooCodeEventName.TaskStarted, taskStartedHandler)
318318

319319
const taskCompletedHandler = (id: string) => {
320320
if (id === taskId) {
321321
taskCompleted = true
322322
console.log("Task completed:", id)
323323
}
324324
}
325-
api.on("taskCompleted", taskCompletedHandler)
325+
api.on(RooCodeEventName.TaskCompleted, taskCompletedHandler)
326326

327327
let taskId: string
328328
try {
@@ -375,9 +375,9 @@ ${testFile.content}\nAssume the file exists and you can modify it directly.`,
375375
console.log("Test passed! apply_diff tool executed and multiple replacements applied successfully")
376376
} finally {
377377
// Clean up
378-
api.off("message", messageHandler)
379-
api.off("taskStarted", taskStartedHandler)
380-
api.off("taskCompleted", taskCompletedHandler)
378+
api.off(RooCodeEventName.Message, messageHandler)
379+
api.off(RooCodeEventName.TaskStarted, taskStartedHandler)
380+
api.off(RooCodeEventName.TaskCompleted, taskCompletedHandler)
381381
}
382382
})
383383

@@ -424,22 +424,22 @@ function keepThis() {
424424
}
425425
}
426426
}
427-
api.on("message", messageHandler)
427+
api.on(RooCodeEventName.Message, messageHandler)
428428

429429
// Listen for task events
430430
const taskStartedHandler = (id: string) => {
431431
if (id === taskId) {
432432
taskStarted = true
433433
}
434434
}
435-
api.on("taskStarted", taskStartedHandler)
435+
api.on(RooCodeEventName.TaskStarted, taskStartedHandler)
436436

437437
const taskCompletedHandler = (id: string) => {
438438
if (id === taskId) {
439439
taskCompleted = true
440440
}
441441
}
442-
api.on("taskCompleted", taskCompletedHandler)
442+
api.on(RooCodeEventName.TaskCompleted, taskCompletedHandler)
443443

444444
let taskId: string
445445
try {
@@ -487,9 +487,9 @@ ${testFile.content}\nAssume the file exists and you can modify it directly.`,
487487
console.log("Test passed! apply_diff tool executed and targeted modification successful")
488488
} finally {
489489
// Clean up
490-
api.off("message", messageHandler)
491-
api.off("taskStarted", taskStartedHandler)
492-
api.off("taskCompleted", taskCompletedHandler)
490+
api.off(RooCodeEventName.Message, messageHandler)
491+
api.off(RooCodeEventName.TaskStarted, taskStartedHandler)
492+
api.off(RooCodeEventName.TaskCompleted, taskCompletedHandler)
493493
}
494494
})
495495

@@ -532,22 +532,22 @@ ${testFile.content}\nAssume the file exists and you can modify it directly.`,
532532
}
533533
}
534534
}
535-
api.on("message", messageHandler)
535+
api.on(RooCodeEventName.Message, messageHandler)
536536

537537
// Listen for task events
538538
const taskStartedHandler = (id: string) => {
539539
if (id === taskId) {
540540
taskStarted = true
541541
}
542542
}
543-
api.on("taskStarted", taskStartedHandler)
543+
api.on(RooCodeEventName.TaskStarted, taskStartedHandler)
544544

545545
const taskCompletedHandler = (id: string) => {
546546
if (id === taskId) {
547547
taskCompleted = true
548548
}
549549
}
550-
api.on("taskCompleted", taskCompletedHandler)
550+
api.on(RooCodeEventName.TaskCompleted, taskCompletedHandler)
551551

552552
let taskId: string
553553
try {
@@ -598,9 +598,9 @@ Assume the file exists and you can modify it directly.`,
598598
console.log("Test passed! apply_diff attempted and error handled gracefully")
599599
} finally {
600600
// Clean up
601-
api.off("message", messageHandler)
602-
api.off("taskStarted", taskStartedHandler)
603-
api.off("taskCompleted", taskCompletedHandler)
601+
api.off(RooCodeEventName.Message, messageHandler)
602+
api.off(RooCodeEventName.TaskStarted, taskStartedHandler)
603+
api.off(RooCodeEventName.TaskCompleted, taskCompletedHandler)
604604
}
605605
})
606606

@@ -663,7 +663,7 @@ function checkInput(input) {
663663
}
664664
}
665665
}
666-
api.on("message", messageHandler)
666+
api.on(RooCodeEventName.Message, messageHandler)
667667

668668
// Listen for task events
669669
const taskStartedHandler = (id: string) => {
@@ -672,15 +672,15 @@ function checkInput(input) {
672672
console.log("Task started:", id)
673673
}
674674
}
675-
api.on("taskStarted", taskStartedHandler)
675+
api.on(RooCodeEventName.TaskStarted, taskStartedHandler)
676676

677677
const taskCompletedHandler = (id: string) => {
678678
if (id === taskId) {
679679
taskCompleted = true
680680
console.log("Task completed:", id)
681681
}
682682
}
683-
api.on("taskCompleted", taskCompletedHandler)
683+
api.on(RooCodeEventName.TaskCompleted, taskCompletedHandler)
684684

685685
let taskId: string
686686
try {
@@ -742,9 +742,9 @@ Assume the file exists and you can modify it directly.`,
742742
console.log("Test passed! apply_diff tool executed and multiple search/replace blocks applied successfully")
743743
} finally {
744744
// Clean up
745-
api.off("message", messageHandler)
746-
api.off("taskStarted", taskStartedHandler)
747-
api.off("taskCompleted", taskCompletedHandler)
745+
api.off(RooCodeEventName.Message, messageHandler)
746+
api.off(RooCodeEventName.TaskStarted, taskStartedHandler)
747+
api.off(RooCodeEventName.TaskCompleted, taskCompletedHandler)
748748
}
749749
})
750750
})

0 commit comments

Comments
 (0)