Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
67 commits
Select commit Hold shift + click to select a range
7b56422
Interpolate settings link in telemetry banner (#1873)
mrubens Mar 21, 2025
02081de
Revert "feat(mentions): improve path handling for Windows and escaped…
mrubens Mar 21, 2025
abf9bba
v3.10.2 (#1877)
mrubens Mar 21, 2025
8663e52
Changeset version bump (#1878)
R00-B0T Mar 21, 2025
f5628e5
Support mentioning binary files (#1880)
mrubens Mar 21, 2025
daaba1c
Update contributors list (#1851)
github-actions[bot] Mar 21, 2025
e075fbf
Add roadmap to CONTRIBUTING (#1883)
mrubens Mar 21, 2025
def4018
Don't do partial reads on binary files (#1886)
mrubens Mar 21, 2025
81692a4
fix: escape section markers in apply_diff
Mar 21, 2025
1b8bac6
fix: pass multi-block flag to getDiffStrategy in system instructions
Mar 21, 2025
c7321b0
fix: reject apply_diff when search matches replace content
Mar 21, 2025
4b3f711
fix: enforce newlines between diff section separators
Mar 22, 2025
2032c9e
test: add validateMarkerSequencing test cases
Mar 22, 2025
04854ea
test: add tests for escaped marker handling in multi-search-replace
Mar 22, 2025
4338f64
Update contributors list (#1884)
github-actions[bot] Mar 22, 2025
92dee31
fix: make dropdown menu background fully opaque (#1907)
KJ7LNW Mar 22, 2025
2597347
Use openrouter stream_options include_usage (#1905)
mrubens Mar 23, 2025
b41dd73
fix: prevent negative line index when maxReadFileLine is zero (#1915)
mrubens Mar 23, 2025
87b9b72
Corrected bug in openrouter.ts and pre-commit and pre-push husky scri…
Jdo300 Mar 23, 2025
2ab5aad
Fixes for prompts suite unit tests on windows (#1879)
diarmidmackenzie Mar 23, 2025
3c3dd9d
Merge pull request #1861 from KJ7LNW/roo-fix-apply-diff-collisions
mrubens Mar 23, 2025
003388a
Fix maxTokens to 8192 only for compatible Anthropic models (#1862)
pugazhendhi-m Mar 23, 2025
e810a88
Welcome page OAuth (#1913)
mrubens Mar 23, 2025
a866a1c
fix add line wrong index (#1927)
samhvw8 Mar 23, 2025
f07c7e6
Fix question display logic when not streaming (#1931)
mrubens Mar 24, 2025
29d7846
Update suggestion button variant to make it work in all themes (#1932)
mrubens Mar 24, 2025
5720b6b
Tweaks to file read auto-truncate (#1934)
mrubens Mar 24, 2025
7bf143e
Changeset version bump (#1881)
R00-B0T Mar 24, 2025
89013dd
Update contributors list (#1914)
github-actions[bot] Mar 24, 2025
e8d6a55
i18n: Update numeric formatting suffixes to improve consistency (#1939)
feifei325 Mar 24, 2025
cc2420e
fix qwq model in openai provider (#1940)
teddyOOXX Mar 24, 2025
2985172
feat: add bedrock application inference profile (#1938)
maekawataiki Mar 24, 2025
83ba22a
optimize context files (fix) (#1933)
aheizi Mar 24, 2025
30f9d8f
Better openrouter error handling (#1945)
mrubens Mar 24, 2025
15338ed
Bring back open files and git results in mention suggestions (#1946)
mrubens Mar 24, 2025
187979a
feat: add test declarations support in typescript tree-sitter queries…
KJ7LNW Mar 24, 2025
8ad4fff
Removed hardcoded filenames to GlobalFileNames constants. (#1904)
StevenTCramer Mar 24, 2025
953a9c7
refactor: align tree-sitter output with other tools (#1859)
KJ7LNW Mar 24, 2025
fdcc679
Add `taskCreated` event to API and subscribe to Cline events earlier …
wkordalski Mar 24, 2025
2953bae
[clinerules] search clinerule in parent folders which make it easier …
cdlliuy Mar 24, 2025
c74c235
Update contributors list (#1936)
github-actions[bot] Mar 24, 2025
92dd8e3
Fix browser tool visibility in system prompt preview (#1840)
cannuri Mar 24, 2025
9285002
Run 'npm audit fix' on everything (#1817)
cte Mar 24, 2025
1c9daf5
Support customize storage path (#1941)
Chenjiayuan195 Mar 24, 2025
809e8cd
#906 - Add watchPaths option to McpHub for file change detection (#1755)
01Rian Mar 24, 2025
d91467f
fix: Readme docs links (#1951)
kvokka Mar 24, 2025
418694b
Update UX for text area (#1953)
chadgauth Mar 24, 2025
fe4e732
Update contributors list (#1949)
github-actions[bot] Mar 25, 2025
6d8e7bb
Internationalization support for custom storage path functionality (#…
Chenjiayuan195 Mar 25, 2025
fbc31c3
Update contributors list (#1958)
github-actions[bot] Mar 25, 2025
4fa4943
Revert "[clinerules] search clinerule in parent folders which make it…
mrubens Mar 25, 2025
237ee32
Support mcp image resource (#1962)
nevermorec Mar 25, 2025
9442139
Update contributors list (#1960)
github-actions[bot] Mar 25, 2025
1810efe
Additional checkbox for auto-approving reads and writes outside of th…
mrubens Mar 25, 2025
22d01ce
Add specific strings for read/edit outside of the workspace (#1970)
mrubens Mar 25, 2025
0bc4f30
add new task command (#1648)
qdaxb Mar 25, 2025
45299a9
Fix the supportsPromptCache value for OpenAI models (#1923)
PeterDaveHello Mar 25, 2025
ec423a7
Fetch instructions (#1869)
diarmidmackenzie Mar 25, 2025
8613daf
Added Gemini 2.5 Pro model to Google Gemini Provider (#1974)
samsilveira Mar 25, 2025
6258493
Update contributors list (#1967)
github-actions[bot] Mar 25, 2025
b8549f1
Auto-approval logic for fetch_instructions (#1976)
mrubens Mar 25, 2025
f773bc3
Remove "Enable Custom Mode Creation Through Prompts" toggle (#1980)
diarmidmackenzie Mar 25, 2025
3cd549b
Update contributors list (#1978)
github-actions[bot] Mar 25, 2025
2c77043
v3.10.4 (#1983)
mrubens Mar 25, 2025
1d1c335
Changeset version bump (#1947)
R00-B0T Mar 25, 2025
f071a43
Updated value of max tokens for gemini-2.5-pro-03-25 to correct one (…
linegel Mar 26, 2025
da0a3b5
WIP/Cline-breaking-up-services
Mar 26, 2025
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
9 changes: 8 additions & 1 deletion .husky/pre-commit
Original file line number Diff line number Diff line change
Expand Up @@ -5,4 +5,11 @@ if [ "$branch" = "main" ]; then
exit 1
fi

npx lint-staged
# Detect if running on Windows and use npx.cmd, otherwise use npx
if [ "$OS" = "Windows_NT" ]; then
npx_cmd="npx.cmd"
else
npx_cmd="npx"
fi

"$npx_cmd" lint-staged
9 changes: 8 additions & 1 deletion .husky/pre-push
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,14 @@ if [ "$branch" = "main" ]; then
exit 1
fi

npm run compile
# Detect if running on Windows and use npm.cmd, otherwise use npm
if [ "$OS" = "Windows_NT" ]; then
npm_cmd="npm.cmd"
else
npm_cmd="npm"
fi

"$npm_cmd" run compile

# Check for new changesets.
NEW_CHANGESETS=$(find .changeset -name "*.md" ! -name "README.md" | wc -l | tr -d ' ')
Expand Down
2 changes: 1 addition & 1 deletion .roomodes
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@
"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 for text with embedded components\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)",
"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<Trans> example:\n\n`\"changeSettings\": \"You can always change this at the bottom of the <settingsLink>settings</settingsLink>\",`\n\n```\n <Trans\n i18nKey=\"welcome:telemetry.changeSettings\"\n components={{\n settingsLink: <VSCodeLink href=\"#\" onClick={handleOpenSettings} />\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",
Expand Down
3 changes: 2 additions & 1 deletion .vscodeignore
Original file line number Diff line number Diff line change
Expand Up @@ -48,8 +48,9 @@ webview-ui/node_modules/**
# Include default themes JSON files used in getTheme
!src/integrations/theme/default-themes/**

# Include icons
# Include icons and images
!assets/icons/**
!assets/images/**

# Include .env file for telemetry
!.env
44 changes: 44 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,49 @@
# Roo Code Changelog

## [3.10.4] - 2025-03-25

- Dynamically fetch instructions for creating/editing custom modes and MCP servers (thanks @diarmidmackenzie!)
- Added Gemini 2.5 Pro model to Google Gemini provider (thanks @samsilveira!)
- Add settings to control whether to auto-approve reads and writes outside of the workspace
- Update UX for chat text area (thanks @chadgauth!)
- Support a custom storage path for tasks (thanks @Chenjiayuan195!)
- Add a New Task command in the Command Palette (thanks @qdaxb!)
- Add R1 support checkbox to Open AI compatible provider to support QWQ (thanks @teddyOOXX!)
- Support test declarations in TypeScript tree-sitter queries (thanks @KJ7LNW!)
- Add Bedrock support for application-inference-profile (thanks @maekawataiki!)
- Rename and migrate global MCP and modes files (thanks @StevenTCramer!)
- Add watchPaths option to McpHub for file change detection (thanks @01Rian!)
- Read image responses from MCP calls (thanks @nevermorec!)
- Add taskCreated event to API and subscribe to Cline events earlier (thanks @wkordalski!)
- Fixes to numeric formatting suffix internationalization (thanks @feifei325!)
- Fix open tab support in the context mention suggestions (thanks @aheizi!)
- Better display of OpenRouter “overloaded” error messages
- Fix browser tool visibility in system prompt preview (thanks @cannuri!)
- Fix the supportsPromptCache value for OpenAI models (thanks @PeterDaveHello!)
- Fix readme links to docs (thanks @kvokka!)
- Run ‘npm audit fix’ on all of our libraries

## [3.10.3] - 2025-03-23

- Update the welcome page to provide 1-click OAuth flows with LLM routers (thanks @dtrugman!)
- Switch to a more direct method of tracking OpenRouter tokens/spend
- Make partial file reads backwards-compatible with custom system prompts and give users more control over the chunk size
- Fix issues where questions and suggestions weren’t showing up for non-streaming models and were hard to read in some themes
- A variety of fixes and improvements to experimental multi-block diff (thanks @KJ7LNW!)
- Fix opacity of drop-down menus in settings (thanks @KJ7LNW!)
- Fix bugs with reading and mentioning binary files like PDFs
- Fix the pricing information for OpenRouter free models (thanks @Jdo300!)
- Fix an issue with our unit tests on Windows (thanks @diarmidmackenzie!)
- Fix a maxTokens issue for the Outbound provider (thanks @pugazhendhi-m!)
- Fix a line number issue with partial file reads (thanks @samhvw8!)

## [3.10.2] - 2025-03-21

- Fixes to context mentions on Windows
- Fixes to German translations (thanks @cannuri!)
- Fixes to telemetry banner internationalization
- Sonnet 3.7 non-thinking now correctly uses 8192 max output tokens

## [3.10.1] - 2025-03-20

- Make the suggested responses optional to not break overriden system prompts
Expand Down
63 changes: 62 additions & 1 deletion CONTRIBUTING.md
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,68 @@ Looking for a good first contribution? Check out issues in the "Issue [Unassigne

We also welcome contributions to our [documentation](https://docs.roocode.com/)! Whether it's fixing typos, improving existing guides, or creating new educational content - we'd love to build a community-driven repository of resources that helps everyone get the most out of Roo Code. You can click "Edit this page" on any page to quickly get to the right spot in Github to edit the file, or you can dive directly into https://github.com/RooVetGit/Roo-Code-Docs.

If you're planning to work on a bigger feature, please create a [feature request](https://github.com/RooVetGit/Roo-Code/discussions/categories/feature-requests?discussions_q=is%3Aopen+category%3A%22Feature+Requests%22+sort%3Atop) first so we can discuss whether it aligns with Roo Code's vision.
If you're planning to work on a bigger feature, please create a [feature request](https://github.com/RooVetGit/Roo-Code/discussions/categories/feature-requests?discussions_q=is%3Aopen+category%3A%22Feature+Requests%22+sort%3Atop) first so we can discuss whether it aligns with Roo Code's vision. You may also want to check our [Project Roadmap](#project-roadmap) below to see if your idea fits with our strategic direction.

## Project Roadmap

Roo Code has a clear development roadmap that guides our priorities and future direction. Understanding our roadmap can help you:

- Align your contributions with project goals
- Identify areas where your expertise would be most valuable
- Understand the context behind certain design decisions
- Find inspiration for new features that support our vision

Our current roadmap focuses on six key pillars:

### Provider Support

We aim to support as many providers well as we can:

- More versatile "OpenAI Compatible" support
- xAI, Microsoft Azure AI, Alibaba Cloud Qwen, IBM Watsonx, Together AI, DeepInfra, Fireworks AI, Cohere, Perplexity AI, FriendliAI, Replicate
- Enhanced support for Ollama and LM Studio

### Model Support

We want Roo to work as well on as many models as possible, including local models:

- Local model support through custom system prompting and workflows
- Benchmarking evals and test cases

### System Support

We want Roo to run well on everyone's computer:

- Cross platform terminal integration
- Strong and consistent support for Mac, Windows, and Linux

### Documentation

We want comprehensive, accessible documentation for all users and contributors:

- Expanded user guides and tutorials
- Clear API documentation
- Better contributor guidance
- Multilingual documentation resources
- Interactive examples and code samples

### Stability

We want to significantly decrease the number of bugs and increase automated testing:

- Debug logging switch
- "Machine/Task Information" copy button for sending in with bug/support requests

### Internationalization

We want Roo to speak everyone's language:

- 我们希望 Roo Code 说每个人的语言
- Queremos que Roo Code hable el idioma de todos
- हम चाहते हैं कि Roo Code हर किसी की भाषा बोले
- نريد أن يتحدث Roo Code لغة الجميع

We especially welcome contributions that advance our roadmap goals. If you're working on something that aligns with these pillars, please mention it in your PR description.

## Development Setup

Expand Down
Loading