Skip to content
This repository was archived by the owner on May 15, 2026. It is now read-only.

Commit 8a6b4b5

Browse files
Merge main to ollama_improvements: resolve conflicts in Ollama i18n implementation
2 parents 05ae911 + 67e568f commit 8a6b4b5

619 files changed

Lines changed: 27714 additions & 27043 deletions

File tree

Some content is hidden

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

.github/workflows/website-deploy.yml

Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,10 @@ on:
88
- 'apps/web-roo-code/**'
99
workflow_dispatch:
1010

11+
concurrency:
12+
group: deploy-roocode-com
13+
cancel-in-progress: true
14+
1115
env:
1216
VERCEL_ORG_ID: ${{ secrets.VERCEL_ORG_ID }}
1317
VERCEL_PROJECT_ID: ${{ secrets.VERCEL_PROJECT_ID }}
@@ -36,8 +40,17 @@ jobs:
3640
uses: actions/checkout@v4
3741
- name: Setup Node.js and pnpm
3842
uses: ./.github/actions/setup-node-pnpm
43+
- name: Run lint
44+
run: pnpm lint
45+
working-directory: apps/web-roo-code
46+
- name: Run type check
47+
run: pnpm check-types
48+
working-directory: apps/web-roo-code
49+
- name: Run build
50+
run: pnpm build
51+
working-directory: apps/web-roo-code
3952
- name: Install Vercel CLI
40-
run: npm install --global vercel@canary
53+
run: npm install --global vercel@latest
4154
- name: Pull Vercel Environment Information
4255
run: npx vercel pull --yes --environment=production --token=${{ secrets.VERCEL_TOKEN }}
4356
- name: Build Project Artifacts

.github/workflows/website-preview.yml

Lines changed: 29 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,10 @@ on:
1111
- "apps/web-roo-code/**"
1212
workflow_dispatch:
1313

14+
concurrency:
15+
group: preview-roocode-com-${{ github.ref }}
16+
cancel-in-progress: true
17+
1418
env:
1519
VERCEL_ORG_ID: ${{ secrets.VERCEL_ORG_ID }}
1620
VERCEL_PROJECT_ID: ${{ secrets.VERCEL_PROJECT_ID }}
@@ -39,8 +43,17 @@ jobs:
3943
uses: actions/checkout@v4
4044
- name: Setup Node.js and pnpm
4145
uses: ./.github/actions/setup-node-pnpm
46+
- name: Run lint
47+
run: pnpm lint
48+
working-directory: apps/web-roo-code
49+
- name: Run type check
50+
run: pnpm check-types
51+
working-directory: apps/web-roo-code
52+
- name: Run build
53+
run: pnpm build
54+
working-directory: apps/web-roo-code
4255
- name: Install Vercel CLI
43-
run: npm install --global vercel@canary
56+
run: npm install --global vercel@latest
4457
- name: Pull Vercel Environment Information
4558
run: npx vercel pull --yes --environment=preview --token=${{ secrets.VERCEL_TOKEN }}
4659
- name: Build Project Artifacts
@@ -70,15 +83,20 @@ jobs:
7083
comment.body.includes(commentIdentifier)
7184
);
7285
73-
if (existingComment) {
74-
return;
75-
}
76-
7786
const comment = commentIdentifier + '\n🚀 **Preview deployed!**\n\nYour changes have been deployed to Vercel:\n\n**Preview URL:** ' + deploymentUrl + '\n\nThis preview will be updated automatically when you push new commits to this PR.';
7887
79-
await github.rest.issues.createComment({
80-
owner: context.repo.owner,
81-
repo: context.repo.repo,
82-
issue_number: context.issue.number,
83-
body: comment
84-
});
88+
if (existingComment) {
89+
await github.rest.issues.updateComment({
90+
owner: context.repo.owner,
91+
repo: context.repo.repo,
92+
comment_id: existingComment.id,
93+
body: comment
94+
});
95+
} else {
96+
await github.rest.issues.createComment({
97+
owner: context.repo.owner,
98+
repo: context.repo.repo,
99+
issue_number: context.issue.number,
100+
body: comment
101+
});
102+
}

AGENTS.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
# AGENTS.md
2+
3+
This file provides guidance to agents when working with code in this repository.
4+
5+
- Settings View Pattern: When working on `SettingsView`, inputs must bind to the local `cachedState`, NOT the live `useExtensionState()`. The `cachedState` acts as a buffer for user edits, isolating them from the `ContextProxy` source-of-truth until the user explicitly clicks "Save". Wiring inputs directly to the live state causes race conditions.

CHANGELOG.md

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

3+
## [3.45.0] - 2026-01-27
4+
5+
![3.45.0 Release - Smart Code Folding](/releases/3.45.0-release.png)
6+
7+
- Smart Code Folding: Context condensation now intelligently preserves a lightweight map of files you worked on—function signatures, class declarations, and type definitions—so Roo can continue referencing them accurately after condensing. Files are prioritized by most recent access, with a ~50k character budget ensuring your latest work is always preserved. (Idea by @shariqriazz, PR #10942 by @hannesrudolph)
8+
9+
## [3.44.2] - 2026-01-27
10+
11+
- Re-enable parallel tool calling with new_task isolation safeguards (PR #11006 by @mrubens)
12+
- Fix worktree indexing by using relative paths in isPathInIgnoredDirectory (PR #11009 by @daniel-lxs)
13+
- Fix local model validation error for Ollama models (PR #10893 by @roomote)
14+
- Fix duplicate tool_call emission from Responses API providers (PR #11008 by @daniel-lxs)
15+
16+
## [3.44.1] - 2026-01-27
17+
18+
- Fix LiteLLM tool ID validation errors for Bedrock proxy (PR #10990 by @daniel-lxs)
19+
- Add temperature=0.9 and top_p=0.95 to zai-glm-4.7 model for better generation quality (PR #10945 by @sebastiand-cerebras)
20+
- Add quality checks to marketing site deployment workflows (PR #10959 by @mp-roocode)
21+
22+
## [3.44.0] - 2026-01-26
23+
24+
![3.44.0 Release - Worktrees](/releases/3.44.0-release.png)
25+
26+
- Add worktree selector and creation UX (PR #10940 by @brunobergher, thanks Cline!)
27+
- Improve subtask visibility and navigation in history and chat views (PR #10864 by @brunobergher)
28+
- Add wildcard support for MCP alwaysAllow configuration (PR #10948 by @app/roomote)
29+
- Fix: Prevent nested condensing from including previously-condensed content (PR #10985 by @hannesrudolph)
30+
- Fix: VS Code LM token counting returns 0 outside requests, breaking context condensing (#10968 by @srulyt, PR #10983 by @daniel-lxs)
31+
- Fix: Record truncation event when condensation fails but truncation succeeds (PR #10984 by @hannesrudolph)
32+
- Replace hyphen encoding with fuzzy matching for MCP tool names (PR #10775 by @daniel-lxs)
33+
- Remove MCP SERVERS section from system prompt for cleaner prompts (PR #10895 by @daniel-lxs)
34+
- new_task tool creates checkpoint the same way write_to_file does (PR #10982 by @daniel-lxs)
35+
- Update Fireworks provider with new models (#10674 by @hannesrudolph, PR #10679 by @ThanhNguyxn)
36+
- Fix: Truncate AWS Bedrock toolUseId to 64 characters (PR #10902 by @daniel-lxs)
37+
- Fix: Restore opaque background to settings section headers (PR #10951 by @app/roomote)
38+
- Fix: Remove unsupported Fireworks model tool fields (PR #10937 by @app/roomote)
39+
- Update and improve zh-TW Traditional Chinese locale and docs (PR #10953 by @PeterDaveHello)
40+
- Chore: Remove POWER_STEERING experiment remnants (PR #10980 by @hannesrudolph)
41+
42+
## [3.43.0] - 2026-01-23
43+
44+
![3.43.0 Release - Intelligent Context Condensation](/releases/3.43.0-release.png)
45+
46+
- Intelligent Context Condensation v2: New context condensation system that intelligently summarizes conversation history when approaching context limits, preserving important information while reducing token usage (PR #10873 by @hannesrudolph)
47+
- Improved context condensation with environment details, accurate token counts, and lazy evaluation for better performance (PR #10920 by @hannesrudolph)
48+
- Move condense prompt editor to Context Management tab for better discoverability and organization (PR #10909 by @hannesrudolph)
49+
- Update Z.AI models with new variants and pricing (#10859 by @ErdemGKSL, PR #10860 by @ErdemGKSL)
50+
- Add pnpm install:vsix:nightly command for easier nightly build installation (PR #10912 by @hannesrudolph)
51+
- Fix: Convert orphaned tool_results to text blocks after condensing to prevent API errors (PR #10927 by @daniel-lxs)
52+
- Fix: Auto-migrate v1 condensing prompt and handle invalid providers on import (PR #10931 by @hannesrudolph)
53+
- Fix: Use json-stream-stringify for pretty-printing MCP config files to prevent memory issues with large configs (#9862 by @Michaelzag, PR #9864 by @Michaelzag)
54+
- Fix: Correct Gemini 3 pricing for Flash and Pro models (#10432 by @rossdonald, PR #10487 by @roomote)
55+
- Fix: Skip thoughtSignature blocks during markdown export for cleaner output (#10199 by @rossdonald, PR #10932 by @rossdonald)
56+
- Fix: Duplicate model display for OpenAI Codex provider (PR #10930 by @roomote)
57+
- Remove diffEnabled and fuzzyMatchThreshold settings as they are no longer needed (#10648 by @hannesrudolph, PR #10298 by @hannesrudolph)
58+
- Remove MULTI_FILE_APPLY_DIFF experiment (PR #10925 by @hannesrudolph)
59+
- Remove POWER_STEERING experimental feature (PR #10926 by @hannesrudolph)
60+
- Remove legacy XML tool calling code (getToolDescription) for cleaner codebase (PR #10929 by @hannesrudolph)
61+
62+
## [3.42.0] - 2026-01-22
63+
64+
![3.42.0 Release - ChatGPT Usage Tracking](/releases/3.42.0-release.png)
65+
66+
- Added UI to track your ChatGPT usage limits in the OpenAI Codex provider (PR #10813 by @hannesrudolph)
67+
- Removed deprecated Claude Code provider (PR #10883 by @daniel-lxs)
68+
- Streamlined codebase by removing legacy XML tool calling functionality (#10848 by @hannesrudolph, PR #10841 by @hannesrudolph)
69+
- Standardize model selectors across all providers: Improved consistency of model selection UI (#10650 by @hannesrudolph, PR #10294 by @hannesrudolph)
70+
- Enable prompt caching for Cerebras zai-glm-4.7 model (#10601 by @jahanson, PR #10670 by @app/roomote)
71+
- Add Kimi K2 thinking model to VertexAI provider (#9268 by @diwakar-s-maurya, PR #9269 by @app/roomote)
72+
- Warn users when too many MCP tools are enabled (PR #10772 by @app/roomote)
73+
- Migrate context condensing prompt to customSupportPrompts (PR #10881 by @hannesrudolph)
74+
- Unify export path logic and default to Downloads folder (PR #10882 by @hannesrudolph)
75+
- Performance improvements for webview state synchronization (PR #10842 by @hannesrudolph)
76+
- Fix: Handle mode selector empty state on workspace switch (#10660 by @hannesrudolph, PR #9674 by @app/roomote)
77+
- Fix: Resolve race condition in context condensing prompt input (PR #10876 by @hannesrudolph)
78+
- Fix: Prevent double emission of text/reasoning in OpenAI native and codex handlers (PR #10888 by @hannesrudolph)
79+
- Fix: Prevent task abortion when resuming via IPC/bridge (PR #10892 by @cte)
80+
- Fix: Enforce file restrictions for all editing tools (PR #10896 by @app/roomote)
81+
- Fix: Remove custom condensing model option (PR #10901 by @hannesrudolph)
82+
- Unify user content tags to <user_message> for consistent prompt formatting (#10658 by @hannesrudolph, PR #10723 by @app/roomote)
83+
- Clarify linked SKILL.md file handling in prompts (PR #10907 by @hannesrudolph)
84+
- Fix: Padding on Roo Code Cloud teaser (PR #10889 by @app/roomote)
85+
86+
## [3.41.3] - 2026-01-18
87+
88+
- Fix: Thinking block word-breaking to prevent horizontal scroll in the chat UI (PR #10806 by @roomote)
89+
- Add Claude-like CLI flags and authentication fixes for the Roo Code CLI (PR #10797 by @cte)
90+
- Improve CLI authentication by using a redirect instead of a fetch (PR #10799 by @cte)
91+
- Fix: Roo Code Router fixes for the CLI (PR #10789 by @cte)
92+
- Release CLI v0.0.48 with latest improvements (PR #10800 by @cte)
93+
- Release CLI v0.0.47 (PR #10798 by @cte)
94+
- Revert E2E tests enablement to address stability issues (PR #10794 by @cte)
95+
396
## [3.41.2] - 2026-01-16
497

598
- Add button to open markdown in VSCode preview for easier reading of formatted content (PR #10773 by @brunobergher)

apps/cli/CHANGELOG.md

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,17 @@ All notable changes to the `@roo-code/cli` package will be documented in this fi
55
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
66
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
77

8+
## [0.0.49] - 2026-01-18
9+
10+
### Added
11+
12+
- **Output Format Options**: New `--output-format` flag to control CLI output format for scripting and automation:
13+
- `text` (default) - Human-readable interactive output
14+
- `json` - Single JSON object with all events and final result at task completion
15+
- `stream-json` - NDJSON (newline-delimited JSON) for real-time streaming of events
16+
- See [`json-events.ts`](src/types/json-events.ts) for the complete event schema
17+
- New [`JsonEventEmitter`](src/agent/json-event-emitter.ts) for structured output generation
18+
819
## [0.0.48] - 2026-01-17
920

1021
### Changed

apps/cli/README.md

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -71,7 +71,7 @@ By default, the CLI prompts for approval before executing actions:
7171
```bash
7272
export OPENROUTER_API_KEY=sk-or-v1-...
7373

74-
roo ~/Documents/my-project -P "What is this project?"
74+
roo "What is this project?" -w ~/Documents/my-project
7575
```
7676

7777
You can also run without a prompt and enter it interactively in TUI mode:
@@ -92,7 +92,7 @@ In interactive mode:
9292
For automation and scripts, use `-y` to auto-approve all actions:
9393

9494
```bash
95-
roo ~/Documents/my-project -y -P "Refactor the utils.ts file"
95+
roo "Refactor the utils.ts file" -y -w ~/Documents/my-project
9696
```
9797

9898
In non-interactive mode:
@@ -149,8 +149,8 @@ Tokens are valid for 90 days. The CLI will prompt you to re-authenticate when yo
149149

150150
| Option | Description | Default |
151151
| --------------------------------- | --------------------------------------------------------------------------------------- | ----------------------------- |
152-
| `[workspace]` | Workspace path to operate in (positional argument) | Current directory |
153-
| `-P, --prompt <prompt>` | The prompt/task to execute (optional in TUI mode) | None |
152+
| `[prompt]` | Your prompt (positional argument, optional) | None |
153+
| `-w, --workspace <path>` | Workspace path to operate in | Current directory |
154154
| `-e, --extension <path>` | Path to the extension bundle directory | Auto-detected |
155155
| `-d, --debug` | Enable debug output (includes detailed debug information, prompts, paths, etc) | `false` |
156156
| `-x, --exit-on-complete` | Exit the process when task completes (useful for testing) | `false` |
@@ -249,7 +249,7 @@ pnpm lint
249249
To create a new release, execute the /cli-release slash command:
250250

251251
```bash
252-
roo ~/Documents/Roo-Code -P "/cli-release" -y
252+
roo "/cli-release" -w ~/Documents/Roo-Code -y
253253
```
254254

255255
The workflow will:

apps/cli/package.json

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "@roo-code/cli",
3-
"version": "0.0.48",
3+
"version": "0.0.49",
44
"description": "Roo Code CLI - Run the Roo Code agent from the command line",
55
"private": true,
66
"type": "module",
@@ -30,6 +30,8 @@
3030
"@trpc/client": "^11.8.1",
3131
"@vscode/ripgrep": "^1.15.9",
3232
"commander": "^12.1.0",
33+
"cross-spawn": "^7.0.6",
34+
"execa": "^9.5.2",
3335
"fuzzysort": "^3.1.0",
3436
"ink": "^6.6.0",
3537
"p-wait-for": "^5.0.2",

apps/cli/src/agent/__tests__/extension-host.test.ts

Lines changed: 13 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -100,16 +100,17 @@ describe("ExtensionHost", () => {
100100
ephemeral: false,
101101
debug: false,
102102
exitOnComplete: false,
103+
integrationTest: true, // Set explicitly for testing
103104
}
104105

105106
const host = new ExtensionHost(options)
106107

107-
// Options are stored but integrationTest is set to true
108+
// Options are stored as-is
108109
const storedOptions = getPrivate<ExtensionHostOptions>(host, "options")
109110
expect(storedOptions.mode).toBe(options.mode)
110111
expect(storedOptions.workspacePath).toBe(options.workspacePath)
111112
expect(storedOptions.extensionPath).toBe(options.extensionPath)
112-
expect(storedOptions.integrationTest).toBe(true) // Always set to true in constructor
113+
expect(storedOptions.integrationTest).toBe(true)
113114
})
114115

115116
it("should be an EventEmitter instance", () => {
@@ -298,16 +299,19 @@ describe("ExtensionHost", () => {
298299
})
299300

300301
it("should suppress console when integrationTest is false", () => {
301-
const host = createTestHost()
302+
// Capture the real console.log before any host is created
302303
const originalLog = console.log
303304

304-
// Override integrationTest to false
305+
// Create host with integrationTest: true to prevent constructor from suppressing
306+
const host = createTestHost({ integrationTest: true })
307+
308+
// Override integrationTest to false to test suppression
305309
const options = getPrivate<ExtensionHostOptions>(host, "options")
306310
options.integrationTest = false
307311

308312
callPrivate(host, "setupQuietMode")
309313

310-
// Console should be modified
314+
// Console should be modified (suppressed)
311315
expect(console.log).not.toBe(originalLog)
312316

313317
// Restore for other tests
@@ -332,9 +336,12 @@ describe("ExtensionHost", () => {
332336

333337
describe("restoreConsole", () => {
334338
it("should restore original console methods when suppressed", () => {
335-
const host = createTestHost()
339+
// Capture the real console.log before any host is created
336340
const originalLog = console.log
337341

342+
// Create host with integrationTest: true to prevent constructor from suppressing
343+
const host = createTestHost({ integrationTest: true })
344+
338345
// Override integrationTest to false to actually suppress
339346
const options = getPrivate<ExtensionHostOptions>(host, "options")
340347
options.integrationTest = false

apps/cli/src/agent/extension-host.ts

Lines changed: 14 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -153,7 +153,10 @@ export class ExtensionHost extends EventEmitter implements ExtensionHostInterfac
153153
super()
154154

155155
this.options = options
156-
this.options.integrationTest = true
156+
157+
// Set up quiet mode early, before any extension code runs.
158+
// This suppresses console output from the extension during load.
159+
this.setupQuietMode()
157160

158161
// Initialize client - single source of truth for agent state (including mode).
159162
this.client = new ExtensionClient({
@@ -162,9 +165,7 @@ export class ExtensionHost extends EventEmitter implements ExtensionHostInterfac
162165
})
163166

164167
// Initialize output manager.
165-
this.outputManager = new OutputManager({
166-
disabled: options.disableOutput,
167-
})
168+
this.outputManager = new OutputManager({ disabled: options.disableOutput })
168169

169170
// Initialize prompt manager with console mode callbacks.
170171
this.promptManager = new PromptManager({
@@ -222,8 +223,6 @@ export class ExtensionHost extends EventEmitter implements ExtensionHostInterfac
222223
this.initialSettings.reasoningEffort = this.options.reasoningEffort
223224
}
224225
}
225-
226-
this.setupQuietMode()
227226
}
228227

229228
// ==========================================================================
@@ -267,7 +266,8 @@ export class ExtensionHost extends EventEmitter implements ExtensionHostInterfac
267266
// ==========================================================================
268267

269268
private setupQuietMode(): void {
270-
if (this.options.integrationTest) {
269+
// Skip if already set up or if integrationTest mode
270+
if (this.originalConsole || this.options.integrationTest) {
271271
return
272272
}
273273

@@ -292,18 +292,16 @@ export class ExtensionHost extends EventEmitter implements ExtensionHostInterfac
292292
}
293293

294294
private restoreConsole(): void {
295-
if (this.options.integrationTest) {
295+
if (!this.originalConsole) {
296296
return
297297
}
298298

299-
if (this.originalConsole) {
300-
console.log = this.originalConsole.log
301-
console.warn = this.originalConsole.warn
302-
console.error = this.originalConsole.error
303-
console.debug = this.originalConsole.debug
304-
console.info = this.originalConsole.info
305-
this.originalConsole = null
306-
}
299+
console.log = this.originalConsole.log
300+
console.warn = this.originalConsole.warn
301+
console.error = this.originalConsole.error
302+
console.debug = this.originalConsole.debug
303+
console.info = this.originalConsole.info
304+
this.originalConsole = null
307305

308306
if (this.originalProcessEmitWarning) {
309307
process.emitWarning = this.originalProcessEmitWarning

apps/cli/src/agent/index.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1 +1,2 @@
11
export * from "./extension-host.js"
2+
export * from "./json-event-emitter.js"

0 commit comments

Comments
 (0)