diff --git a/.clinerules b/.clinerules
deleted file mode 100644
index 7cc6942a3f..0000000000
--- a/.clinerules
+++ /dev/null
@@ -1,17 +0,0 @@
-# Code Quality Rules
-
-1. Test Coverage:
- - Before attempting completion, always make sure that any code changes have test coverage
- - Ensure all tests pass before submitting changes
-
-2. Lint Rules:
- - Never disable any lint rules without explicit user approval
-
-3. Styling Guidelines:
- - Use Tailwind CSS classes instead of inline style objects for new markup
- - VSCode CSS variables must be added to webview-ui/src/index.css before using them in Tailwind classes
- - Example: `
` instead of style objects
-
-# Adding a New Setting
-
-To add a new setting that persists its state, follow the steps in cline_docs/settings.md
diff --git a/.github/ISSUE_TEMPLATE/bug_report.yml b/.github/ISSUE_TEMPLATE/bug_report.yml
index 91a6d5620b..5757f05ab1 100644
--- a/.github/ISSUE_TEMPLATE/bug_report.yml
+++ b/.github/ISSUE_TEMPLATE/bug_report.yml
@@ -24,7 +24,7 @@ body:
- OpenAI
- OpenAI Compatible
- GCP Vertex AI
- - AWS Bedrock
+ - Amazon Bedrock
- Requesty
- Glama
- VS Code LM API
diff --git a/.gitignore b/.gitignore
index 61885654c0..8cbb9d020a 100644
--- a/.gitignore
+++ b/.gitignore
@@ -38,3 +38,6 @@ logs
.clinerules
memory-bank/
.roo/**
+
+# Vite development
+.vite-port
diff --git a/.roo/rules-translate/001-general-rules.md b/.roo/rules-translate/001-general-rules.md
new file mode 100644
index 0000000000..643da48d33
--- /dev/null
+++ b/.roo/rules-translate/001-general-rules.md
@@ -0,0 +1,104 @@
+# 1. SUPPORTED LANGUAGES AND LOCATION
+
+- Localize all strings into the following locale files: ca, de, en, es, fr, hi, it, ja, ko, pl, pt-BR, tr, vi, zh-CN, zh-TW
+- The VSCode extension has two main areas that require localization:
+ - Core Extension: src/i18n/locales/ (extension backend)
+ - WebView UI: webview-ui/src/i18n/locales/ (user interface)
+
+# 2. VOICE, STYLE AND TONE
+
+- Always use informal speech (e.g., "du" instead of "Sie" in German) for all translations
+- Maintain a direct and concise style that mirrors the tone of the original text
+- Carefully account for colloquialisms and idiomatic expressions in both source and target languages
+- Aim for culturally relevant and meaningful translations rather than literal translations
+- Preserve the personality and voice of the original content
+- Use natural-sounding language that feels native to speakers of the target language
+- Don't translate the word "token" as it means something specific in English that all languages will understand
+- Don't translate domain-specific words (especially technical terms like "Prompt") that are commonly used in English in the target language
+
+# 3. CORE EXTENSION LOCALIZATION (src/)
+
+- Located in src/i18n/locales/
+- NOT ALL strings in core source need internationalization - only user-facing messages
+- Internal error messages, debugging logs, and developer-facing messages should remain in English
+- The t() function is used with namespaces like 'core:errors.missingToolParameter'
+- Be careful when modifying interpolation variables; they must remain consistent across all translations
+- Some strings in formatResponse.ts are intentionally not internationalized since they're internal
+- When updating strings in core.json, maintain all existing interpolation variables
+- Check string usages in the codebase before making changes to ensure you're not breaking functionality
+
+# 4. WEBVIEW UI LOCALIZATION (webview-ui/src/)
+
+- Located in webview-ui/src/i18n/locales/
+- Uses standard React i18next patterns with the useTranslation hook
+- All user interface strings should be internationalized
+- Always use the Trans component with named components for text with embedded components
+
+ example:
+
+`"changeSettings": "You can always change this at the bottom of the settings",`
+
+```
+
+ }}
+ />
+```
+
+# 5. TECHNICAL IMPLEMENTATION
+
+- Use namespaces to organize translations logically
+- Handle pluralization using i18next's built-in capabilities
+- Implement proper interpolation for variables using {{variable}} syntax
+- Don't include defaultValue. The `en` translations are the fallback
+- Always use apply_diff instead of write_to_file when editing existing translation files (much faster and more reliable)
+- When using apply_diff, carefully identify the exact JSON structure to edit to avoid syntax errors
+- Placeholders (like {{variable}}) must remain exactly identical to the English source to maintain code integration and prevent syntax errors
+
+# 6. WORKFLOW AND APPROACH
+
+- First add or modify English strings, then ask for confirmation before translating to all other languages
+- 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. Create appropriate translations for all other supported languages
+ 5. Validate your changes with the missing translations script
+- Flag or comment if an English source string is incomplete ("please see this...") to avoid truncated or unclear translations
+- For UI elements, distinguish between:
+ - Button labels: Use short imperative commands ("Save", "Cancel")
+ - Tooltip text: Can be slightly more descriptive
+- Preserve the original perspective: If text is a user command directed at the software, ensure the translation maintains this direction, avoiding language that makes it sound like an instruction from the system to the user
+
+# 7. COMMON PITFALLS TO AVOID
+
+- Switching between formal and informal addressing styles - always stay informal ("du" not "Sie")
+- Translating or altering technical terms and brand names that should remain in English
+- Modifying or removing placeholders like {{variable}} - these must remain identical
+- Translating domain-specific terms that are commonly used in English in the target language
+- Changing the meaning or nuance of instructions or error messages
+- Forgetting to maintain consistent terminology throughout the translation
+
+# 8. QUALITY ASSURANCE
+
+- Maintain consistent terminology across all translations
+- Respect the JSON structure of translation files
+- Watch for placeholders and preserve them in translations
+- Be mindful of text length in UI elements when translating to languages that might require more characters
+- Use context-aware translations when the same string has different meanings
+- Always validate your translation work by running the missing translations script:
+ ```
+ node scripts/find-missing-translations.js
+ ```
+- Address any missing translations identified by the script to ensure complete coverage across all locales
+
+# 9. TRANSLATOR'S CHECKLIST
+
+- ✓ Used informal tone consistently ("du" not "Sie")
+- ✓ Preserved all placeholders exactly as in the English source
+- ✓ Maintained consistent terminology with existing translations
+- ✓ Kept technical terms and brand names unchanged where appropriate
+- ✓ Preserved the original perspective (user→system vs system→user)
+- ✓ Adapted the text appropriately for UI context (buttons vs tooltips)
diff --git a/.roo/rules-translate/instructions-de.md b/.roo/rules-translate/instructions-de.md
new file mode 100644
index 0000000000..1268424832
--- /dev/null
+++ b/.roo/rules-translate/instructions-de.md
@@ -0,0 +1,14 @@
+# German (de) Translation Guidelines
+
+**Key Rule:** Always use informal speech ("du" form) in all German translations without exception.
+
+## Quick Reference
+
+| Category | Formal (Avoid) | Informal (Use) | Example |
+| ----------- | ------------------------- | ------------------- | ----------------- |
+| Pronouns | Sie | du | you |
+| Possessives | Ihr/Ihre/Ihrem | dein/deine/deinem | your |
+| Verbs | können Sie, müssen Sie | kannst du, musst du | you can, you must |
+| Imperatives | Geben Sie ein, Wählen Sie | Gib ein, Wähle | Enter, Choose |
+
+**Technical terms** like "API", "token", "prompt" should not be translated.
diff --git a/.roo/rules-translate/instructions-zh-cn.md b/.roo/rules-translate/instructions-zh-cn.md
new file mode 100644
index 0000000000..241ae338dc
--- /dev/null
+++ b/.roo/rules-translate/instructions-zh-cn.md
@@ -0,0 +1,278 @@
+# Simplified Chinese (zh-CN) Translation Guidelines
+
+## Key Terminology
+
+| English Term | Preferred (zh-CN) | Avoid | Context/Notes |
+| --------------------- | ----------------- | ------------ | ------------- |
+| API Cost | API 费用 | API 成本 | 财务相关术语 |
+| Tokens | Token | Tokens/令牌 | 保留抽象术语 |
+| Token Usage | Token 使用量 | Token 用量 | 技术计量单位 |
+| Cache | 缓存 | 高速缓存 | 简洁优先 |
+| Context | 上下文 | | 保留抽象术语 |
+| Context Menu | 右键菜单 | 上下文菜单 | 技术术语准确 |
+| Context Window | 上下文窗口 | | 技术术语准确 |
+| Proceed While Running | 强制继续 | 运行时继续 | 操作命令 |
+| Enhance Prompt | 增强提示词 | 优化提示 | AI相关功能 |
+| Auto-approve | 自动批准 | 始终批准 | 权限相关术语 |
+| Checkpoint | 存档点 | 检查点/快照 | 技术概念统一 |
+| MCP Server | MCP 服务 | MCP 服务器 | 技术组件 |
+| Human Relay | 人工辅助模式 | 人工中继 | 功能描述清晰 |
+| Network Timeout | 请求超时 | 网络超时 | 更准确描述 |
+| Terminal | 终端 | 命令行 | 技术术语统一 |
+| diff | 差异更新 | 差分/补丁 | 代码变更 |
+| prompt caching | 提示词缓存 | 提示缓存 | AI功能 |
+| computer use | 计算机交互 | 计算机使用 | 技术能力 |
+| rate limit | API 请求频率限制 | 速率限制 | API控制 |
+| Browser Session | 浏览器会话 | 浏览器进程 | 技术概念 |
+| Run Command | 运行命令 | 执行命令 | 操作动词 |
+| power steering mode | 增强导向模式 | 动力转向模式 | 避免直译 |
+| Boomerang Tasks | 任务拆分 | 回旋镖任务 | 避免直译 |
+
+## Formatting Rules
+
+1. **中英文混排**
+
+ - 添加空格:在中文和英文/数字之间添加空格,如"API 费用"(不是"API费用")
+ - 单位格式:时间单位统一为"15秒"、"1分钟"(不是"15 seconds"、"1 minute")
+ - 数字范围:"已使用: {{used}} / {{total}}"
+ - 技术符号保留原样:"{{amount}} tokens"→"{{amount}}"
+
+2. **标点符号**
+
+ - 使用中文全角标点
+ - 列表项使用中文顿号:"创建、编辑文件"
+
+3. **UI文本优化**
+
+ - 按钮文本:使用简洁动词,如"展开"优于"查看更多"
+ - 操作说明:使用步骤式说明(1. 2. 3.)替代长段落
+ - 错误提示:使用"确认删除?此操作不可逆"替代"Are you sure...?"
+ - 操作说明要简洁:"Shift+拖拽文件"优于长描述
+ - 按钮文本控制在2-4个汉字:"展开"优于"查看更多"
+
+4. **技术描述**
+
+ - 保留英文缩写:如"MCP"不翻译
+ - 统一术语:整个系统中相同概念使用相同译法
+ - 长句拆分为短句
+ - 被动语态转为主动语态
+ - 功能名称统一:"计算机交互"优于"计算机使用"
+ - 参数说明:"差异更新"优于"差分/补丁"
+
+5. **变量占位符**
+ - 保持原格式:`{{variable}}`
+ - 中文说明放在变量外:"Token 使用量: {{used}}"
+
+## UI Element Translation Standards
+
+1. **按钮(Buttons)**
+
+ - 确认类:确定/取消/应用/保存
+ - 操作类:添加/删除/编辑/导出
+ - 状态类:启用/禁用/展开/收起
+ - 长度限制:2-4个汉字
+
+2. **菜单(Menus)**
+
+ - 主菜单:文件/编辑/视图/帮助
+ - 子菜单:使用">"连接,如"文件>打开"
+ - 快捷键:保留英文,如"Ctrl+S"
+
+3. **标签(Labels)**
+
+ - 设置项:描述功能,如"自动保存间隔"
+ - 状态提示:简洁明确,如"正在处理..."
+ - 单位说明:放在括号内,如"超时时间(秒)"
+
+4. **工具提示(Tooltips)**
+
+ - 功能说明:简洁描述,如"复制选中内容"
+ - 操作指引:步骤明确,如"双击编辑单元格"
+ - 长度限制:不超过50个汉字
+
+5. **对话框(Dialogs)**
+ - 标题:说明对话框用途
+ - 正文:分段落说明
+ - 按钮:使用动词,如"确认删除"
+
+## Contextual Translation Principles
+
+1. **根据UI位置调整**
+
+ - 按钮文本:简洁动词 (如"展开", "收起")
+ - 设置项:描述性 (如"自动批准写入操作")
+ - 帮助文本:完整说明 (如"开启后自动创建任务存档点,方便回溯修改")
+
+2. **技术文档风格**
+
+ - 使用主动语态:如"自动创建和编辑文件"
+ - 避免口语化表达
+ - 复杂功能使用分点说明
+ - 说明操作结果:如"无需二次确认"
+ - 参数说明清晰:如"延迟一段时间再自动批准写入"
+
+3. **品牌/产品名称**
+
+ - 保留英文品牌名
+ - 技术术语保持一致性
+ - 保留英文专有名词:如"AWS Bedrock ARN"
+
+4. **用户操作**
+ - 操作动词统一:
+ - "Click"→"点击"
+ - "Type"→"输入"
+ - "Scroll"→"滚动"
+ - 按钮状态:
+ - "Enabled"→"已启用"
+ - "Disabled"→"已禁用"
+
+## Technical Documentation Guidelines
+
+1. **技术术语**
+
+ - 统一使用"Token"而非"令牌"
+ - 保留英文专有名词:如"Model Context Protocol"
+ - 功能名称统一:如"计算机功能调用"优于"计算机使用"
+
+2. **API文档**
+
+ - 端点(Endpoint):保留原始路径
+ - 参数说明:表格形式展示
+ - 示例:保留代码格式
+ - 参数标签:
+ - 单位明确:如"最大输出 Token 数"
+ - 范围说明完整:如"模型可以处理的总 Token 数"
+
+3. **代码相关翻译**
+
+ - 代码注释:
+ - 保留技术术语:如"// Initialize MCP client"
+ - 简短说明:如"检查文件是否存在"
+ - 错误信息:
+ - 包含错误代码:如"Error 404: 文件未找到"
+ - 提供解决方案:如"请检查文件权限"
+ - 命令行:
+ - 保留原生命令:如"git commit -m 'message'"
+ - 参数说明:如"-v: 显示详细输出"
+
+4. **配置指南**
+ - 设置项命名:如"Enable prompt caching"→"启用提示词缓存"
+ - 价格描述:
+ - 单位统一:如"每百万 Token 的成本"
+ - 说明影响:如"这会影响生成内容和补全的成本"
+ - 操作说明:
+ - 使用编号步骤:如"1. 注册Google Cloud账号"
+ - 步骤动词一致:如"安装配置Google Cloud CLI工具"
+
+## Common Patterns
+
+```markdown
+<<<<<<< BEFORE
+"dragFiles": "按住shift拖动文件"
+=======
+"dragFiles": "Shift+拖拽文件"
+
+> > > > > > > AFTER
+
+<<<<<<< BEFORE
+"description": "启用后,Roo 将能够与 MCP 服务器交互以获取高级功能。"
+=======
+"description": "启用后 Roo 可与 MCP 服务交互获取高级功能。"
+
+> > > > > > > AFTER
+
+<<<<<<< BEFORE
+"cannotUndo": "此操作无法撤消。"
+=======
+"cannotUndo": "此操作不可逆。"
+
+> > > > > > > AFTER
+
+<<<<<<< BEFORE
+"hold shift to drag in files" → "按住shift拖动文件"
+=======
+"hold shift to drag in files" → "Shift+拖拽文件"
+
+> > > > > > > AFTER
+
+<<<<<<< BEFORE
+"Double click to edit" → "双击进行编辑"
+=======
+"Double click to edit" → "双击编辑"
+
+> > > > > > > AFTER
+```
+
+## Common Pitfalls
+
+1. 避免过度直译导致生硬
+
+ - ✗ "Do more with Boomerang Tasks" → "使用回旋镖任务完成更多工作"
+ - ✓ "Do more with Boomerang Tasks" → "允许任务拆分"
+
+2. 保持功能描述准确
+
+ - ✗ "Enhance prompt with additional context" → "使用附加上下文增强提示"
+ - ✓ "Enhance prompt with additional context" → "增强提示词"
+
+3. 操作指引清晰
+
+ - ✗ "hold shift to drag in files" → "按住shift拖动文件"
+ - ✓ "hold shift to drag in files" → "Shift+拖拽文件"
+
+4. 确保术语一致性
+
+ - ✗ 同一文档中混用"Token"/"令牌"/"代币"
+ - ✓ 统一使用"Token"作为技术术语
+
+5. 注意文化适应性
+
+ - ✗ "Kill the process" → "杀死进程"(过于暴力)
+ - ✓ "Kill the process" → "终止进程"
+
+6. 技术文档特殊处理
+ - 代码示例中的注释:
+ ✗ 翻译后破坏代码结构
+ ✓ 保持代码注释原样或仅翻译说明部分
+ - 命令行参数:
+ ✗ 翻译参数名称导致无法使用
+ ✓ 保持参数名称英文,仅翻译说明
+
+## Best Practices
+
+1. **翻译工作流程**
+
+ - 通读全文理解上下文
+ - 标记并统一技术术语
+ - 分段翻译并检查一致性
+ - 最终整体审校
+
+2. **质量检查要点**
+
+ - 术语一致性
+ - 功能描述准确性
+ - UI元素长度适配性
+ - 文化适应性
+
+3. **工具使用建议**
+
+ - 建立项目术语库
+ - 使用翻译记忆工具
+ - 维护风格指南
+ - 定期更新翻译资源
+
+4. **审校流程**
+ - 初翻 → 技术审校 → 语言润色 → 最终确认
+ - 重点关注技术准确性、语言流畅度和UI显示效果
+
+## Quality Checklist
+
+1. 术语是否全文一致?
+2. 是否符合中文技术文档习惯?
+3. UI控件文本是否简洁明确?
+4. 长句是否已合理拆分?
+5. 变量占位符是否保留原格式?
+6. 技术描述是否准确无误?
+7. 文化表达是否恰当?
+8. 是否保持了原文的精确含义?
+9. 特殊格式(如变量、代码)是否正确保留?
diff --git a/.roo/rules-translate/instructions-zh-tw.md b/.roo/rules-translate/instructions-zh-tw.md
new file mode 100644
index 0000000000..ee4d07a07a
--- /dev/null
+++ b/.roo/rules-translate/instructions-zh-tw.md
@@ -0,0 +1,18 @@
+# Traditional Chinese (zh-TW) Translation Guidelines
+
+## Key Terminology
+
+| English Term | Use (zh-TW) | Avoid (Mainland) |
+| ------------- | ----------- | ---------------- |
+| file | 檔案 | 文件 |
+| task | 工作 | 任務 |
+| project | 專案 | 項目 |
+| configuration | 設定 | 配置 |
+| server | 伺服器 | 服務器 |
+| import/export | 匯入/匯出 | 導入/導出 |
+
+## Formatting Rules
+
+- Add spaces between Chinese and English/numbers: "AI 驅動" (not "AI驅動")
+- Use Traditional Chinese quotation marks: 「範例文字」(not "範例文字")
+- Use Taiwanese computing conventions rather than mainland terminology
diff --git a/.roo/rules/rules.md b/.roo/rules/rules.md
new file mode 100644
index 0000000000..4351fc4b81
--- /dev/null
+++ b/.roo/rules/rules.md
@@ -0,0 +1,19 @@
+# Code Quality Rules
+
+1. Test Coverage:
+
+ - Before attempting completion, always make sure that any code changes have test coverage
+ - Ensure all tests pass before submitting changes
+
+2. Lint Rules:
+
+ - Never disable any lint rules without explicit user approval
+
+3. Styling Guidelines:
+ - Use Tailwind CSS classes instead of inline style objects for new markup
+ - VSCode CSS variables must be added to webview-ui/src/index.css before using them in Tailwind classes
+ - Example: `` instead of style objects
+
+# Adding a New Setting
+
+To add a new setting that persists its state, follow the steps in cline_docs/settings.md
diff --git a/.roomodes b/.roomodes
index 9d1719fa31..171c0fcc71 100644
--- a/.roomodes
+++ b/.roomodes
@@ -22,7 +22,6 @@
"slug": "translate",
"name": "Translate",
"roleDefinition": "You are Roo, a linguistic specialist focused on translating and managing localization files. Your responsibility is to help maintain and update translation files for the application, ensuring consistency and accuracy across all language resources.",
- "customInstructions": "# 1. SUPPORTED LANGUAGES AND LOCATION\n- Localize all strings into the following locale files: ca, de, en, es, fr, hi, it, ja, ko, pl, pt-BR, tr, vi, zh-CN, zh-TW\n- The VSCode extension has two main areas that require localization:\n * Core Extension: src/i18n/locales/ (extension backend)\n * WebView UI: webview-ui/src/i18n/locales/ (user interface)\n\n# 2. VOICE, STYLE AND TONE\n- Always use informal speech (e.g., \"du\" instead of \"Sie\" in German) for all translations\n- Maintain a direct and concise style that mirrors the tone of the original text\n- Carefully account for colloquialisms and idiomatic expressions in both source and target languages\n- Aim for culturally relevant and meaningful translations rather than literal translations\n- Preserve the personality and voice of the original content\n- Use natural-sounding language that feels native to speakers of the target language\n- Don't translate the word \"token\" as it means something specific in English that all languages will understand\n- Don't translate domain-specific words (especially technical terms like \"Prompt\") that are commonly used in English in the target language\n\n# 3. CORE EXTENSION LOCALIZATION (src/)\n- Located in src/i18n/locales/\n- NOT ALL strings in core source need internationalization - only user-facing messages\n- Internal error messages, debugging logs, and developer-facing messages should remain in English\n- The t() function is used with namespaces like 'core:errors.missingToolParameter'\n- Be careful when modifying interpolation variables; they must remain consistent across all translations\n- Some strings in formatResponse.ts are intentionally not internationalized since they're internal\n- When updating strings in core.json, maintain all existing interpolation variables\n- Check string usages in the codebase before making changes to ensure you're not breaking functionality\n\n# 4. WEBVIEW UI LOCALIZATION (webview-ui/src/)\n- Located in webview-ui/src/i18n/locales/\n- Uses standard React i18next patterns with the useTranslation hook\n- All user interface strings should be internationalized\n- Always use the Trans component with named components for text with embedded components\n\n example:\n\n`\"changeSettings\": \"You can always change this at the bottom of the settings\",`\n\n```\n \n }}\n />\n```\n\n# 5. TECHNICAL IMPLEMENTATION\n- Use namespaces to organize translations logically\n- Handle pluralization using i18next's built-in capabilities\n- Implement proper interpolation for variables using {{variable}} syntax\n- Don't include defaultValue. The `en` translations are the fallback\n- Always use apply_diff instead of write_to_file when editing existing translation files (much faster and more reliable)\n- When using apply_diff, carefully identify the exact JSON structure to edit to avoid syntax errors\n- Placeholders (like {{variable}}) must remain exactly identical to the English source to maintain code integration and prevent syntax errors\n\n# 6. WORKFLOW AND APPROACH\n- First add or modify English strings, then ask for confirmation before translating to all other languages\n- Use this process for each localization task:\n 1. Identify where the string appears in the UI/codebase\n 2. Understand the context and purpose of the string\n 3. Update English translation first\n 4. Create appropriate translations for all other supported languages\n 5. Validate your changes with the missing translations script\n- Flag or comment if an English source string is incomplete (\"please see this...\") to avoid truncated or unclear translations\n- For UI elements, distinguish between:\n * Button labels: Use short imperative commands (\"Save\", \"Cancel\")\n * Tooltip text: Can be slightly more descriptive\n- Preserve the original perspective: If text is a user command directed at the software, ensure the translation maintains this direction, avoiding language that makes it sound like an instruction from the system to the user\n\n# 7. COMMON PITFALLS TO AVOID\n- Switching between formal and informal addressing styles - always stay informal (\"du\" not \"Sie\")\n- Translating or altering technical terms and brand names that should remain in English\n- Modifying or removing placeholders like {{variable}} - these must remain identical\n- Translating domain-specific terms that are commonly used in English in the target language\n- Changing the meaning or nuance of instructions or error messages\n- Forgetting to maintain consistent terminology throughout the translation\n\n# 8. QUALITY ASSURANCE\n- Maintain consistent terminology across all translations\n- Respect the JSON structure of translation files\n- Watch for placeholders and preserve them in translations\n- Be mindful of text length in UI elements when translating to languages that might require more characters\n- Use context-aware translations when the same string has different meanings\n- Always validate your translation work by running the missing translations script:\n ```\n node scripts/find-missing-translations.js\n ```\n- Address any missing translations identified by the script to ensure complete coverage across all locales\n\n# 9. TRANSLATOR'S CHECKLIST\n- ✓ Used informal tone consistently (\"du\" not \"Sie\")\n- ✓ Preserved all placeholders exactly as in the English source\n- ✓ Maintained consistent terminology with existing translations\n- ✓ Kept technical terms and brand names unchanged where appropriate\n- ✓ Preserved the original perspective (user→system vs system→user)\n- ✓ Adapted the text appropriately for UI context (buttons vs tooltips)",
"groups": [
"read",
"command",
diff --git a/.vscodeignore b/.vscodeignore
index 2a46fdd142..d5bf65b3d8 100644
--- a/.vscodeignore
+++ b/.vscodeignore
@@ -20,15 +20,17 @@ vsc-extension-quickstart.md
**/.vscode-test.*
# Custom
-demo.gif
.nvmrc
.gitattributes
.prettierignore
.clinerules*
.roomodes
+.roo/**
cline_docs/**
coverage/**
locales/**
+benchmark/**
+.direnv/**
# Ignore all webview-ui files except the build directory (https://github.com/microsoft/vscode-webview-ui-toolkit-samples/blob/main/frameworks/hello-world-react-cra/.vscodeignore)
webview-ui/src/**
@@ -48,6 +50,8 @@ webview-ui/node_modules/**
# Include default themes JSON files used in getTheme
!src/integrations/theme/default-themes/**
+# Ignore doc assets
+assets/docs/**
# Include icons and images
!assets/icons/**
!assets/images/**
diff --git a/CHANGELOG.md b/CHANGELOG.md
index ddb250a3e5..2559714ab9 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,5 +1,108 @@
# Roo Code Changelog
+## [3.12.2] - 2025-04-16
+
+- Add OpenAI o3 & 4o-mini (thanks @PeterDaveHello!)
+- Improve file/folder context mention UI (thanks @elianiva!)
+- Improve diff error telemetry
+
+## [3.12.1] - 2025-04-16
+
+- Bugfix to Edit button visibility in the select dropdowns
+
+## [3.12.0] - 2025-04-15
+
+- Add xAI provider and expose reasoning effort options for Grok on OpenRouter (thanks Cline!)
+- Make diff editing config per-profile and improve pre-diff string normalization
+- Make checkpoints faster and more reliable
+- Add a search bar to mode and profile select dropdowns (thanks @samhvw8!)
+- Add telemetry for code action usage, prompt enhancement usage, and consecutive mistake errors
+- Suppress zero cost values in the task header (thanks @do-it!)
+- Make JSON parsing safer to avoid crashing the webview on bad input
+- Allow users to bind a keyboard shortcut for accepting suggestions or input in the chat view (thanks @axkirillov!)
+
+## [3.11.17] - 2025-04-14
+
+- Improvements to OpenAI cache reporting and cost estimates (thanks @monotykamary and Cline!)
+- Visual improvements to the auto-approve toggles (thanks @sachasayan!)
+- Bugfix to diff apply logic (thanks @avtc for the test case!) and telemetry to track errors going forward
+- Fix race condition in capturing short-running terminal commands (thanks @KJ7LNW!)
+- Fix eslint error (thanks @nobu007!)
+
+## [3.11.16] - 2025-04-14
+
+- Add gpt-4.1, gpt-4.1-mini, and gpt-4.1-nano to the OpenAI provider
+- Include model ID in environment details and when exporting tasks (thanks @feifei325!)
+
+## [3.11.15] - 2025-04-13
+
+- Add ability to filter task history by workspace (thanks @samhvw8!)
+- Fix Node.js version in the .tool-versions file (thanks @bogdan0083!)
+- Fix duplicate suggested mentions for open tabs (thanks @samhvw8!)
+- Fix Bedrock ARN validation and token expiry issue when using profiles (thanks @vagadiya!)
+- Add Anthropic option to pass API token as Authorization header instead of X-Api-Key (thanks @mecab!)
+- Better documentation for adding new settings (thanks @KJ7LNW!)
+- Localize package.json (thanks @samhvw8!)
+- Add option to hide the welcome message and fix the background color for the new profile dialog (thanks @zhangtony239!)
+- Restore the focus ring for the VSCodeButton component (thanks @pokutuna!)
+
+## [3.11.14] - 2025-04-11
+
+- Support symbolic links in rules folders to directories and other symbolic links (thanks @taisukeoe!)
+- Stronger enforcement of the setting to always read full files instead of doing partial reads
+
+## [3.11.13] - 2025-04-11
+
+- Loads of terminal improvements: command delay, PowerShell counter, and ZSH EOL mark (thanks @KJ7LNW!)
+- Add file context tracking system (thanks @samhvw8 and @canvrno!)
+- Improved display of diff errors + easy copying for investigation
+- Fixes to .vscodeignore (thanks @franekp!)
+- Fix a zh-CN translation for model capabilities (thanks @zhangtony239!)
+- Rename AWS Bedrock to Amazon Bedrock (thanks @ronyblum!)
+- Update extension title and description (thanks @StevenTCramer!)
+
+## [3.11.12] - 2025-04-09
+
+- Make Grok3 streaming work with OpenAI Compatible (thanks @amittell!)
+- Tweak diff editing logic to make it more tolerant of model errors
+
+## [3.11.11] - 2025-04-09
+
+- Fix highlighting interaction with mode/profile dropdowns (thanks @atlasgong!)
+- Add the ability to set Host header and legacy OpenAI API in the OpenAI-compatible provider for better proxy support
+- Improvements to TypeScript, C++, Go, Java, Python tree-sitter parsers (thanks @KJ7LNW!)
+- Fixes to terminal working directory logic (thanks @KJ7LNW!)
+- Improve readFileTool XML output format (thanks @KJ7LNW!)
+- Add o1-pro support (thanks @arthurauffray!)
+- Follow symlinked rules files/directories to allow for more flexible rule setups
+- Focus Roo Code in the sidebar when running tasks in the sidebar via the API
+- Improve subtasks UI
+
+## [3.11.10] - 2025-04-08
+
+- Fix bug where nested .roo/rules directories are not respected properly (thanks @taisukeoe!)
+- Handle long command output more efficiently in the chat row (thanks @samhvw8!)
+- Fix cache usage tracking for OpenAI-compatible providers
+- Add custom translation instructions for zh-CN (thanks @System233!)
+- Code cleanup after making rate-limits per-profile (thanks @ross!)
+
+## [3.11.9] - 2025-04-07
+
+- Rate-limit setting updated to be per-profile (thanks @ross and @olweraltuve!)
+- You can now place multiple rules files in the .roo/rules/ and .roo/rules-{mode}/ folders (thanks @upamune!)
+- Prevent unnecessary autoscroll when buttons appear (thanks @shtse8!)
+- Add Gemini 2.5 Pro Preview to Vertex AI (thanks @nbihan-mediware!)
+- Tidy up following ClineProvider refactor (thanks @diarmidmackenzie!)
+- Clamp negative line numbers when reading files (thanks @KJ7LNW!)
+- Enhance Rust tree-sitter parser with advanced language structures (thanks @KJ7LNW!)
+- Persist settings on api.setConfiguration (thanks @gtaylor!)
+- Add deep links to settings sections
+- Add command to focus Roo Code input field (thanks @axkirillov!)
+- Add resize and hover actions to the browser (thanks @SplittyDev!)
+- Add resumeTask and isTaskInHistory to the API (thanks @franekp!)
+- Fix bug displaying boolean/numeric suggested answers
+- Dynamic Vite port detection for webview development (thanks @KJ7LNW!)
+
## [3.11.8] - 2025-04-05
- Improve combineApiRequests performance to reduce gray screens of death (thanks @kyle-apex!)
diff --git a/README.md b/README.md
index 72b6d80660..aa6a182f0f 100644
--- a/README.md
+++ b/README.md
@@ -11,9 +11,11 @@ English • [Català](locales/ca/README.md) • [Deutsch](locales/de/README.md)
-
-
Join the Roo Code Community
+
Roo Code (prev. Roo Cline)
+
+
+
Connect with developers, contribute ideas, and stay ahead with the latest AI-powered coding tools.
@@ -24,7 +26,6 @@ English • [Català](locales/ca/README.md) • [Deutsch](locales/de/README.md)
-
Roo Code (prev. Roo Cline)
@@ -48,15 +49,13 @@ Check out the [CHANGELOG](CHANGELOG.md) for detailed updates and fixes.
---
-## 🎉 Roo Code 3.11 Released
+## 🎉 Roo Code 3.12 Released
-Roo Code 3.11 brings significant performance improvements and new features!
+Roo Code 3.12 brings new features and improvements based on your feedback!
-- Fast Edits - Edits now apply way faster. Less waiting, more coding.
-- API Key Balances - View your OpenRouter and Requesty balances in settings.
-- Project-Level MCP Config - Now you can configure it per project/workspace.
-- Improved Gemini Support - Smarter retries, fixed escaping, added to Vertex provider.
-- Import/Export Settings - Easily back up or share your config across setups.
+- **Grok Support** - Added the xAI provider and Grok reasoning effort options on OpenRouter.
+- **Diff Editing Improvements** - Per-profile configuration and better string normalization for fewer errors.
+- **Checkpoint Enhancements** - Faster and more reliable checkpoints.
---
@@ -182,27 +181,29 @@ Thanks to all our contributors who have helped make Roo Code better!
-| mrubens | saoudrizwan | cte | samhvw8 | daniel-lxs | a8trejo |
-| :-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: |
-| ColemanRoo | stea9499 | joemanley201 | System233 | hannesrudolph | jquanton |
-| nissa-seru | NyxJae | MuriloFP | punkpeye | d-oit | monotykamary |
-| Smartsheet-JB-Brown | feifei325 | vigneshsubbiah16 | lloydchang | KJ7LNW | cannuri |
-| Szpadel | wkordalski | lupuletic | qdaxb | Premshay | psv2522 |
-| olweraltuve | diarmidmackenzie | RaySinner | aheizi | afshawnlotfi | pugazhendhi-m |
-| PeterDaveHello | pdecat | kyle-apex | emshvac | aitoroses | dtrugman |
-| p12tic | sammcj | Lunchb0ne | heyseth | StevenTCramer | upamune |
-| arthurauffray | eonghk | teddyOOXX | vincentsong | yongjer | yt3trees |
-| anton-otee | benzntech | GitlyHallows | gtaylor | jcbdev | Chenjiayuan195 |
-| mdp | napter | philfung | kohii | kinandan | jwcraig |
-| shoopapa | im47cn | dqroid | dairui1 | bannzai | axmo |
-| ashktn | Yoshino-Yukitaro | vladstudio | AMHesch | lightrabbit | olup |
-| moqimoqidea | mosleyit | oprstchn | philipnext | refactorthis | samir-nimbly |
-| shaybc | shohei-ihaya | student20880 | cdlliuy | PretzelVector | nevermorec |
-| adamwlarson | alarno | andreastempsch | Atlogit | bramburn | chadgauth |
-| dleen | dbasclpy | snoyiatk | linegel | celestial-vault | franekp |
-| DeXtroTip | hesara | eltociear | Jdo300 | libertyteeth | mamertofabian |
-| marvijo-code | kvokka | nbihan-mediware | Sarke | 01Rian | samsilveira |
-| maekawataiki | tgfjt | thomasjeung | | | |
+| mrubens | saoudrizwan | cte | samhvw8 | daniel-lxs | a8trejo |
+| :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: |
+| ColemanRoo | stea9499 | joemanley201 | System233 | hannesrudolph | nissa-seru |
+| jquanton | KJ7LNW | NyxJae | MuriloFP | d-oit | punkpeye |
+| monotykamary | Smartsheet-JB-Brown | feifei325 | wkordalski | cannuri | lloydchang |
+| vigneshsubbiah16 | Szpadel | lupuletic | qdaxb | Premshay | psv2522 |
+| diarmidmackenzie | olweraltuve | RaySinner | aheizi | afshawnlotfi | pugazhendhi-m |
+| PeterDaveHello | pdecat | kyle-apex | emshvac | Lunchb0ne | arthurauffray |
+| zhangtony239 | upamune | StevenTCramer | sammcj | p12tic | gtaylor |
+| dtrugman | aitoroses | yt3trees | franekp | yongjer | vincentsong |
+| vagadiya | teddyOOXX | eonghk | taisukeoe | heyseth | ross |
+| philfung | nbihan-mediware | napter | mdp | SplittyDev | Chenjiayuan195 |
+| jcbdev | GitlyHallows | bramburn | anton-otee | benzntech | shoopapa |
+| jwcraig | kinandan | kohii | lightrabbit | olup | mecab |
+| im47cn | dqroid | dairui1 | bannzai | axmo | ashktn |
+| amittell | Yoshino-Yukitaro | moqimoqidea | mosleyit | nobu007 | oprstchn |
+| philipnext | pokutuna | refactorthis | ronyblum | samir-nimbly | shaybc |
+| shohei-ihaya | student20880 | cdlliuy | PretzelVector | nevermorec | AMHesch |
+| adamwlarson | alarno | axkirillov | andreastempsch | atlasgong | Atlogit |
+| bogdan0083 | chadgauth | dleen | dbasclpy | snoyiatk | linegel |
+| celestial-vault | DeXtroTip | hesara | eltociear | Jdo300 | shtse8 |
+| libertyteeth | mamertofabian | marvijo-code | kvokka | Sarke | 01Rian |
+| sachasayan | samsilveira | maekawataiki | tgfjt | tmsjngx0 | vladstudio |
diff --git a/assets/docs/demo.gif b/assets/docs/demo.gif
index 35eb8d0bbe..c45e64bc31 100644
--- a/assets/docs/demo.gif
+++ b/assets/docs/demo.gif
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:d426d600fa80e9ac237cbad6b3f7f47a4aa2005d5218184e6b9565a8ee46d1ba
-size 19108207
+oid sha256:a27ab29e2b5cf8ae65efd35222d456de4b9b1956b159705f9ead3d19426fabae
+size 7456839
diff --git a/cline_docs/bedrock/bedrock-cache-strategy-documentation.md b/cline_docs/bedrock/bedrock-cache-strategy-documentation.md
index a18321f476..09d67fd996 100644
--- a/cline_docs/bedrock/bedrock-cache-strategy-documentation.md
+++ b/cline_docs/bedrock/bedrock-cache-strategy-documentation.md
@@ -1,6 +1,6 @@
# Cache Strategy Documentation
-This document provides an overview of the cache strategy implementation for AWS Bedrock in the Roo-Code project, including class relationships and sequence diagrams.
+This document provides an overview of the cache strategy implementation for Amazon Bedrock in the Roo-Code project, including class relationships and sequence diagrams.
## Class Relationship Diagram
@@ -89,7 +89,7 @@ sequenceDiagram
participant Client as Client Code
participant Bedrock as AwsBedrockHandler
participant Strategy as MultiPointStrategy
- participant AWS as AWS Bedrock Service
+ participant AWS as Amazon Bedrock Service
Client->>Bedrock: createMessage(systemPrompt, messages)
Note over Bedrock: Generate conversationId to track cache points
@@ -143,7 +143,7 @@ sequenceDiagram
### Cache Strategy
-The cache strategy system is designed to optimize the placement of cache points in AWS Bedrock API requests. Cache points allow the service to reuse previously processed parts of the prompt, reducing token usage and improving response times.
+The cache strategy system is designed to optimize the placement of cache points in Amazon Bedrock API requests. Cache points allow the service to reuse previously processed parts of the prompt, reducing token usage and improving response times.
- **MultiPointStrategy**: Upon first MR of Bedrock caching, this strategy is used for all cache point placement scenarios. It distributes cache points throughout the conversation to maximize caching efficiency, whether the model supports one or multiple cache points.
@@ -180,14 +180,14 @@ The simplified approach ensures that:
The examples in this document reflect this optimized implementation.
-### Integration with AWS Bedrock
+### Integration with Amazon Bedrock
The AwsBedrockHandler class integrates with the cache strategies by:
1. Determining if the model supports prompt caching
2. Creating the appropriate strategy based on model capabilities
3. Applying the strategy to format messages with optimal cache points
-4. Sending the formatted request to AWS Bedrock
+4. Sending the formatted request to Amazon Bedrock
5. Processing and returning the response
## Usage Considerations
diff --git a/cline_docs/bedrock/model-identification.md b/cline_docs/bedrock/model-identification.md
index 602c2e6fe1..7d778b186a 100644
--- a/cline_docs/bedrock/model-identification.md
+++ b/cline_docs/bedrock/model-identification.md
@@ -1,6 +1,6 @@
# Bedrock Model Identification
-This document explains how model information is identified and managed in the AWS Bedrock provider implementation (`bedrock.ts`). It focuses on the sequence of operations that determine the `costModelConfig` property, which is crucial for token counting, pricing, and other features.
+This document explains how model information is identified and managed in the Amazon Bedrock provider implementation (`bedrock.ts`). It focuses on the sequence of operations that determine the `costModelConfig` property, which is crucial for token counting, pricing, and other features.
## Model Identification Flow
diff --git a/cline_docs/settings.md b/cline_docs/settings.md
index f4b0682602..cc04bd9848 100644
--- a/cline_docs/settings.md
+++ b/cline_docs/settings.md
@@ -1,12 +1,20 @@
## For All Settings
-1. Add the setting to ExtensionMessage.ts:
+1. Add the setting to schema definitions:
- - Add the setting to the ExtensionState interface
- - Make it required if it has a default value, optional if it can be undefined
- - Example: `preferredLanguage: string`
+ - Add the item to `globalSettingsSchema` in `schemas/index.ts`
+ - Add the item to `globalSettingsRecord` in `schemas/index.ts`
+ - Example: `terminalCommandDelay: z.number().optional(),`
-2. Add test coverage:
+2. Add the setting to type definitions:
+
+ - Add the item to `exports/types.ts`
+ - Add the item to `exports/roo-code.d.ts`
+ - Add the setting to `shared/ExtensionMessage.ts`
+ - Add the setting to the WebviewMessage type in `shared/WebviewMessage.ts`
+ - Example: `terminalCommandDelay?: number | undefined`
+
+3. Add test coverage:
- Add the setting to mockState in ClineProvider.test.ts
- Add test cases for setting persistence and state updates
- Ensure all tests pass before submitting changes
@@ -64,12 +72,35 @@
```
5. Add the setting to handleSubmit in SettingsView.tsx:
- - Add a vscode.postMessage call to send the setting's value when clicking Done
+
+ - Add a vscode.postMessage call to send the setting's value when clicking Save
+ - This step is critical for persistence - without it, the setting will not be saved when the user clicks Save
- Example:
```typescript
vscode.postMessage({ type: "multisearchDiffEnabled", bool: multisearchDiffEnabled })
```
+6. Style Considerations:
+ - Use the VSCodeCheckbox component from @vscode/webview-ui-toolkit/react instead of HTML input elements
+ - Wrap each checkbox in a div element for proper spacing
+ - Use a span with className="font-medium" for the checkbox label inside the VSCodeCheckbox component
+ - Place the description in a separate div with className="text-vscode-descriptionForeground text-sm mt-1"
+ - Maintain consistent spacing between configuration options
+ - Example:
+ ```typescript
+