Skip to content

Commit e01ac26

Browse files
committed
Merge main into will/terminal-focus - combine both experiments (preventTerminalDisruption and assistantMessageParser)
2 parents 1ea05cb + c99ccf0 commit e01ac26

File tree

232 files changed

+7033
-1863
lines changed

Some content is hidden

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

232 files changed

+7033
-1863
lines changed

.github/ISSUE_TEMPLATE/bug_report.yml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@ body:
2525
- AWS Bedrock
2626
- Chutes AI
2727
- DeepSeek
28+
- Fireworks AI
2829
- Glama
2930
- Google Gemini
3031
- Google Vertex AI

CHANGELOG.md

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

3+
## [3.25.7] - 2025-08-05
4+
5+
- Add support for Claude Opus 4.1
6+
- Add Fireworks AI provider (#6653 by @ershang-fireworks, PR by @ershang-fireworks)
7+
- Add Z AI provider (thanks @jues!)
8+
- Add Groq support for GPT-OSS
9+
- Add Cerebras support for GPT-OSS
10+
- Add code indexing support for multiple folders similar to task history (#6197 by @NaccOll, PR by @NaccOll)
11+
- Make mode selection dropdowns responsive (#6423 by @AyazKaan, PR by @AyazKaan)
12+
- Redesigned task header and task history (thanks @brunobergher!)
13+
- Fix checkpoints timing and ensure checkpoints work properly (#4827 by @mrubens, PR by @NaccOll)
14+
- Fix empty mode names from being saved (#5766 by @kfxmvp, PR by @app/roomote)
15+
- Fix MCP server creation when setting is disabled (#6607 by @characharm, PR by @app/roomote)
16+
- Update highlight layer style and align to textarea (#6647 by @NaccOll, PR by @NaccOll)
17+
- Fix UI for approving chained commands
18+
- Use assistantMessageParser class instead of parseAssistantMessage (#5340 by @qdaxb, PR by @qdaxb)
19+
- Conditionally include reminder section based on todo list config (thanks @NaccOll!)
20+
- Task and TaskProvider event emitter cleanup with new events (thanks @cte!)
21+
322
## [3.25.6] - 2025-08-01
423

524
- Set horizon-beta model max tokens to 32k for OpenRouter (requested by @hannesrudolph, PR by @app/roomote)

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)