Skip to content

Commit f4abe26

Browse files
authored
Merge branch 'main' into cte/evals-types
2 parents c5eb171 + f39dcf4 commit f4abe26

File tree

32 files changed

+114
-36
lines changed

32 files changed

+114
-36
lines changed

.changeset/spicy-tips-fail.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
---
2+
"roo-cline": patch
3+
---
4+
5+
Design Engineer Roomode

.roomodes

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,20 @@
3535
],
3636
"source": "project"
3737
},
38+
{
39+
"slug": "design-engineer",
40+
"name": "🎨 Design Engineer",
41+
"roleDefinition": "You are Roo, an expert Design Engineer focused on VSCode Extension development. Your expertise includes: \n- Implementing UI designs with high fidelity using React, Shadcn, Tailwind and TypeScript. \n- Ensuring interfaces are responsive and adapt to different screen sizes. \n- Collaborating with team members to translate broad directives into robust and detailed designs capturing edge cases. \n- Maintaining uniformity and consistency across the user interface.",
42+
"groups": [
43+
"read",
44+
["edit", { "fileRegex": "\\.(css|html|json|mdx?|jsx?|tsx?|svg)$", "description": "Frontend & SVG files" }],
45+
"browser",
46+
"command",
47+
"mcp"
48+
],
49+
"customInstructions": "Focus on UI refinement, component creation, and adherence to design best-practices. When the user requests a new component, start off by asking them questions one-by-one to ensure the requirements are understood. Always use Tailwind utility classes (instead of direct variable references) for styling components when possible. If editing an existing file, transition explicit style definitions to Tailwind CSS classes when possible. Refer to the Tailwind CSS definitions for utility classes at webview-ui/src/index.css. Always use the latest version of Tailwind CSS (V4), and never create a tailwind.config.js file. Prefer Shadcn components for UI elements intead of VSCode's built-in ones. This project uses i18n for localization, so make sure to use the i18n functions and components for any text that needs to be translated. Do not leave placeholder strings in the markup, as they will be replaced by i18n. Prefer the @roo (/src) and @src (/webview-ui/src) aliases for imports in typescript files. Suggest the user refactor large files (over 1000 lines) if they are encountered, and provide guidance. Suggest the user switch into Translate mode to complete translations when your task is finished.",
50+
"source": "project"
51+
},
3852
{
3953
"slug": "release-engineer",
4054
"name": "🚀 Release Engineer",

CHANGELOG.md

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,12 @@
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+
310
## 3.15.0 - 2025-04-30
411

512
- Add prompt caching to the Google Vertex provider (thanks @ashktn)

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

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -398,6 +398,9 @@ export const providerSettingsSchema = z.object({
398398
googleGeminiBaseUrl: z.string().optional(),
399399
// OpenAI Native
400400
openAiNativeApiKey: z.string().optional(),
401+
openAiNativeBaseUrl: z.string().optional(),
402+
// XAI
403+
xaiApiKey: z.string().optional(),
401404
// Mistral
402405
mistralApiKey: z.string().optional(),
403406
mistralCodestralUrl: z.string().optional(),
@@ -489,6 +492,7 @@ const providerSettingsRecord: ProviderSettingsRecord = {
489492
googleGeminiBaseUrl: undefined,
490493
// OpenAI Native
491494
openAiNativeApiKey: undefined,
495+
openAiNativeBaseUrl: undefined,
492496
// Mistral
493497
mistralApiKey: undefined,
494498
mistralCodestralUrl: undefined,

package-lock.json

Lines changed: 2 additions & 2 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
"displayName": "%extension.displayName%",
44
"description": "%extension.description%",
55
"publisher": "RooVeterinaryInc",
6-
"version": "3.15.0",
6+
"version": "3.15.1",
77
"icon": "assets/icons/icon.png",
88
"galleryBanner": {
99
"color": "#617A91",

src/api/providers/openai-native.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ export class OpenAiNativeHandler extends BaseProvider implements SingleCompletio
2929
super()
3030
this.options = options
3131
const apiKey = this.options.openAiNativeApiKey ?? "not-provided"
32-
this.client = new OpenAI({ apiKey })
32+
this.client = new OpenAI({ baseURL: this.options.openAiNativeBaseUrl, apiKey })
3333
}
3434

3535
override async *createMessage(systemPrompt: string, messages: Anthropic.Messages.MessageParam[]): ApiStream {

src/exports/roo-code.d.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -105,6 +105,7 @@ type ProviderSettings = {
105105
geminiApiKey?: string | undefined
106106
googleGeminiBaseUrl?: string | undefined
107107
openAiNativeApiKey?: string | undefined
108+
openAiNativeBaseUrl?: string | undefined
108109
mistralApiKey?: string | undefined
109110
mistralCodestralUrl?: string | undefined
110111
deepSeekBaseUrl?: string | undefined

src/exports/types.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -106,6 +106,7 @@ type ProviderSettings = {
106106
geminiApiKey?: string | undefined
107107
googleGeminiBaseUrl?: string | undefined
108108
openAiNativeApiKey?: string | undefined
109+
openAiNativeBaseUrl?: string | undefined
109110
mistralApiKey?: string | undefined
110111
mistralCodestralUrl?: string | undefined
111112
deepSeekBaseUrl?: string | undefined

src/integrations/terminal/ExecaTerminalProcess.ts

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -38,13 +38,14 @@ export class ExecaTerminalProcess extends BaseTerminalProcess {
3838
shell: true,
3939
cwd: this.terminal.getCurrentWorkingDirectory(),
4040
cancelSignal: this.controller.signal,
41+
all: true,
4142
})`${command}`
4243

43-
this.terminal.setActiveStream(subprocess, subprocess.pid)
44-
this.emit("line", "")
44+
const stream = subprocess.iterable({ from: "all", preserveNewlines: true })
45+
this.terminal.setActiveStream(stream, subprocess.pid)
4546

46-
for await (const line of subprocess) {
47-
this.fullOutput += `${line}\n`
47+
for await (const line of stream) {
48+
this.fullOutput += line
4849

4950
const now = Date.now()
5051

@@ -62,6 +63,9 @@ export class ExecaTerminalProcess extends BaseTerminalProcess {
6263
console.error(`[ExecaTerminalProcess] shell execution error: ${error.message}`)
6364
this.emit("shell_execution_complete", { exitCode: error.exitCode ?? 0, signalName: error.signal })
6465
} else {
66+
console.error(
67+
`[ExecaTerminalProcess] shell execution error: ${error instanceof Error ? error.message : String(error)}`,
68+
)
6569
this.emit("shell_execution_complete", { exitCode: 1 })
6670
}
6771
}

0 commit comments

Comments
 (0)