fix: remove unrelated scope creep files from PR

Reverts formatting-only changes to .roo commands/skills, README,
pricing page, and locale READMEs. Removes flake.nix/flake.lock
which belong in a separate PR.
This commit is contained in:
Roo Code 2026-02-20 16:30:46 +00:00
parent 3c09ec5bd5
commit 51f14979e2
25 changed files with 74 additions and 515 deletions

View file

@ -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
@ -39,7 +39,6 @@ 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
@ -48,7 +47,6 @@ 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

View file

@ -9,35 +9,32 @@ 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

View file

@ -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
@ -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

View file

@ -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
@ -77,19 +77,17 @@ 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} />
}}
/>
```
@ -107,21 +105,19 @@ 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

View file

@ -35,7 +35,7 @@
- [简体中文](locales/zh-CN/README.md)
- [繁體中文](locales/zh-TW/README.md)
- ...
</details>
</details>
---

View file

@ -291,7 +291,11 @@ 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>
)

61
flake.lock generated
View file

@ -1,61 +0,0 @@
{
"nodes": {
"flake-utils": {
"inputs": {
"systems": "systems"
},
"locked": {
"lastModified": 1731533236,
"narHash": "sha256-l0KFg5HjrsfsO/JpG+r7fRrqm12kzFHyUHqHCVpMMbI=",
"owner": "numtide",
"repo": "flake-utils",
"rev": "11707dc2f618dd54ca8739b309ec4fc024de578b",
"type": "github"
},
"original": {
"owner": "numtide",
"repo": "flake-utils",
"type": "github"
}
},
"nixpkgs": {
"locked": {
"lastModified": 1768564909,
"narHash": "sha256-Kell/SpJYVkHWMvnhqJz/8DqQg2b6PguxVWOuadbHCc=",
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "e4bae1bd10c9c57b2cf517953ab70060a828ee6f",
"type": "github"
},
"original": {
"owner": "NixOS",
"ref": "nixos-unstable",
"repo": "nixpkgs",
"type": "github"
}
},
"root": {
"inputs": {
"flake-utils": "flake-utils",
"nixpkgs": "nixpkgs"
}
},
"systems": {
"locked": {
"lastModified": 1681028828,
"narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=",
"owner": "nix-systems",
"repo": "default",
"rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e",
"type": "github"
},
"original": {
"owner": "nix-systems",
"repo": "default",
"type": "github"
}
}
},
"root": "root",
"version": 7
}

375
flake.nix
View file

@ -1,375 +0,0 @@
# Roo Code Nix Flake
#
# Provides a reproducible development environment
#
# Usage:
# nix develop # Enter dev shell
# nix run # Show welcome banner
# nix fmt # Format nix files
# nix flake check # Run all checks (lint, typecheck, test)
#
# Build and install extension:
# nix build .#vsix && code --install-extension result/*.vsix
#
# Inside dev shell:
# pnpm install # Install npm packages
# pnpm build # Build the project
# pnpm test # Run tests
# pnpm vsix # Create VS Code extension
# eslint <file> # Lint files (eslint and eslint_d available)
# pnpm lint # Run linting via pnpm scripts
#
# Maintenance:
# nix run .#update-deps # Update flake.lock and pnpmDeps hash
#
# If flakes aren't enabled, prefix commands with:
# nix --extra-experimental-features 'nix-command flakes' <command>
#
# See README.md section "Nix Flake" for more information
{
description = "Roo Code - AI-Powered Dev Team, Right in Your Editor";
inputs = {
nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable";
flake-utils.url = "github:numtide/flake-utils";
};
outputs =
{
self,
nixpkgs,
flake-utils,
}:
let
versionFromPackageJson = (builtins.fromJSON (builtins.readFile ./src/package.json)).version;
in
flake-utils.lib.eachDefaultSystem (
system:
let
pkgs = nixpkgs.legacyPackages.${system};
lib = pkgs.lib;
nodejs = pkgs.nodejs_20;
# Use pnpm_9 if available, otherwise fall back to pnpm
# pnpm 10.26.1 is available and newer than required 10.8.1, so we'll use that
pnpm = pkgs.pnpm;
ignoredPaths = [
".direnv"
"result"
"result-dev"
"node_modules"
".turbo"
"dist"
"bin"
".vscode"
".cursor"
];
src = lib.cleanSourceWith {
src = lib.cleanSource ./.;
filter =
path: type:
let
baseName = builtins.baseNameOf path;
in
!(builtins.elem baseName ignoredPaths);
};
# Chromium is only available on Linux in nixpkgs
chromiumPath = if pkgs.stdenv.isLinux then "${pkgs.chromium}/bin/chromium" else null;
basePnpmAttrs = {
inherit src;
strictDeps = true;
nativeBuildInputs = [
nodejs
pnpm
pkgs.pnpmConfigHook
];
pnpmDeps = self.packages.${system}.pnpmDeps;
};
roo-code-welcome = pkgs.writeShellApplication {
name = "roo-code-welcome";
runtimeInputs = [
pkgs.jp2a
nodejs
pnpm
];
text = ''
echo ""
if [ -f "./src/assets/images/roo.png" ]; then
jp2a --colors --width=40 ./src/assets/images/roo.png 2>/dev/null || echo "🦘 Roo Code"
else
echo "🦘 Roo Code Development Environment"
fi
echo ""
echo ""
echo "Node.js: $(node --version)"
echo "pnpm: $(pnpm --version)"
echo ""
echo "📦 pnpm install - Install dependencies"
echo "🔧 pnpm build - Build the project"
echo "📋 pnpm test - Run tests (from root)"
echo "📦 pnpm vsix - Create VS Code extension"
echo ""
echo "💡 Tip: For webview-ui tests, run from webview-ui directory:"
echo " cd webview-ui && pnpm test <test-file>"
echo ""
echo "For VS Code debugging: Press F5"
echo ""
'';
};
mkPnpmCheck =
name: script: extraAttrs:
pkgs.stdenvNoCC.mkDerivation (
basePnpmAttrs
// {
name = "roo-code-${name}";
buildPhase = ''
runHook preBuild
export HOME=$TMPDIR
# Disable pnpm self-management (pnpm is provided by Nix)
echo "manage-package-manager-versions=false" >> .npmrc
pnpm run ${script}
runHook postBuild
'';
installPhase = ''
mkdir -p $out
echo "${name} passed" > $out/result
'';
}
// extraAttrs
);
in
{
formatter = pkgs.nixfmt-tree;
devShells.default = pkgs.mkShell {
name = "roo-code-dev";
packages =
with pkgs;
[
nodejs
pnpm
git
python3
pkg-config
gnumake
# turbo is installed via pnpm as a devDependency (version 2.7.6 in package.json)
# We don't include system turbo to avoid version conflicts
# Users should run 'pnpm install' first to get the correct turbo version
ripgrep
jp2a
nodePackages.typescript-language-server
nodePackages.eslint
nodePackages.eslint_d
nil
]
++ lib.optionals stdenv.isLinux [
chromium
];
buildInputs =
with pkgs;
[
openssl
]
++ lib.optionals stdenv.isLinux [
stdenv.cc.cc.lib
];
env = {
PUPPETEER_SKIP_CHROMIUM_DOWNLOAD = "1";
RIPGREP_PATH = "${pkgs.ripgrep}/bin/rg";
NODE_ENV = "development";
}
// lib.optionalAttrs pkgs.stdenv.isLinux {
PUPPETEER_EXECUTABLE_PATH = chromiumPath;
};
shellHook = ''
${lib.getExe roo-code-welcome}
'';
};
packages =
let
version = versionFromPackageJson;
in
{
# Pre-fetch pnpm dependencies (for reproducible builds)
# Update hash when pnpm-lock.yaml changes:
# 1. Set hash = lib.fakeHash;
# 2. Run: nix build .#pnpmDeps
# 3. Copy the "got:" hash from the error message
pnpmDeps = pkgs.fetchPnpmDeps {
pname = "roo-code-pnpm-deps";
inherit version src;
fetcherVersion = 2;
hash = "sha256-l6MAzyVUiiqiKLvacP0tZZs4WNlcmm3TrtRwauE3TLE=";
};
vsix = pkgs.stdenvNoCC.mkDerivation (
basePnpmAttrs
// {
pname = "roo-code-vsix";
inherit version;
buildPhase = ''
runHook preBuild
export HOME=$TMPDIR
# Disable pnpm self-management (pnpm is provided by Nix)
echo "manage-package-manager-versions=false" >> .npmrc
pnpm run vsix
runHook postBuild
'';
installPhase = ''
runHook preInstall
mkdir -p $out
cp -v bin/*.vsix $out/
runHook postInstall
'';
meta = with lib; {
description = "AI-powered autonomous coding agent that lives in your editor";
homepage = "https://github.com/RooCodeInc/Roo-Code";
license = licenses.asl20;
platforms = platforms.unix;
};
}
);
default = self.packages.${system}.vsix;
};
apps = {
welcome = {
type = "app";
program = lib.getExe roo-code-welcome;
};
build-vsix = {
type = "app";
program = lib.getExe (
pkgs.writeShellApplication {
name = "build-vsix";
text = ''
echo "Building VSIX..."
nix build .#vsix --print-out-paths
'';
}
);
};
update-deps = {
type = "app";
program = lib.getExe (
pkgs.writeShellApplication {
name = "update-deps";
runtimeInputs = [
pkgs.gnused
pkgs.gnugrep
];
text = ''
# Safety check: ensure flake.nix has no uncommitted changes
if ! git diff --quiet flake.nix 2>/dev/null; then
echo "Error: flake.nix has uncommitted changes. Commit or stash them first."
exit 1
fi
echo "==> Updating flake inputs (nixpkgs, flake-utils)..."
nix flake update
echo ""
echo "==> Updating pnpmDeps hash..."
# Set hash to empty to trigger rebuild
sed -i 's|hash = "sha256-[^"]*";|hash = "";|' flake.nix
# Build and capture the error output
if output=$(nix build .#pnpmDeps 2>&1); then
echo "Build succeeded - hash unchanged"
# Restore the original hash since build succeeded
git checkout flake.nix 2>/dev/null || true
exit 0
fi
# Extract the correct hash from "got: sha256-..." (with fallback patterns)
new_hash=$(echo "$output" | grep -oP 'got:\s+\Ksha256-[A-Za-z0-9+/=]+' | head -1)
# Fallback: try alternative pattern if first didn't match
if [ -z "$new_hash" ]; then
new_hash=$(echo "$output" | grep -oE 'sha256-[A-Za-z0-9+/=]+' | tail -1)
fi
if [ -z "$new_hash" ]; then
echo "Error: Could not extract hash from build output"
echo "$output"
# Restore flake.nix since we failed
git checkout flake.nix 2>/dev/null || true
exit 1
fi
# Update flake.nix with the new hash
sed -i "s|hash = \"\";|hash = \"$new_hash\";|" flake.nix
echo "Updated pnpmDeps hash to: $new_hash"
echo ""
echo "Run 'nix fmt' to format, then commit flake.nix and flake.lock"
'';
}
);
};
default = self.apps.${system}.welcome;
};
checks = {
lint = mkPnpmCheck "lint" "lint" { };
typecheck = mkPnpmCheck "typecheck" "check-types" { };
test = mkPnpmCheck "test" "test" (
{
CI = "true";
PUPPETEER_SKIP_CHROMIUM_DOWNLOAD = "1";
}
// lib.optionalAttrs pkgs.stdenv.isLinux {
nativeBuildInputs = basePnpmAttrs.nativeBuildInputs ++ [ pkgs.chromium ];
PUPPETEER_EXECUTABLE_PATH = chromiumPath;
}
);
format = pkgs.stdenvNoCC.mkDerivation {
name = "roo-code-format-check";
src = ./.;
strictDeps = true;
nativeBuildInputs = [ pkgs.nixfmt-tree ];
buildPhase = ''
runHook preBuild
nixfmt --check flake.nix
runHook postBuild
'';
installPhase = ''
mkdir -p $out
echo "Format check passed" > $out/result
'';
};
};
}
)
// {
overlays.default = final: prev: {
roo-code-vsix = self.packages.${final.system}.vsix;
};
};
}

2
locales/ca/README.md generated
View file

@ -35,7 +35,7 @@
- [简体中文](../zh-CN/README.md)
- [繁體中文](../zh-TW/README.md)
- ...
</details>
</details>
---

2
locales/de/README.md generated
View file

@ -35,7 +35,7 @@
- [简体中文](../zh-CN/README.md)
- [繁體中文](../zh-TW/README.md)
- ...
</details>
</details>
---

2
locales/es/README.md generated
View file

@ -35,7 +35,7 @@
- [简体中文](../zh-CN/README.md)
- [繁體中文](../zh-TW/README.md)
- ...
</details>
</details>
---

2
locales/fr/README.md generated
View file

@ -35,7 +35,7 @@
- [简体中文](../zh-CN/README.md)
- [繁體中文](../zh-TW/README.md)
- ...
</details>
</details>
---

2
locales/hi/README.md generated
View file

@ -35,7 +35,7 @@
- [简体中文](../zh-CN/README.md)
- [繁體中文](../zh-TW/README.md)
- ...
</details>
</details>
---

2
locales/id/README.md generated
View file

@ -35,7 +35,7 @@
- [简体中文](../zh-CN/README.md)
- [繁體中文](../zh-TW/README.md)
- ...
</details>
</details>
---

2
locales/it/README.md generated
View file

@ -35,7 +35,7 @@
- [简体中文](../zh-CN/README.md)
- [繁體中文](../zh-TW/README.md)
- ...
</details>
</details>
---

2
locales/ja/README.md generated
View file

@ -35,7 +35,7 @@
- [简体中文](../zh-CN/README.md)
- [繁體中文](../zh-TW/README.md)
- ...
</details>
</details>
---

2
locales/ko/README.md generated
View file

@ -35,7 +35,7 @@
- [简体中文](../zh-CN/README.md)
- [繁體中文](../zh-TW/README.md)
- ...
</details>
</details>
---

2
locales/nl/README.md generated
View file

@ -35,7 +35,7 @@
- [简体中文](../zh-CN/README.md)
- [繁體中文](../zh-TW/README.md)
- ...
</details>
</details>
---

2
locales/pl/README.md generated
View file

@ -35,7 +35,7 @@
- [简体中文](../zh-CN/README.md)
- [繁體中文](../zh-TW/README.md)
- ...
</details>
</details>
---

View file

@ -35,7 +35,7 @@
- [简体中文](../zh-CN/README.md)
- [繁體中文](../zh-TW/README.md)
- ...
</details>
</details>
---

2
locales/ru/README.md generated
View file

@ -35,7 +35,7 @@
- [简体中文](../zh-CN/README.md)
- [繁體中文](../zh-TW/README.md)
- ...
</details>
</details>
---

2
locales/tr/README.md generated
View file

@ -35,7 +35,7 @@
- [简体中文](../zh-CN/README.md)
- [繁體中文](../zh-TW/README.md)
- ...
</details>
</details>
---

2
locales/vi/README.md generated
View file

@ -35,7 +35,7 @@
- [简体中文](../zh-CN/README.md)
- [繁體中文](../zh-TW/README.md)
- ...
</details>
</details>
---

View file

@ -35,7 +35,7 @@
- [简体中文](../zh-CN/README.md)
- [繁體中文](../zh-TW/README.md)
- ...
</details>
</details>
---

View file

@ -35,7 +35,7 @@
- [简体中文](../zh-CN/README.md)
- [繁體中文](../zh-TW/README.md)
- ...
</details>
</details>
---