Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 5 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -42,6 +42,11 @@ logs
# Turborepo
.turbo

# Nix
result
result-*
.direnv

# IntelliJ and Qodo plugin folders
.idea/
.qodo/
Expand Down
10 changes: 6 additions & 4 deletions .roo/commands/roo-resolve-conflicts.md
Original file line number Diff line number Diff line change
Expand Up @@ -11,10 +11,10 @@ Resolve merge conflicts for a specific pull request by analyzing git history, co
1. **Provide a PR number** (e.g., `#123` or just `123`)

2. The workflow will automatically:
- Fetch PR information (title, description, branches)
- Checkout the PR branch
- Rebase onto the target branch to reveal conflicts
- Analyze and resolve conflicts using git history
- Fetch PR information (title, description, branches)
- Checkout the PR branch
- Rebase onto the target branch to reveal conflicts
- Analyze and resolve conflicts using git history

## Workflow Steps

Expand All @@ -39,6 +39,7 @@ git status --porcelain | grep "^UU"
### 3. Analyze Each Conflict

For each conflicted file:

- Read the conflict markers
- Run `git blame` on conflicting sections
- Fetch commit messages for context
Expand All @@ -47,6 +48,7 @@ For each conflicted file:
### 4. Apply Resolution Strategy

Based on the analysis:

- **Bugfixes** generally take precedence over features
- **Recent changes** are often more relevant (unless older is a security fix)
- **Combine** non-conflicting changes when possible
Expand Down
31 changes: 17 additions & 14 deletions .roo/commands/roo-translate.md
Original file line number Diff line number Diff line change
Expand Up @@ -9,32 +9,35 @@ Perform translation and localization tasks for the Roo Code extension. This comm
## Quick Start

1. **Identify the translation scope:**
- If a specific language code is provided (e.g., `de`, `zh-CN`), focus on that language
- If `all` is specified, translate to all supported languages
- If a string key is provided, locate and translate that specific string
- If a file path is provided, work with that translation file

- If a specific language code is provided (e.g., `de`, `zh-CN`), focus on that language
- If `all` is specified, translate to all supported languages
- If a string key is provided, locate and translate that specific string
- If a file path is provided, work with that translation file

2. **Supported languages:** ca, de, en, es, fr, hi, id, it, ja, ko, nl, pl, pt-BR, ru, tr, vi, zh-CN, zh-TW

3. **Translation locations:**
- Core Extension: `src/i18n/locales/`
- WebView UI: `webview-ui/src/i18n/locales/`
- Core Extension: `src/i18n/locales/`
- WebView UI: `webview-ui/src/i18n/locales/`

## Workflow

1. If adding new strings:
- Add the English string first
- Ask for confirmation before translating to other languages
- Use `apply_diff` for efficient file updates

- Add the English string first
- Ask for confirmation before translating to other languages
- Use `apply_diff` for efficient file updates

2. If updating existing strings:
- Identify all affected language files
- Update English first, then propagate changes

- Identify all affected language files
- Update English first, then propagate changes

3. Validate your changes:
```bash
node scripts/find-missing-translations.js
```
```bash
node scripts/find-missing-translations.js
```

## Key Guidelines

Expand Down
32 changes: 16 additions & 16 deletions .roo/skills/roo-conflict-resolution/SKILL.md
Original file line number Diff line number Diff line change
Expand Up @@ -105,16 +105,16 @@ Verify the resolution and prepare for commit:

## Git Commands Reference

| Command | Purpose |
|---------|---------|
| `gh pr checkout [PR_NUMBER] --force` | Force checkout the PR branch |
| `git fetch origin main` | Get the latest main branch |
| `GIT_EDITOR=true git rebase origin/main` | Rebase current branch onto main (non-interactive) |
| `git blame -L [start],[end] [commit] -- [file]` | Get commit information for specific lines |
| `git show --format="%H%n%an%n%ae%n%ad%n%s%n%b" --no-patch [sha]` | Get commit metadata |
| `git show [sha] -- [file]` | Get the actual changes made in a commit |
| `git ls-files -u` | List unmerged files with stage information |
| `GIT_EDITOR=true git rebase --continue` | Continue rebase after resolving conflicts |
| Command | Purpose |
| ---------------------------------------------------------------- | ------------------------------------------------- |
| `gh pr checkout [PR_NUMBER] --force` | Force checkout the PR branch |
| `git fetch origin main` | Get the latest main branch |
| `GIT_EDITOR=true git rebase origin/main` | Rebase current branch onto main (non-interactive) |
| `git blame -L [start],[end] [commit] -- [file]` | Get commit information for specific lines |
| `git show --format="%H%n%an%n%ae%n%ad%n%s%n%b" --no-patch [sha]` | Get commit metadata |
| `git show [sha] -- [file]` | Get the actual changes made in a commit |
| `git ls-files -u` | List unmerged files with stage information |
| `GIT_EDITOR=true git rebase --continue` | Continue rebase after resolving conflicts |

## Best Practices

Expand All @@ -141,12 +141,12 @@ Look beyond the immediate conflict to understand related changes in tests, docum

## Resolution Heuristics

| Category | Rule | Exception |
|----------|------|-----------|
| Bugfix vs Feature | Bugfixes generally take precedence | When features include the fix |
| Recent vs Old | More recent changes are often more relevant | When older changes are security patches |
| Test Updates | Changes with test updates are likely more complete | - |
| Formatting vs Logic | Logic changes take precedence over formatting | - |
| Category | Rule | Exception |
| ------------------- | -------------------------------------------------- | --------------------------------------- |
| Bugfix vs Feature | Bugfixes generally take precedence | When features include the fix |
| Recent vs Old | More recent changes are often more relevant | When older changes are security patches |
| Test Updates | Changes with test updates are likely more complete | - |
| Formatting vs Logic | Logic changes take precedence over formatting | - |

## Common Pitfalls

Expand Down
38 changes: 21 additions & 17 deletions .roo/skills/roo-translation/SKILL.md
Original file line number Diff line number Diff line change
Expand Up @@ -29,10 +29,10 @@ Localize all strings into the following locale files: ca, de, en, es, fr, hi, id

The VSCode extension has two main areas that require localization:

| Component | Path | Purpose |
|-----------|------|---------|
| **Core Extension** | `src/i18n/locales/` | Extension backend strings |
| **WebView UI** | `webview-ui/src/i18n/locales/` | User interface strings |
| Component | Path | Purpose |
| ------------------ | ------------------------------ | ------------------------- |
| **Core Extension** | `src/i18n/locales/` | Extension backend strings |
| **WebView UI** | `webview-ui/src/i18n/locales/` | User interface strings |

## Brand Voice, Tone, and Word Choice

Expand Down Expand Up @@ -77,17 +77,19 @@ This guidance file is loaded at runtime and should be consulted for the latest b
### Trans Component Example

Translation string:

```json
"changeSettings": "You can always change this at the bottom of the <settingsLink>settings</settingsLink>"
```

React component usage:

```tsx
<Trans
i18nKey="welcome:telemetry.changeSettings"
components={{
settingsLink: <VSCodeLink href="#" onClick={handleOpenSettings} />
}}
i18nKey="welcome:telemetry.changeSettings"
components={{
settingsLink: <VSCodeLink href="#" onClick={handleOpenSettings} />,
}}
/>
```

Expand All @@ -105,19 +107,21 @@ React component usage:

1. First add or modify English strings, then ask for confirmation before translating to all other languages
2. Use this process for each localization task:
1. Identify where the string appears in the UI/codebase
2. Understand the context and purpose of the string
3. Update English translation first
4. Use the `search_files` tool to find JSON keys that are near new keys in English translations but do not yet exist in the other language files for `apply_diff` SEARCH context
5. Create appropriate translations for all other supported languages utilizing the `search_files` result using `apply_diff` without reading every file
6. Do not output the translated text into the chat, just modify the files
7. Validate your changes with the missing translations script

1. Identify where the string appears in the UI/codebase
2. Understand the context and purpose of the string
3. Update English translation first
4. Use the `search_files` tool to find JSON keys that are near new keys in English translations but do not yet exist in the other language files for `apply_diff` SEARCH context
5. Create appropriate translations for all other supported languages utilizing the `search_files` result using `apply_diff` without reading every file
6. Do not output the translated text into the chat, just modify the files
7. Validate your changes with the missing translations script

3. Flag or comment if an English source string is incomplete ("please see this...") to avoid truncated or unclear translations

4. For UI elements, distinguish between:
- Button labels: Use short imperative commands ("Save", "Cancel")
- Tooltip text: Can be slightly more descriptive

- Button labels: Use short imperative commands ("Save", "Cancel")
- Tooltip text: Can be slightly more descriptive

5. Preserve the original perspective: If text is a user command directed at the software, ensure the translation maintains this direction

Expand Down
1 change: 1 addition & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -177,6 +177,7 @@
- Fix: Reset invalid model selection when using OpenAI Codex provider (PR #10777 by @hannesrudolph)
- Fix: Add openai-codex to providers that don't require an API key (PR #10786 by @roomote)
- Fix: Detect Gemini models with space-separated names for proper thought signature injection in LiteLLM (PR #10787 by @daniel-lxs)
- Add Nix flake for reproducible development environment with Node.js, pnpm, and native build dependencies

## [3.41.1] - 2026-01-16

Expand Down
28 changes: 27 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,7 @@
- [简体中文](locales/zh-CN/README.md)
- [繁體中文](locales/zh-TW/README.md)
- ...
</details>
</details>

---

Expand Down Expand Up @@ -148,6 +148,32 @@ If you prefer to install the VSIX package manually:
code --install-extension bin/roo-cline-<version>.vsix
```

### Nix Flake

A `flake.nix` is provided for [Nix](https://nixos.org/) users:

```sh
nix develop # Enter dev shell with all dependencies
pnpm install # Install npm packages
pnpm build # Build the project
pnpm test # Run tests
pnpm vsix # Create VSIX package
```

To build and install the extension directly:

```sh
nix build .#vsix && code --install-extension result/*.vsix
```

The dev shell provides Node.js 20.x, pnpm, ripgrep, and build tools for native modules.

After updating dependencies, run `nix run .#update-deps` to update `flake.lock` and the pnpm dependency hash.

If flakes aren't enabled, prefix commands with: `nix --extra-experimental-features 'nix-command flakes' <command>`

> **Note:** Roo Code is also available as a pre-built extension in [nixpkgs](https://github.com/NixOS/nixpkgs/blob/nixos-unstable/pkgs/applications/editors/vscode/extensions/rooveterinaryinc.roo-cline/default.nix) via `vscode-extensions.rooveterinaryinc.roo-cline`.

---

We use [changesets](https://github.com/changesets/changesets) for versioning and publishing. Check our `CHANGELOG.md` for release notes.
Expand Down
6 changes: 1 addition & 5 deletions apps/web-roo-code/src/app/pricing/page.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -291,11 +291,7 @@ export default function PricingPage() {
<li>To pay for Cloud Agents running time (${PRICE_CREDITS}/hour)</li>
<li>
To pay for AI model inference costs (
<a
href="/provider"
target="_blank"
rel="noopener noreferrer"
className="underline">
<a href="/provider" target="_blank" rel="noopener noreferrer" className="underline">
varies by model
</a>
)
Expand Down
61 changes: 61 additions & 0 deletions flake.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Loading
Loading