diff --git a/docs/basic-usage/using-modes.md b/docs/basic-usage/using-modes.md index 7c7adb56..aa051950 100644 --- a/docs/basic-usage/using-modes.md +++ b/docs/basic-usage/using-modes.md @@ -19,11 +19,11 @@ Four ways to switch modes: 1. **Dropdown menu:** Click the selector to the left of the chat input - Using the dropdown menu to switch modes + Using the dropdown menu to switch modes 2. **Slash command:** Type `/architect`, `/ask`, `/debug`, `/code`, or `/orchestrator` in the chat input - Using slash commands to switch modes + Using slash commands to switch modes 3. **Toggle command/Keyboard shortcut:** Use the keyboard shortcut below, applicable to your operating system. Each press cycles through the available modes in sequence, wrapping back to the first mode after reaching the end. @@ -35,7 +35,7 @@ Four ways to switch modes: 4. **Accept suggestions:** Click on mode switch suggestions that Roo offers when appropriate - Accepting a mode switch suggestion from Roo + Accepting a mode switch suggestion from Roo ## Built-in Modes @@ -54,10 +54,10 @@ Four ways to switch modes: | Aspect | Details | |--------|---------| | **Name** | `❓ Ask` | -| **Description** | A knowledgeable technical assistant focused on answering questions without changing your codebase | +| **Description** | A knowledgeable technical assistant focused on providing thorough and complete answers. It's less inclined to switch to implementing code unless explicitly requested and may use diagrams for clarification. | | **Tool Access** | Limited access: `read`, `browser`, `mcp` only (cannot edit files or run commands) | | **Ideal For** | Code explanation, concept exploration, and technical learning | -| **Special Features** | Optimized for informative responses without modifying your project | +| **Special Features** | Optimized for detailed, informative responses, often using diagrams for clarity, without modifying your project. | ### Architect Mode @@ -84,11 +84,11 @@ Four ways to switch modes: | Aspect | Details | |--------|---------| | **Name** | `🪃 Orchestrator` | -| **Description** | A strategic workflow orchestrator (aka Boomerang Mode) that breaks down complex tasks and delegates them to specialized modes | +| **Description** | A strategic workflow orchestrator (aka Boomerang Mode) that breaks down complex tasks and delegates them to specialized modes. Learn more about [Boomerang Tasks](/features/boomerang-tasks). | | **Tool Access** | Access to `read`, `browser`, `command`, `mcp`, and restricted `edit` (mode configuration files only: `.roomodes`, `custom_modes.json`) | | **Ideal For** | Managing multi-step projects, coordinating work across different modes, and automating complex workflows | | **Special Features** | Uses the [`new_task`](/advanced-usage/available-tools/new-task) tool to delegate subtasks to other modes. | -## Custom Modes +## Customizing Modes -Create your own specialized assistants by defining tool access, file permissions, and behavior instructions. Custom modes help enforce team standards or create purpose-specific assistants. See [Custom Modes documentation](/features/custom-modes) for setup instructions. +Tailor Roo Code's behavior by customizing existing modes or creating new specialized assistants. Define tool access, file permissions, and behavior instructions to enforce team standards or create purpose-specific assistants. See [Custom Modes documentation](/features/custom-modes) for setup instructions. diff --git a/docs/features/custom-modes.mdx b/docs/features/custom-modes.mdx index 5fd9ef3c..6f0d553e 100644 --- a/docs/features/custom-modes.mdx +++ b/docs/features/custom-modes.mdx @@ -31,7 +31,7 @@ Each mode—including custom ones—features **Sticky Models**. This means Roo C * **Experimentation:** Safely experiment with different prompts and configurations without affecting other modes * **Team Collaboration:** Share custom modes with your team to standardize workflows -Overview of custom modes interface +Overview of custom modes interface *Roo Code's interface for creating and managing custom modes.* @@ -39,13 +39,14 @@ Each mode—including custom ones—features **Sticky Models**. This means Roo C Custom modes are defined by several key properties. Understanding these concepts will help you tailor Roo's behavior effectively before diving into the JSON configuration. -| Property | Conceptual Description | -| -------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | -| `slug` | A **unique internal identifier** for the mode. It's used by Roo Code to reference the mode, especially for associating [mode-specific instruction files](#mode-specific-instructions-via-filesdirectories). | -| `name` | The **display name** for the mode as it appears in the Roo Code user interface. This should be human-readable and descriptive. | -| `roleDefinition` | The **core identity and expertise** of the mode. This text is placed at the beginning of the system prompt to define Roo's personality and primary function for this mode.
- **Critical First Sentence:** The first sentence (up to the first period `.`) is vital. It serves as a concise summary for Roo to understand the mode's purpose, even when it's not the active one. The entire definition is used when the mode is active. | -| `groups` | Defines the **allowed toolsets and file access permissions** for the mode. You can specify which general categories of tools (like reading files, editing files, browsing, or executing commands) the mode can use. For editing, you can also specify restrictions on which file types are permissible. | -| `customInstructions` | **Specific behavioral guidelines** or rules for the mode. These instructions are added near the end of the system prompt to further refine Roo's behavior beyond the `roleDefinition`. This can be provided directly in the configuration or via separate instruction files. | +| UI Field / JSON Property | Conceptual Description | +| ---------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | +| Slug (`slug`) | A **unique internal identifier** for the mode. It's used by Roo Code to reference the mode, especially for associating [mode-specific instruction files](#mode-specific-instructions-via-filesdirectories). | +| Name (`name`) | The **display name** for the mode as it appears in the Roo Code user interface. This should be human-readable and descriptive. | +| Role Definition (`roleDefinition`) | Defines the **core identity and expertise** of the mode. This text is placed at the beginning of the system prompt.
- Its primary function is to define Roo's personality and behavior when this mode is active.
- The **first sentence** (up to the first period `.`) serves as a default concise summary for Roo to understand the mode's general purpose.
- **However, if the `whenToUse` property is defined, `whenToUse` takes precedence** for summarizing the mode's function, especially in contexts like task orchestration or mode switching. In such cases, the first sentence of `roleDefinition` is less critical for this specific summarization task, though the entire `roleDefinition` is still used when the mode is active to guide its overall behavior. | +| Available Tools (`groups`) | Defines the **allowed toolsets and file access permissions** for the mode.
- In the UI, this corresponds to selecting which general categories of tools (like reading files, editing files, browsing, or executing commands) the mode can use.
- File type restrictions for the "edit" group are typically managed via manual JSON configuration or by asking Roo to set them up, as detailed in the [JSON Property Details for `groups`](#groups). | +| When to Use (optional) (`whenToUse`) | (Optional) Provides **guidance for Roo to understand the mode's purpose**, especially for automated decisions.
- This text is used by Roo, particularly the [`🪃 Orchestrator`](/basic-usage/using-modes#orchestrator-mode-aka-boomerang-mode) mode, for [orchestrating tasks](/features/boomerang-tasks) (e.g., via the [`new_task`](/advanced-usage/available-tools/new-task) tool).
- It also helps Roo decide which mode is appropriate when [switching modes](/basic-usage/using-modes#switching-between-modes) (e.g., via the [`switch_mode`](/advanced-usage/available-tools/switch-mode) tool).
- If populated, this description is used by Roo to understand the mode's function; otherwise, the first sentence of the `roleDefinition` is used by default. | +| Custom Instructions (optional) (`customInstructions`) | **Specific behavioral guidelines** or rules for the mode.
- These instructions are added near the end of the system prompt to further refine Roo's behavior beyond the `roleDefinition`.
- This can be provided directly in the configuration or via separate instruction files. | ## Methods for Creating and Configuring Custom Modes @@ -65,10 +66,11 @@ Roo Code will guide you through the process, prompting for necessary information 2. **Create New Mode:** Click the button to the right of the Modes heading. 3. **Fill in Fields:** -Custom mode creation interface in the Prompts tab -*The custom mode creation interface showing fields for name, slug, save location, role definition, available tools, and custom instructions.* +Custom mode creation interface in the Prompts tab - The interface provides fields for `Name`, `Slug`, `Save Location`, `Role Definition`, `Available Tools`, and `Custom Instructions`. After filling these, click the "Create Mode" button. +*The custom mode creation interface showing fields for name, slug, save location, role definition, available tools, custom instructions.* + + The interface provides fields for `Name`, `Slug`, `Save Location`, `Role Definition`, `When to Use (optional)`, `Available Tools`, and `Custom Instructions`. After filling these, click the "Create Mode" button. *Refer to the [What's Included in a Custom Mode?](#whats-included-in-a-custom-mode) table for conceptual explanations of each property. File type restrictions for the "edit" tool group can be added by asking Roo or through manual JSON configuration.* @@ -88,11 +90,15 @@ Both files use the same JSON format. Each configuration file contains a `customM "slug": "mode-slug-example", "name": "Example Mode Display Name", "roleDefinition": "This mode's role and capabilities are defined here.", + "whenToUse": "Describe when this mode is most appropriate here.", + "customInstructions": "Additional guidelines for this example mode.", "groups": [ "read", - ["edit", { "fileRegex": "\\.txt$", "description": "Text files only" }] - ], - "customInstructions": "Additional guidelines for this example mode." + "edit", // Can also be ["edit", { "fileRegex": "\\.md$", "description": "Markdown only" }] + "browser", + "command", + "mcp" + ] } ] } @@ -115,7 +121,7 @@ Both files use the same JSON format. Each configuration file contains a `customM ##### `roleDefinition` * **Purpose:** Detailed description of the mode's role, expertise, and personality. * **Placement:** This text is placed at the beginning of the system prompt when the mode is active. -* **Critical First Sentence:** As noted in the table above, the first sentence is crucial for summarizing the mode's function. +* **Important First Sentence:** The first sentence (up to the first period `.`) serves as a default concise summary for Roo to understand the mode's general purpose. **However, if the `whenToUse` property is defined, `whenToUse` takes precedence** for summarizing the mode's function, especially in contexts like task orchestration or mode selection. In such cases, the first sentence of `roleDefinition` is less critical for this specific summarization task, though the entire `roleDefinition` is still used when the mode is active to guide its overall behavior. * *JSON Example:* `"roleDefinition": "You are a technical writer specializing in clear documentation."` ##### `groups` @@ -135,6 +141,12 @@ Both files use the same JSON format. Each configuration file contains a `customM ] ``` +##### `whenToUse` +* **Purpose:** (Optional) Provides guidance for Roo to understand what this mode does. This is primarily used by the [`🪃 Orchestrator`](/basic-usage/using-modes#orchestrator-mode-aka-boomerang-mode) mode for [orchestrating tasks](/features/boomerang-tasks) (e.g., via the [`new_task`](/advanced-usage/available-tools/new-task) tool) and for determining the appropriate mode when [switching modes](/basic-usage/using-modes#switching-between-modes) (e.g., via the [`switch_mode`](/advanced-usage/available-tools/switch-mode) tool). +* **Format:** A string describing ideal scenarios or task types for this mode. +* **Usage:** If populated, Roo uses this description to understand the mode's function. Otherwise, the first sentence of the `roleDefinition` is used by default. +* **JSON Example:** `"whenToUse": "This mode is best for refactoring Python code to improve performance and readability."` + ##### `customInstructions` * **Purpose:** A string containing additional behavioral guidelines for the mode. * **Placement:** This text is added near the end of the system prompt. @@ -225,11 +237,12 @@ To customize a default mode across all your projects: "slug": "code", // Matches the default 'code' mode slug "name": "💻 Code (Global Override)", // Custom display name "roleDefinition": "You are a software engineer with global-specific constraints", + "whenToUse": "This globally overridden code mode is for JS/TS tasks.", + "customInstructions": "Focus on project-specific JS/TS development", "groups": [ "read", ["edit", { "fileRegex": "\\.(js|ts)$", "description": "JS/TS files only" }] - ], - "customInstructions": "Focus on project-specific JS/TS development" + ] }] } ``` @@ -251,11 +264,12 @@ To override a default mode for just one project: "slug": "code", // Matches the default 'code' mode slug "name": "💻 Code (Project-Specific)", // Custom display name "roleDefinition": "You are a software engineer with project-specific constraints", + "whenToUse": "This project-specific code mode is for JS/TS tasks within this project.", + "customInstructions": "Focus on project-specific JS/TS development", "groups": [ "read", ["edit", { "fileRegex": "\\.(js|ts)$", "description": "JS/TS files only" }] - ], - "customInstructions": "Focus on project-specific JS/TS development" + ] }] } ``` @@ -326,40 +340,5 @@ Before applying a regex pattern: 2. Remember the double backslash rule for JSON. 3. Start with simpler patterns and build complexity gradually. -## Example Configurations - -Each example shows different aspects of mode configuration: - -### Basic Documentation Writer -```json -{ - "customModes": [{ - "slug": "docs-writer", - "name": "Documentation Writer", - "roleDefinition": "You are a technical writer specializing in clear documentation", - "groups": [ - "read", - ["edit", { "fileRegex": "\\.md$", "description": "Markdown files only" }] - ], - "customInstructions": "Focus on clear explanations and examples" - }] -} -``` - -### Test Engineer with File Restrictions -```json -{ - "customModes": [{ - "slug": "test-engineer", - "name": "Test Engineer", - "roleDefinition": "You are a test engineer focused on code quality", - "groups": [ - "read", - ["edit", { "fileRegex": "\\.(test|spec)\\.(js|ts)$", "description": "Test files only" }] - ] - }] -} -``` - ## Community Gallery Ready to explore more? Check out the [Custom Modes Gallery](/community/#custom-modes-gallery) section on the main community page to discover and share custom modes created by the community! diff --git a/docs/features/experimental/experimental-features.md b/docs/features/experimental/experimental-features.md index 5f7a7281..bdb9a0de 100644 --- a/docs/features/experimental/experimental-features.md +++ b/docs/features/experimental/experimental-features.md @@ -1,8 +1,8 @@ # Experimental Features -Roo Code includes experimental features that are still under development. These features may be unstable, change significantly, or be removed in future versions. Use them with caution and be aware that they may not work as expected. +Roo Code includes experimental features that are still under development. These features may be unstable, change significantly, or be removed in future versions. Use them with caution and be aware that they may not work as expected. -**Warning:** Experimental features may have unexpected behavior, including potential data loss or security vulnerabilities. Enable them at your own risk. +**Warning:** Experimental features may have unexpected behavior, including potential data loss or security vulnerabilities. Enable them at your own risk. ## Enabling Experimental Features @@ -11,22 +11,13 @@ To enable or disable experimental features: 1. Open the Roo Code settings ( icon in the top right corner). 2. Go to the "Advanced Settings" section. 3. Find the "Experimental Features" section. -4. Check or uncheck the boxes for the features you want to enable or disable. -5. Click "Done" to save your changes. ## Current Experimental Features The following experimental features are currently available: -### Intelligently condense the context window - -If enabled, Roo uses an LLM to summarize the past conversation when the context window is almost full. This summary attempts to dramatically shrink the number of tokens in the context while preserving useful information. If disabled, Roo drops past messages using a sliding window when the context window is full. - -**Disclaimer**: Currently the costs associated with summarizing the conversation are not included in the cost displayed in the UI. - -### Power Steering - -When enabled, Roo will remind the model about the details of its current mode definition more frequently. This will lead to stronger adherence to role definitions and custom instructions, but will use more tokens per message. +- [Intelligently Condense the Context Window](/features/experimental/intelligent-context-condensation) +- [Power Steering](/features/experimental/power-steering) ## Providing Feedback diff --git a/docs/features/experimental/intelligent-context-condensation.md b/docs/features/experimental/intelligent-context-condensation.md new file mode 100644 index 00000000..17ba64f8 --- /dev/null +++ b/docs/features/experimental/intelligent-context-condensation.md @@ -0,0 +1,46 @@ +--- +sidebar_label: 'Intelligent Context Condensation' +--- +import Codicon from '@site/src/components/Codicon'; + +# Intelligently Condense the Context Window + +The `autoCondenseContext` experimental feature proactively manages Roo Code's conversation history to prevent loss of context when the conversation becomes lengthy. + +## How It Works + +When a conversation with Roo approaches its context window limit, older messages would typically be dropped to make space. The `autoCondenseContext` feature addresses this by automatically summarizing the conversation history using a Large Language Model (LLM) call. This summarization is triggered when the context window reaches 50% capacity. + +The goal is to shrink the token count of the conversation history while preserving essential information, preventing the context window from overflowing and avoiding the silent dropping of messages. This helps maintain a more coherent and complete conversation history for the LLM. + +**Key Points:** +* **Summarization Trigger:** Occurs when the context window is 50% full. +* **Message Preservation:** All original messages are preserved when rewinding to old checkpoints. However, messages from before the most recent summary are not included in subsequent API calls to the LLM. +* **Image Handling:** A function (`maybeRemoveImageBlocks`) is used to manage image blocks within messages during summarization, as the underlying summarization API may not directly support them in conversational format. + +**Disclaimer**: The LLM call used for summarization has an associated cost. Currently, this cost is not reflected in the usage/cost displayed in the Roo Code UI. + +Settings for Intelligent Context Condensation and Power Steering +## Enabling This Feature + +This feature is managed within the "Experimental Features" section of Roo Code's Advanced Settings. + +1. Open Roo Code settings ( icon in the top right corner). +2. Navigate to "Advanced Settings". +3. Locate the "Experimental Features" area. +4. Toggle the "Intelligently condense the context window" option. +5. Save your changes. + +For general information on experimental features, see [Experimental Features Overview](/features/experimental/experimental-features). + +## Future Enhancements + +The following enhancements are being considered for this feature: +* A manual option for users to trigger the condense operation. +* A UI indicator to show when a condense operation has occurred. +* User configuration options to control when `autoCondenseContext` runs. +* Telemetry to better evaluate the feature's effectiveness and handle context window overrun errors more dynamically. + +## Feedback + +Please report any issues or suggestions regarding this feature on the [Roo Code GitHub Issues page](https://github.com/RooVetGit/Roo-Code/issues). Your feedback is crucial for improving Roo Code. \ No newline at end of file diff --git a/docs/features/experimental/power-steering.md b/docs/features/experimental/power-steering.md new file mode 100644 index 00000000..4b6dcbc7 --- /dev/null +++ b/docs/features/experimental/power-steering.md @@ -0,0 +1,53 @@ +--- +sidebar_label: 'Power Steering' +--- +import Codicon from '@site/src/components/Codicon'; + +# Power Steering (Experimental Feature) + +The "Power Steering" experimental feature (`POWER_STEERING`) is designed to enhance the consistency of Roo Code's responses by more frequently reminding the underlying Large Language Model (LLM) about its current mode definition and any custom instructions. + +## How It Works + +When Power Steering is enabled, Roo Code constantly reinforces the LLM's understanding of its assigned role (e.g., "You are a helpful coding assistant") and any specific guidelines provided by the user (e.g., "Always provide code examples in Python"). + +This is achieved by explicitly including the `modeDetails.roleDefinition` and `modeDetails.customInstructions` within the information sent to the LLM with each interaction. + +**Goal:** +The primary goal is to ensure the LLM adheres more strictly to its defined persona and follows user-specific instructions more consistently. If you find Roo deviating from its role or overlooking custom rules, Power Steering can help maintain its focus. + +**Trade-off:** +These frequent reminders consume additional tokens in each message sent to the LLM. This means: +* Increased token usage per message. +* Potentially higher operational costs. +* The context window may be filled more quickly. + +It's a balance between stricter adherence to instructions and resource consumption. + +**Default Status:** Disabled. + +## Technical Details + +* **Experiment ID:** `powerSteering` +* **Mechanism:** + * The feature's status is checked by the `getEnvironmentDetails` function. + * If enabled, the current mode's `roleDefinition` and `customInstructions` are added to the details sent to the LLM. + * These details are wrapped in `` tags and become part of the context for each LLM interaction. +* **Impact:** By frequently including the role definition and custom instructions, the LLM is steered to generate responses more aligned with these parameters. + +## Enabling This Feature + +Power Steering is managed within the "Experimental Features" section of Roo Code's Advanced Settings. + +1. Open Roo Code settings ( icon in the top right corner). +2. Navigate to "Advanced Settings". +3. Locate the "Experimental Features" area. +4. Toggle the "Power Steering" option. +5. Save your changes. +Settings for Intelligent Context Condensation and Power Steering + +For general information on experimental features, see [Experimental Features Overview](/features/experimental/experimental-features). + +## Feedback + +Please report any issues or suggestions regarding this feature on the [Roo Code GitHub Issues page](https://github.com/RooVetGit/Roo-Code/issues). Your feedback is crucial for improving Roo Code. \ No newline at end of file diff --git a/docs/update-notes/index.md b/docs/update-notes/index.md index fe0dfacd..484f9df4 100644 --- a/docs/update-notes/index.md +++ b/docs/update-notes/index.md @@ -2,12 +2,20 @@ This section contains notes about recent updates to Roo Code, listed by version number. +## Version 3.17 + +* [3.17.0](/update-notes/v3.17.0) (2025-05-14) +* [3.17](/update-notes/v3.17) (2025-05-14) + ## Version 3.16 +* [3.16.6](/update-notes/v3.16.6) (2025-05-12) +* [3.16.5](/update-notes/v3.16.5) (2025-05-10) +* [3.16.4](/update-notes/v3.16.4) (2025-05-09) * [3.16.3](/update-notes/v3.16.3) (2025-05-08) * [3.16.2](/update-notes/v3.16.2) (2025-05-07) * [3.16.1](/update-notes/v3.16.1) (2025-05-07) -* [3.16](/update-notes/v3.16) (2025-05-08) +* [3.16](/update-notes/v3.16) (2025-05-12) ## Version 3.15 diff --git a/docs/update-notes/v3.16.4.md b/docs/update-notes/v3.16.4.md new file mode 100644 index 00000000..852a5d14 --- /dev/null +++ b/docs/update-notes/v3.16.4.md @@ -0,0 +1,28 @@ +# Roo Code 3.16.4 Release Notes (2025-05-09) + +This release includes improvements and fixes related to provider profile management, terminal focus, saving custom headers, race conditions, display issues, and error handling. + +## QOL Improvements + +* Improve provider profile management in the external API +* Show properly formatted multi-line commands in preview (thanks KJ7LNW!) +* Handle unsupported language errors gracefully in read_file tool (thanks KJ7LNW!) +* Enhance focus styles in select-dropdown and fix docs URL (thanks zhangtony239!) +* Properly handle mode name overflow in UI (thanks elianiva!) + +## Misc Improvements + +* Save OpenAI compatible custom headers correctly + +## Provider Updates + +* Enforce provider selection in OpenRouter by using 'only' parameter and disabling fallbacks (thanks shariqriazz!) + +## Bug Fixes + +* Fix display issues with long profile names (thanks cannuri!) +* Prevent terminal focus theft on paste after command execution (thanks MuriloFP!) +* Fix race condition when updating prompts (thanks elianiva!) +* Fix display issues in high contrast themes (thanks zhangtony239!) +* Fix not being able to use specific providers on Openrouter (thanks daniel-lxs!) +* Fix project MCP always allow issue (thanks aheizi!) \ No newline at end of file diff --git a/docs/update-notes/v3.16.5.md b/docs/update-notes/v3.16.5.md new file mode 100644 index 00000000..1f907a19 --- /dev/null +++ b/docs/update-notes/v3.16.5.md @@ -0,0 +1,7 @@ +# Roo Code 3.16.5 Release Notes (2025-05-10) + +This release reverts a previous improvement related to provider profile management due to a bug. + +## Bug Fixes + +* Revert "Improve provider profile management in the external API" until we track down a bug with defaults \ No newline at end of file diff --git a/docs/update-notes/v3.16.6.md b/docs/update-notes/v3.16.6.md new file mode 100644 index 00000000..d4efa476 --- /dev/null +++ b/docs/update-notes/v3.16.6.md @@ -0,0 +1,13 @@ +# Roo Code 3.16.6 Release Notes (2025-05-12) + +This release restores a previous improvement and includes fixes for subtask sequencing and terminal output processing. + +## QOL Improvements + +* Restore "Improve provider profile management in the external API" + +## Bug Fixes + +* Fix to subtask sequencing (thanks wkordalski!) +* Fix webview terminal output processing error (thanks KJ7LNW!) +* Fix textarea empty string fallback logic (thanks elianiva!) \ No newline at end of file diff --git a/docs/update-notes/v3.16.md b/docs/update-notes/v3.16.md index 2381839d..5f34ea2e 100644 --- a/docs/update-notes/v3.16.md +++ b/docs/update-notes/v3.16.md @@ -1,17 +1,17 @@ -# Roo Code 3.16 Release Notes (2025-05-08) +# Roo Code 3.16 Release Notes (2025-05-12) -*These release notes include all the improvements from v3.16.x. Last updated with 3.16.3 on 2025-05-08* +*These release notes include all the improvements from v3.16.x. Last updated with 3.16.6 on 2025-05-12* -This release introduces vertical tab navigation for settings, new API providers (Groq, Chutes, LiteLLM), clickable code references, Dutch localization, stability enhancements including tool loop detection and improved error handling, UI updates (including a temporary Tailwind CSS migration and its reversion), and broader language support with Elixir, alongside various bug fixes and miscellaneous updates. +This release introduces vertical tab navigation for settings, new API providers (Groq, Chutes, LiteLLM), clickable code references, Dutch localization, stability enhancements including tool loop detection and improved error handling, UI updates (including a temporary Tailwind CSS migration and its reversion), broader language support with Elixir, and improvements to provider profile management, alongside various bug fixes and miscellaneous updates. ## Gemini Model and Caching Updates -- The `gemini-2.5-pro-preview-05-06` model is now available for [Vertex](/providers/vertex) and [Google Gemini](/providers/gemini) providers. Users of the older `gemini-2.5-pro-preview-03-25` will automatically benefit from this newer model, as the previous ID now aliases to the latest version on Google's backend. No configuration changes are needed. (thanks @zetaloop!) +- The `gemini-2.5-pro-preview-05-06` model is now available for [Vertex](/providers/vertex) and [Google Gemini](/providers/gemini) providers. Users of the older `gemini-2.5-pro-preview-03-25` will automatically benefit from this newer model, as the previous ID now aliases to the latest version on Google's backend. No configuration changes are needed. (thanks zetaloop!) - Prompt caching is now enabled by default for supported Gemini models on the [Vertex](/providers/vertex) and [Google Gemini](/providers/gemini) providers, leading to: - **Faster Responses for Repeated Queries**: Gemini remembers previous similar prompts. - **Reduced API Usage**: Minimizes redundant API calls. - **Simplified Experience with Opt-Out Control**: Active out-of-the-box, but can be disabled in settings. -## Total Settings Navigation Overhaul (thanks @dlab-anton!) +## Total Settings Navigation Overhaul (thanks dlab-anton!) FINALLY the settings interface has been revamped with a new vertical tab layout for a more efficient and intuitive experience - **One-Click Access:** Navigate between settings sections with a single click via the new vertical tabs in the settings view. @@ -21,10 +21,10 @@ FINALLY the settings interface has been revamped with a new vertical tab layout ## MCP Service Improvements - - MCP server errors are now captured and shown in a new "Errors" tab (thanks @robertheadley!) - - Error logging will no longer break MCP functionality if the server is properly connected (thanks @ksze!) + - MCP server errors are now captured and shown in a new "Errors" tab (thanks robertheadley!) + - Error logging will no longer break MCP functionality if the server is properly connected (thanks ksze!) -## Clickable Code References in Chat (thanks @KJ7LNW!) +## Clickable Code References in Chat (thanks KJ7LNW!) Navigating code discussed in AI responses is now significantly easier: - **Clickable Code and Filenames**: Any `code` or `filename.extension()` mentioned by the AI is now a clickable link. @@ -37,7 +37,7 @@ Navigating code discussed in AI responses is now significantly easier: * **Clarified XML Tool Formatting Instructions**: Documentation and prompts now provide clearer examples of how to format XML tool use, preventing the `` and other tool use errors. * This fix is largely targeted at issues faced with Gemini 2.5 when using tools -## Continued UI/UX Improvements (thanks @elianiva!) +## Continued UI/UX Improvements (thanks elianiva!) General UI improvements for a more consistent, visually appealing, and intuitive experience: - **Visually Unified Design**: A more consistent look and feel across settings, prompt interactions, and mode selections. @@ -49,10 +49,10 @@ General UI improvements for a more consistent, visually appealing, and intuitive *These are just a few examples of the many UI/UX improvements in this release.* -## New Provider: Groq Integration (thanks @shariqriazz!) +## New Provider: Groq Integration (thanks shariqriazz!) You can now connect to [Groq](/providers/groq) and utilize their high-speed language models directly within the extension. -## New Provider: Chutes AI Integration (thanks @shariqriazz!) +## New Provider: Chutes AI Integration (thanks shariqriazz!) Support for [Chutes AI](/providers/chutes) has also been added, allowing you to leverage their specialized AI capabilities. ## QOL Improvements @@ -75,14 +75,33 @@ This ensures a smoother, more reliable, and frustration-free interaction with th * **Responsive Footer Buttons in About Section**: Fixed the layout of footer buttons in the About section, ensuring they wrap correctly on narrow screens for a better mobile experience and improved accessibility. (thanks ecmasx!) * Improve accessibility of auto-approve toggles (thanks Deon588!) * You can now toggle the `terminal.integrated.inheritEnv` VSCode setting directly for the Roo Code settings (thanks KJ7LNW!) +* Improve provider profile management in the external API +* Restore "Improve provider profile management in the external API" +* Show properly formatted multi-line commands in preview (thanks KJ7LNW!) +* Handle unsupported language errors gracefully in read_file tool (thanks KJ7LNW!) +* Enhance focus styles in select-dropdown and fix docs URL (thanks zhangtony239!) +* Properly handle mode name overflow in UI (thanks elianiva!) + +## Provider Updates + +* Enforce provider selection in OpenRouter by using 'only' parameter and disabling fallbacks (thanks shariqriazz!) ## Bug Fixes * Fix migration and persistence of per-mode API profiles (thanks alasano!) * Fix usage of `path.basename` in the extension webview (thanks samhvw8!) * Fix display issue of the programming language dropdown in the code block component (thanks zhangtony239!) * Requesty provider fixes (thanks dtrugman!) +* Fix display issues with long profile names (thanks cannuri!) +* Prevent terminal focus theft on paste after command execution (thanks MuriloFP!) +* Fix race condition when updating prompts (thanks elianiva!) +* Fix display issues in high contrast themes (thanks zhangtony239!) +* Fix not being able to use specific providers on Openrouter (thanks daniel-lxs!) +* Fix project MCP always allow issue (thanks aheizi!) +* Revert "Improve provider profile management in the external API" until we track down a bug with defaults +* Fix to subtask sequencing (thanks wkordalski!) +* Fix webview terminal output processing error (thanks KJ7LNW!) +* Fix textarea empty string fallback logic (thanks elianiva!) -## Misc Improvements * **Revert Tailwind Migration**: Restored the previous user interface by reverting the Tailwind CSS migration. This returns the UI to a familiar and stable state, resolving issues introduced by the migration and ensuring users see the interface as expected without unexpected layout or style changes. * **Add Elixir File Support in Language Parser**: Added support for Elixir (`.ex`, `.exs`) files in the language parser. This expands language support, allowing users to work with Elixir code seamlessly and enabling better code analysis for improved productivity. (thanks pfitz!) * **Improved Error Handling for Streaming**: Fixed an issue where the app could get stuck waiting for a response. The app now recovers gracefully from errors during streaming, reducing the likelihood of unresponsive behavior and improving reliability. (thanks monkeyDluffy6017!) @@ -92,4 +111,5 @@ This ensures a smoother, more reliable, and frustration-free interaction with th * Ensure evals exercises are up-to-date before running evals (thanks shariqriazz!) * Organize provider settings into separate components * Add support for tests that use ESM libraries -* Move environment detail generation to a separate module \ No newline at end of file +* Move environment detail generation to a separate module +* Save OpenAI compatible custom headers correctly \ No newline at end of file diff --git a/docs/update-notes/v3.17.0.md b/docs/update-notes/v3.17.0.md new file mode 100644 index 00000000..9889aca2 --- /dev/null +++ b/docs/update-notes/v3.17.0.md @@ -0,0 +1,74 @@ +# Roo Code 3.17.0 Release Notes (2025-05-14) + +This release brings Gemini implicit caching, smarter Boomerang Orchestration through "When to Use" guidance, refinements to 'Ask' Mode and Boomerang accuracy, experimental Intelligent Context Condensation, and a smoother chat experience. + +## Improved Performance with Gemini Caching +Users interacting with Gemini models will experience improved performance and overall lower costs when using Gemini models that support caching due to the utilization of implicit caching. + +## Smarter Boomerang Orchestration +Roo Code now offers enhanced guidance for selecting the most appropriate mode for your tasks, primarily through the new "When to Use" field in mode definitions. This field allows mode creators to provide specific instructions on the ideal scenarios for using a particular mode. Previously, or if this field is not defined for a mode, Roo would rely on the first sentence of the mode's role definition for this guidance. + +* **"When to Use" Field:** Custom modes can now include a "When to Use" description. This text is utilized by Roo, especially the [Orchestrator (Boomerang) mode](/features/boomerang-tasks), to make more informed decisions when orchestrating tasks (e.g., via the [`new_task`](/advanced-usage/available-tools/new-task) tool) or when automatically switching modes (e.g., via the [`switch_mode`](/advanced-usage/available-tools/switch-mode) tool). +* **Improved Orchestration:** By leveraging the "When to Use" field, Roo can better understand the purpose of each mode, leading to more effective task delegation and mode selection. +* **Fallback to Role Definition:** If the "When to Use" field is not populated for a mode, Roo will use the first sentence of the mode's role definition as a default summary to guide its decisions. + +image highlighting When to Use field + +The image above shows an example of a "When to Use" description. This field is not currently populated by default for the standard [Code Mode](/basic-usage/using-modes#code-mode-default). You can learn more about configuring this in the [Custom Modes documentation](/features/custom-modes). + +## 'Ask' Mode & Boomerang Orchestration Refinements + +We've made several under-the-hood refinements to improve how Roo understands and responds to your requests: + +* **'Ask' Mode Refinements:** 'Ask' mode has been refined to provide more comprehensive and detailed explanations, be less quick to suggest or switch to implementing code (waiting for a clearer cue from you), and to utilize diagrams like Mermaid charts more often for clarification. +* **More Accurate Boomerang Orchestration:** The internal description for the [`new_task`](/advanced-usage/available-tools/new-task) tool (used by Roo to initiate new tasks) has been simplified for better AI comprehension. This internal refinement ensures the [Boomerang (Orchestrator) functionality](/features/boomerang-tasks) is triggered more reliably, leading to smoother and more accurate automated task delegation. + +## Smarter Context Management with Intelligent Condensation +We've introduced an experimental feature called **Intelligent Context Condensation** (`autoCondenseContext`) to proactively manage lengthy conversation histories and prevent context loss. + +Here's how it works: + +* **Automatic Summarization:** When a conversation approaches its context window limit (specifically, when it's 50% full), Roo Code now automatically uses a Large Language Model (LLM) to summarize the existing conversation history. +* **Preserving Key Information:** The goal is to reduce the token count of the history while retaining the most essential information, ensuring the LLM has a coherent understanding of past interactions. This helps avoid the silent dropping of older messages. +* **Checkpoint Integrity:** While summarized for ongoing LLM calls, all original messages are preserved when you rewind to old checkpoints. +* **Image Handling:** Images within messages are specially managed during the summarization process. +* **Opt-in Experimental Feature:** Disabled by default, this feature can be enabled in "Advanced Settings" under "Experimental Features." Please note that the LLM call for summarization incurs a cost, which is not currently displayed in the UI's cost tracking. + +Settings for Intelligent Context Condensation + +For more details on this experimental feature, including how to enable it, please see the [Intelligent Context Condensation documentation](/features/experimental/intelligent-context-condensation). + +## Smoother Chat and Fewer Interruptions! (thanks Cline!) + +We've made a couple of nice tweaks to make your Roo Code experience even better: + +* **Keep Typing, Even When Roo's Thinking:** You can now type your next message in the chat even while Roo is busy processing your current request. No more waiting for the input field to unlock – just keep your thoughts flowing! +* **Stay Focused When Viewing Changes:** We've improved how Roo Code handles your cursor focus when showing you code differences. This means fewer interruptions to your workflow when Roo presents changes for review. + +These improvements aim to make your interactions with Roo Code feel more fluid and less disruptive. + +## Easier Access to Documentation +Finding help and information is now simpler: +- **More In-App Links**: Added over 20 new "Learn more" links throughout the application's settings and views. +- **Improved Navigation**: Updated existing documentation links to ensure they direct you to the most relevant information. + +## General QOL Improvements + +* **Improved Command Execution Display**: The user interface for displaying command execution was improved. +* **More Reliable Apply Diff Tool**: The `apply_diff` tool is now better at handling line numbers. (thanks samhvw8!) +* **Faster Message Parsing**: We've switched to a more performant way of processing messages. (thanks Cline!) + +## Bug Fixes + +* **Fix for Grey Screen Issues**: We've addressed a visual bug that could occur. (thanks xyOz-dev!) +* **Accurate Token Usage Reporting**: For users of the Requesty API provider, token usage reporting is now more accurate. (thanks dtrugman!) +* **Improved Command Validation**: Commands using shell array indexing are now validated correctly. (thanks KJ7LNW!) +* **Graceful Handling of Directory Diagnostics**: The application now handles diagnostic information related to directories smoothly. (thanks daniel-lxs!) +* **Accurate OpenRouter Model Information**: If you use OpenRouter with different providers, you'll see more accurate details. (thanks daniel-lxs!) +* **Reduced Errors with Checkpoints**: If you use checkpoints, you should encounter fewer errors. (thanks zxdvd!) + +## Misc Improvements + +* **Enhanced Debugging Capabilities**: We've made it easier for developers to diagnose and fix issues. (thanks KJ7LNW!) +* **Improved Developer Experience for Integrations**: We've added better support for developers building tools that interact with Roo Code. +* **Streamlined Development Workflow**: We've made internal improvements to our development process. (thanks SmartManoj!) \ No newline at end of file diff --git a/docs/update-notes/v3.17.md b/docs/update-notes/v3.17.md new file mode 100644 index 00000000..a5fa2078 --- /dev/null +++ b/docs/update-notes/v3.17.md @@ -0,0 +1,74 @@ +# Roo Code 3.17 Release Notes (2025-05-14) + +This release brings Gemini implicit caching, smarter Boomerang Orchestration through "When to Use" guidance, refinements to 'Ask' Mode and Boomerang accuracy, experimental Intelligent Context Condensation, and a smoother chat experience. + +## Improved Performance with Gemini Caching +Users interacting with Gemini models will experience improved performance and overall lower costs when using Gemini models that support caching due to the utilization of implicit caching. + +## Smarter Boomerang Orchestration +Roo Code now offers enhanced guidance for selecting the most appropriate mode for your tasks, primarily through the new "When to Use" field in mode definitions. This field allows mode creators to provide specific instructions on the ideal scenarios for using a particular mode. Previously, or if this field is not defined for a mode, Roo would rely on the first sentence of the mode's role definition for this guidance. + +* **"When to Use" Field:** Custom modes can now include a "When to Use" description. This text is utilized by Roo, especially the [Orchestrator (Boomerang) mode](/features/boomerang-tasks), to make more informed decisions when orchestrating tasks (e.g., via the [`new_task`](/advanced-usage/available-tools/new-task) tool) or when automatically switching modes (e.g., via the [`switch_mode`](/advanced-usage/available-tools/switch-mode) tool). +* **Improved Orchestration:** By leveraging the "When to Use" field, Roo can better understand the purpose of each mode, leading to more effective task delegation and mode selection. +* **Fallback to Role Definition:** If the "When to Use" field is not populated for a mode, Roo will use the first sentence of the mode's role definition as a default summary to guide its decisions. + +image highlighting When to Use field + +The image above shows an example of a "When to Use" description. This field is not currently populated by default for the standard [Code Mode](/basic-usage/using-modes#code-mode-default). You can learn more about configuring this in the [Custom Modes documentation](/features/custom-modes). + +## 'Ask' Mode & Boomerang Orchestration Refinements + +We've made several under-the-hood refinements to improve how Roo understands and responds to your requests: + +* **'Ask' Mode Refinements:** 'Ask' mode has been refined to provide more comprehensive and detailed explanations, be less quick to suggest or switch to implementing code (waiting for a clearer cue from you), and to utilize diagrams like Mermaid charts more often for clarification. +* **More Accurate Boomerang Orchestration:** The internal description for the [`new_task`](/advanced-usage/available-tools/new-task) tool (used by Roo to initiate new tasks) has been simplified for better AI comprehension. This internal refinement ensures the [Boomerang (Orchestrator) functionality](/features/boomerang-tasks) is triggered more reliably, leading to smoother and more accurate automated task delegation. + +## Smarter Context Management with Intelligent Condensation +We've introduced an experimental feature called **Intelligent Context Condensation** (`autoCondenseContext`) to proactively manage lengthy conversation histories and prevent context loss. + +Here's how it works: + +* **Automatic Summarization:** When a conversation approaches its context window limit (specifically, when it's 50% full), Roo Code now automatically uses a Large Language Model (LLM) to summarize the existing conversation history. +* **Preserving Key Information:** The goal is to reduce the token count of the history while retaining the most essential information, ensuring the LLM has a coherent understanding of past interactions. This helps avoid the silent dropping of older messages. +* **Checkpoint Integrity:** While summarized for ongoing LLM calls, all original messages are preserved when you rewind to old checkpoints. +* **Image Handling:** Images within messages are specially managed during the summarization process. +* **Opt-in Experimental Feature:** Disabled by default, this feature can be enabled in "Advanced Settings" under "Experimental Features." Please note that the LLM call for summarization incurs a cost, which is not currently displayed in the UI's cost tracking. + +Settings for Intelligent Context Condensation + +For more details on this experimental feature, including how to enable it, please see the [Intelligent Context Condensation documentation](/features/experimental/intelligent-context-condensation). + +## Smoother Chat and Fewer Interruptions! (thanks Cline!) + +We've made a couple of nice tweaks to make your Roo Code experience even better: + +* **Keep Typing, Even When Roo's Thinking:** You can now type your next message in the chat even while Roo is busy processing your current request. No more waiting for the input field to unlock – just keep your thoughts flowing! +* **Stay Focused When Viewing Changes:** We've improved how Roo Code handles your cursor focus when showing you code differences. This means fewer interruptions to your workflow when Roo presents changes for review. + +These improvements aim to make your interactions with Roo Code feel more fluid and less disruptive. + +## Easier Access to Documentation +Finding help and information is now simpler: +- **More In-App Links**: Added over 20 new "Learn more" links throughout the application's settings and views. +- **Improved Navigation**: Updated existing documentation links to ensure they direct you to the most relevant information. + +## General QOL Improvements + +* **Improved Command Execution Display**: The user interface for displaying command execution was improved. +* **More Reliable Apply Diff Tool**: The `apply_diff` tool is now better at handling line numbers. (thanks samhvw8!) +* **Faster Message Parsing**: We've switched to a more performant way of processing messages. (thanks Cline!) + +## Bug Fixes + +* **Fix for Grey Screen Issues**: We've addressed a visual bug that could occur. (thanks xyOz-dev!) +* **Accurate Token Usage Reporting**: For users of the Requesty API provider, token usage reporting is now more accurate. (thanks dtrugman!) +* **Improved Command Validation**: Commands using shell array indexing are now validated correctly. (thanks KJ7LNW!) +* **Graceful Handling of Directory Diagnostics**: The application now handles diagnostic information related to directories smoothly. (thanks daniel-lxs!) +* **Accurate OpenRouter Model Information**: If you use OpenRouter with different providers, you'll see more accurate details. (thanks daniel-lxs!) +* **Reduced Errors with Checkpoints**: If you use checkpoints, you should encounter fewer errors. (thanks zxdvd!) + +## Misc Improvements + +* **Enhanced Debugging Capabilities**: We've made it easier for developers to diagnose and fix issues. (thanks KJ7LNW!) +* **Improved Developer Experience for Integrations**: We've added better support for developers building tools that interact with Roo Code. +* **Streamlined Development Workflow**: We've made internal improvements to our development process. (thanks SmartManoj!) \ No newline at end of file diff --git a/sidebars.ts b/sidebars.ts index 14c86e1d..7ff469bd 100644 --- a/sidebars.ts +++ b/sidebars.ts @@ -59,6 +59,8 @@ const sidebars: SidebarsConfig = { label: 'Experimental', items: [ 'features/experimental/experimental-features', + 'features/experimental/intelligent-context-condensation', + 'features/experimental/power-steering', ], }, 'features/more-features', @@ -178,10 +180,21 @@ const sidebars: SidebarsConfig = { label: 'Update Notes', items: [ 'update-notes/index', + { + type: 'category', + label: '3.17', + items: [ + { type: 'doc', id: 'update-notes/v3.17', label: '3.17 Combined' }, + { type: 'doc', id: 'update-notes/v3.17.0', label: '3.17.0' }, + ], + }, { type: 'category', label: '3.16', items: [ + { type: 'doc', id: 'update-notes/v3.16.6', label: '3.16.6' }, + { type: 'doc', id: 'update-notes/v3.16.5', label: '3.16.5' }, + { type: 'doc', id: 'update-notes/v3.16.4', label: '3.16.4' }, { type: 'doc', id: 'update-notes/v3.16', label: '3.16 Combined' }, { type: 'doc', id: 'update-notes/v3.16.3', label: '3.16.3' }, { type: 'doc', id: 'update-notes/v3.16.2', label: '3.16.2' }, diff --git a/static/img/custom-modes/custom-modes-3.png b/static/img/custom-modes/custom-modes-3.png new file mode 100644 index 00000000..03f73061 Binary files /dev/null and b/static/img/custom-modes/custom-modes-3.png differ diff --git a/static/img/custom-modes/custom-modes-4.png b/static/img/custom-modes/custom-modes-4.png new file mode 100644 index 00000000..b274e59d Binary files /dev/null and b/static/img/custom-modes/custom-modes-4.png differ diff --git a/static/img/intelligent-context-condensation/intelligent-context-condensation.png b/static/img/intelligent-context-condensation/intelligent-context-condensation.png new file mode 100644 index 00000000..f7213e87 Binary files /dev/null and b/static/img/intelligent-context-condensation/intelligent-context-condensation.png differ diff --git a/static/img/power-steering/power-steering.png b/static/img/power-steering/power-steering.png new file mode 100644 index 00000000..f6ecaf51 Binary files /dev/null and b/static/img/power-steering/power-steering.png differ diff --git a/static/img/using-modes/using-modes-1.png b/static/img/using-modes/using-modes-1.png new file mode 100644 index 00000000..d25686fb Binary files /dev/null and b/static/img/using-modes/using-modes-1.png differ diff --git a/static/img/using-modes/using-modes-2.png b/static/img/using-modes/using-modes-2.png new file mode 100644 index 00000000..e3cb7c43 Binary files /dev/null and b/static/img/using-modes/using-modes-2.png differ diff --git a/static/img/using-modes/using-modes.png b/static/img/using-modes/using-modes.png new file mode 100644 index 00000000..b22f93a9 Binary files /dev/null and b/static/img/using-modes/using-modes.png differ diff --git a/static/img/v3.17.0/v3.17.0.png b/static/img/v3.17.0/v3.17.0.png new file mode 100644 index 00000000..f08f0e04 Binary files /dev/null and b/static/img/v3.17.0/v3.17.0.png differ