From 50f3ca099d03256b995310486f229f854b9d8dec Mon Sep 17 00:00:00 2001 From: hannesrudolph Date: Thu, 24 Apr 2025 18:15:57 -0600 Subject: [PATCH] 3.14 Part A --- docs/features/footgun-prompting.md | 13 ++- docs/features/tools/append-to-file.md | 87 --------------- docs/features/tools/apply-diff.md | 33 +++--- docs/features/tools/insert-content.md | 104 ++++++++++++++++++ docs/features/tools/list-files.md | 12 +- docs/features/tools/search-and-replace.md | 103 +++++++++++++++++ docs/features/tools/tool-use-overview.md | 4 +- docs/features/tools/write-to-file.md | 1 + docs/update-notes/index.md | 6 + docs/update-notes/v3.13.0.md | 2 +- docs/update-notes/v3.13.2.md | 7 ++ docs/update-notes/v3.14.0.md | 63 +++++++++++ docs/update-notes/v3.14.1.md | 7 ++ sidebars.ts | 12 +- .../footgun-prompting/footgun-prompting-1.png | Bin 0 -> 48992 bytes static/img/v3.14.0/v3.14.0.png | Bin 0 -> 59360 bytes 16 files changed, 333 insertions(+), 121 deletions(-) delete mode 100644 docs/features/tools/append-to-file.md create mode 100644 docs/features/tools/insert-content.md create mode 100644 docs/features/tools/search-and-replace.md create mode 100644 docs/update-notes/v3.13.2.md create mode 100644 docs/update-notes/v3.14.0.md create mode 100644 docs/update-notes/v3.14.1.md create mode 100644 static/img/footgun-prompting/footgun-prompting-1.png create mode 100644 static/img/v3.14.0/v3.14.0.png diff --git a/docs/features/footgun-prompting.md b/docs/features/footgun-prompting.md index 0366fa85..40e6b336 100644 --- a/docs/features/footgun-prompting.md +++ b/docs/features/footgun-prompting.md @@ -4,7 +4,11 @@ sidebar_label: 'Footgun Prompting' # Footgun Prompting: Override System Prompts -Footgun Prompting, AKA Overriding System Prompt, allows advanced users to completely replace the default system prompt for a specific Roo Code mode. This provides granular control over the AI's behavior but bypasses built-in safeguards. +Footgun Prompting (System Prompt Override) lets you replace the default system prompt for a specific Roo Code mode. This offers granular control but bypasses built-in safeguards. Use with caution. + +Warning indicator for active system prompt override +**Warning Indicator:** When a system prompt override is active for the current mode, Roo Code will display a warning icon in the chat input area to remind you that the default behavior has been modified. + :::info **footgun** _(noun)_ @@ -32,7 +36,7 @@ Footgun Prompting, AKA Overriding System Prompt, allows advanced users to comple ## Accessing the Feature -You can find the option and instructions within the Roo Code UI: +Find the option and instructions in the Roo Code UI: 1. Click the icon in the Roo Code top menu bar. 2. Expand the **"Advanced: Override System Prompt"** section. @@ -63,7 +67,7 @@ The project is located at: {{workspace}}. Please respond in {{language}}. ``` -Roo Code will substitute these placeholders before sending the prompt to the AI model. +Roo Code substitutes these placeholders before sending the prompt to the model. ## Key Considerations & Warnings @@ -73,5 +77,4 @@ Roo Code will substitute these placeholders before sending the prompt to the AI - **No File, No Override:** If the `.roo/system-prompt-{mode-slug}` file doesn't exist, Roo Code uses the standard system prompt generation process for that mode. - **Blank Files Ignored:** If the override file exists but is empty (blank), it will be ignored and the default system prompt will be used. - **Directory Creation:** Roo Code ensures the `.roo` directory exists before attempting to read or create the override file. - -Use this feature cautiously. While powerful for customization, incorrect implementation can significantly degrade Roo Code's performance and reliability for the affected mode. +Use this feature cautiously. Incorrect implementation can significantly degrade Roo Code's performance and reliability for the affected mode. diff --git a/docs/features/tools/append-to-file.md b/docs/features/tools/append-to-file.md deleted file mode 100644 index 39283191..00000000 --- a/docs/features/tools/append-to-file.md +++ /dev/null @@ -1,87 +0,0 @@ -# append_to_file - -The `append_to_file` tool adds content to the end of a specified file. If the file doesn't exist, it creates the file with the provided content. It automatically handles directory creation if needed. - -## Parameters - -The tool accepts these parameters: - -- `path` (required): The relative path (from the workspace root) of the file to append to. -- `content` (required): The content to append to the file. - -## What It Does - -This tool appends the provided `content` to the end of the file specified by `path`. If the target file doesn't exist, the tool creates it and populates it with the `content`. It also ensures any necessary parent directories for the file path are created. Changes are presented in a diff view for user approval before being saved. - -## When is it used? - -- When adding new entries to log files. -- When appending data records to existing datasets (e.g., CSV, JSON lines). -- When incrementally building a file where new content should always go at the end. -- When creating a file for the first time with initial content, especially if subsequent operations will append to it. - -## Key Features - -- **Append or Create**: Appends content to existing files or creates new files if they don't exist. -- **Interactive Approval**: Shows proposed changes (append or new file creation) in a diff view, requiring explicit user approval. -- **User Edit Support**: Allows editing the proposed content directly within the diff view before final approval. -- **Automatic Directory Creation**: Automatically creates parent directories if they don't exist for the specified `path`. -- **Content Preprocessing**: Cleans content by removing potential AI model artifacts (like code fences) and unescaping HTML entities. -- **Access Control**: Validates file access against `.rooignore` rules. -- **Diff View Integration**: Opens the file in a diff view, scrolling to the first change for review. -- **Partial Update Support**: Can handle streaming content (`block.partial`) into the diff view. -- **Context Tracking**: Records the file edit operation for context management. - -## Limitations - -- **Append Only**: Content is always added to the *end* of the file; it cannot insert content at other positions. -- **Review Overhead**: The mandatory diff view approval adds an interactive step. -- **Potential for Large Files**: While generally efficient, appending large amounts of content repeatedly might impact performance less than `write_to_file` but more than `apply_diff` for targeted changes. - -## How It Works - -When the `append_to_file` tool is invoked, it follows this process: - -1. **Parameter Validation**: Checks for required `path` and `content`. Reports errors if missing. -2. **Path Processing**: Resolves the relative `path` to an absolute path and checks if it's outside the workspace. -3. **Access Control**: Validates file access against `.rooignore` rules using `rooIgnoreController`. -4. **File Existence Check**: Determines if the file exists using `fileExistsAtPath`. -5. **Content Preprocessing**: Removes markdown code fences, unescapes HTML entities (for non-Claude models), and strips potential line numbers. -6. **Diff View Interaction**: - * Opens the file in the diff view (`cline.diffViewProvider.open`). - * If the file exists, prepares the `newContent` by prefixing it with the `originalContent` and a newline (`\n`). - * Updates the diff view with the final content (`cline.diffViewProvider.update`), supporting partial (streaming) updates. - * Scrolls to the first detected change after a complete update (`cline.diffViewProvider.scrollToFirstDiff`). -7. **User Approval**: Presents the change (append or creation) via `askApproval`. Shows a formatted diff if appending. Reverts if rejected. -8. **Saving Changes**: If approved, saves the changes using `cline.diffViewProvider.saveChanges`. -9. **File Context Tracking**: Tracks the edit using `cline.getFileContextTracker().trackFileContext`. -10. **Handling User Edits**: If the user edited the content in the diff view, reports the final merged content back to the AI. -11. **Error Handling**: Uses the `handleError` callback for issues. Resets the diff view on completion, error, or rejection. -12. **Result Reporting**: Reports success (including user edits) or failure back to the AI model using `pushToolResult`. - -## Usage Examples - -Appending log entries to an existing file: - -```xml - -logs/application.log - -[2024-04-18 10:30:00] INFO: User logged in successfully. -[2024-04-18 10:30:05] WARN: Disk space running low. - - -``` - -Creating a new file and adding initial content (if `notes.md` doesn't exist): - -```xml - -project/docs/notes.md - -# Project Notes - -- Initial setup complete. -- Need to configure database connection. - - \ No newline at end of file diff --git a/docs/features/tools/apply-diff.md b/docs/features/tools/apply-diff.md index fc46a113..53715608 100644 --- a/docs/features/tools/apply-diff.md +++ b/docs/features/tools/apply-diff.md @@ -1,6 +1,6 @@ # apply_diff -The `apply_diff` tool makes precise, surgical changes to files by specifying exactly what content to replace. It uses multiple sophisticated strategies for finding and applying changes while maintaining proper code formatting and structure. +The `apply_diff` tool makes precise, surgical changes to files by specifying exactly what content to replace. It uses a sophisticated strategy for finding and applying changes while maintaining proper code formatting and structure. ## Parameters @@ -8,12 +8,12 @@ The tool accepts these parameters: - `path` (required): The path of the file to modify relative to the current working directory. - `diff` (required): The search/replace block defining the changes using a format specific to the active diff strategy. -- `start_line` (optional): A hint for where the search content begins, used by some strategies. -- `end_line` (optional): A hint for where the search content ends, used by some strategies. +- `start_line` (optional): A hint for where the search content begins. _Note: This top-level parameter appears unused by the current main strategy, which relies on `:start_line:` within the diff content._ +- `end_line` (optional): A hint for where the search content ends. _Note: This top-level parameter appears unused by the current main strategy._ ## What It Does -This tool applies targeted changes to existing files using sophisticated strategies to locate and replace content precisely. Unlike simple search and replace, it uses intelligent matching algorithms (including fuzzy matching) that adapt to different content types and file sizes, with fallback mechanisms for complex edits. +This tool applies targeted changes to existing files using fuzzy matching guided by line number hints to locate and replace content precisely. Unlike simple search and replace, it identifies the exact block for replacement based on the provided content and location hints. ## When is it used? @@ -24,11 +24,10 @@ This tool applies targeted changes to existing files using sophisticated strateg ## Key Features -- Uses intelligent fuzzy matching with configurable confidence thresholds (typically 0.8-1.0). +- Uses fuzzy matching (Levenshtein distance on normalized strings) guided by a `:start_line:` hint, with configurable confidence thresholds (typically 0.8-1.0). - Provides context around matches using `BUFFER_LINES` (default 40). -- Employs an overlapping window approach for searching large files. -- Preserves code formatting and indentation automatically. -- Combines overlapping matches for improved confidence scoring. +- Performs a middle-out search within a configurable context window (`bufferLines`) around the hinted start line. +- Preserves code formatting and indentation passively by replacing exact blocks. - Shows changes in a diff view for user review and editing before applying. - Tracks consecutive errors per file (`consecutiveMistakeCountForApplyDiff`) to prevent repeated failures. - Validates file access against `.rooignore` rules. @@ -49,8 +48,8 @@ When the `apply_diff` tool is invoked, it follows this process: 1. **Parameter Validation**: Validates required `path` and `diff` parameters. 2. **RooIgnore Check**: Validates if the target file path is allowed by `.rooignore` rules. 3. **File Analysis**: Loads the target file content. -4. **Match Finding**: Uses the selected strategy's algorithms (exact, fuzzy, overlapping windows) to locate the target content, considering confidence thresholds and context (`BUFFER_LINES`). -5. **Change Preparation**: Generates the proposed changes, preserving indentation. +4. **Match Finding**: Uses a fuzzy matching algorithm (Levenshtein on normalized strings) guided by the `:start_line:` hint within a context window (`BUFFER_LINES`), searching middle-out to locate the target content based on the confidence threshold. +5. **Change Preparation**: Generates the proposed changes by replacing the identified block. 6. **User Interaction**: * Displays the changes in a diff view. * Allows the user to review and potentially edit the proposed changes. @@ -59,16 +58,11 @@ When the `apply_diff` tool is invoked, it follows this process: 8. **Error Handling**: If errors occur (e.g., match failure, partial application), increments the `consecutiveMistakeCountForApplyDiff` for the file and reports the failure type. 9. **Feedback**: Returns the result, including any user feedback or error details. -## Diff Strategy +## Diff Format Requirements -Roo Code uses this strategy for applying diffs: +The `` parameter requires a specific format supporting one or more changes in a single request. Each change block requires a line number hint for the original content. -### MultiSearchReplaceDiffStrategy - -An enhanced search/replace format supporting multiple changes in one request. Requires line numbers for each search block. - -* **Best for**: Multiple, distinct changes where line numbers are known or can be estimated. -* **Requires**: Exact match for the `SEARCH` block content, including whitespace and indentation. Line numbers (`:start_line:`, `:end_line:`) are mandatory. Markers within content must be escaped (`\`). +* **Requires**: Exact match for the `SEARCH` block content (within the fuzzy threshold), including whitespace and indentation. The `:start_line:` number hint is mandatory within each block. The `:end_line:` hint is optional (but supported by the parser). Markers like `<<<<<<<` within the file's content must be escaped (`\\`) in the SEARCH block. Example format for the `` block: @@ -94,5 +88,4 @@ Example format for the `` block: const defaultTimeout = 5000; ======= const defaultTimeout = 10000; // Increased timeout ->>>>>>> REPLACE -``` \ No newline at end of file +>>>>>>> REPLACE \ No newline at end of file diff --git a/docs/features/tools/insert-content.md b/docs/features/tools/insert-content.md new file mode 100644 index 00000000..879c84cd --- /dev/null +++ b/docs/features/tools/insert-content.md @@ -0,0 +1,104 @@ +# insert_content + +The `insert_content` tool adds new lines of content into an existing file without modifying the original content. It's ideal for inserting code blocks, configuration entries, or log lines at specific locations. + +## Parameters + +The tool accepts these parameters: + +- `path` (required): The relative path (from the workspace root) of the file to insert content into. +- `line` (required): The 1-based line number *before* which the content should be inserted. Use `0` to append the content to the end of the file. +- `content` (required): The text content to insert. + +## What It Does + +This tool reads the target file, identifies the specified insertion point based on the `line` parameter, and inserts the provided `content` at that location. If `line` is `0`, the content is added to the end. Changes are presented in a diff view for user approval before being saved. + +## When is it used? + +- When adding new import statements at the beginning of a file. +- When inserting new functions or methods into existing code. +- When adding configuration blocks to settings files. +- When appending log entries or data records. +- When adding any multi-line text block without altering existing lines. + +## Key Features + +- **Targeted Insertion**: Adds content precisely at the specified line number or appends to the end. +- **Preserves Existing Content**: Does not modify or delete original file lines. +- **Interactive Approval**: Shows proposed insertions in a diff view, requiring explicit user approval. +- **User Edit Support**: Allows editing the proposed content directly within the diff view before final approval. +- **Handles Line Numbers**: Correctly interprets the `line` parameter (1-based or 0 for append). +- **Context Tracking**: Records the file edit operation for context management. +- **Error Handling**: Checks for missing parameters, invalid line numbers, and file access issues. + +## Limitations + +- **Insert Only**: Cannot replace or delete existing content. Use `apply_diff` or `search_and_replace` for modifications. +- **Requires Existing File**: The target file specified by `path` must exist. +- **Review Overhead**: The mandatory diff view approval adds an interactive step. + +## How It Works + +When the `insert_content` tool is invoked, it follows this process: + +1. **Parameter Validation**: Checks for required `path`, `line`, and `content`. Validates `line` is a non-negative integer. +2. **File Reading**: Reads the content of the target file specified by `path`. +3. **Insertion Point Calculation**: Converts the 1-based `line` parameter to a 0-based index for internal processing (`-1` for appending). +4. **Content Insertion**: Uses an internal utility (`insertGroups`) to merge the original file lines with the new `content` at the calculated index. +5. **Diff View Interaction**: + * Opens the file in the diff view (`cline.diffViewProvider.open`). + * Updates the diff view with the proposed content (`cline.diffViewProvider.update`). +6. **User Approval**: Presents the change via `askApproval`. Reverts if rejected. +7. **Saving Changes**: If approved, saves the changes using `cline.diffViewProvider.saveChanges`. +8. **File Context Tracking**: Tracks the edit using `cline.getFileContextTracker().trackFileContext`. +9. **Handling User Edits**: If the user edited the content in the diff view, reports the final merged content back. +10. **Result Reporting**: Reports success (including user edits) or failure back to the AI model. + +## Usage Examples + +Inserting import statements at the beginning of a file (`line: 1`): + +```xml + +src/utils.ts +1 + +// Add imports at start of file +import { sum } from './math'; +import { parse } from 'date-fns'; + + +``` + +Appending content to the end of a file (`line: 0`): + +```xml + +config/routes.yaml +0 + +- path: /new-feature + component: NewFeatureComponent + auth_required: true + + +``` + +Inserting a function before line 50: + +```xml + +src/services/api.js +50 + +async function fetchUserData(userId) { + const response = await fetch(`/api/users/${userId}`); + if (!response.ok) { + throw new Error('Failed to fetch user data'); + } + return response.json(); +} + + +``` \ No newline at end of file diff --git a/docs/features/tools/list-files.md b/docs/features/tools/list-files.md index 9ef1c1d0..9e5dc515 100644 --- a/docs/features/tools/list-files.md +++ b/docs/features/tools/list-files.md @@ -28,7 +28,7 @@ This tool lists all files and directories in a specified location, providing a c - Intelligently ignores common large directories like `node_modules` and `.git` in recursive mode - Respects `.gitignore` rules when in recursive mode - Marks files ignored by `.rooignore` with a lock symbol (🔒) when `showRooIgnoredFiles` is enabled -- Optimizes performance with level-by-level directory traversal +- Optimizes file listing performance by leveraging the `ripgrep` tool. - Sorts results to show directories before their contents, maintaining a logical hierarchy - Presents results in a clean, organized format - Automatically creates a mental map of your project structure @@ -36,7 +36,7 @@ This tool lists all files and directories in a specified location, providing a c ## Limitations - File listing is capped at about 200 files by default to prevent performance issues -- Has a 10-second timeout for directory traversal to prevent hanging on complex directory structures +- The underlying `ripgrep` file listing process has a 10-second timeout; if exceeded, partial results may be returned. - When the file limit is hit, it adds a note suggesting to use `list_files` on specific subdirectories - Not designed for confirming the existence of files you've just created - May have reduced performance in very large directory structures @@ -49,10 +49,10 @@ When the `list_files` tool is invoked, it follows this process: 1. **Parameter Validation**: Validates the required `path` parameter and optional `recursive` parameter 2. **Path Resolution**: Resolves the relative path to an absolute path 3. **Security Checks**: Prevents listing files in sensitive locations like root or home directories -4. **Directory Scanning**: - - For non-recursive mode: Lists only the top-level contents - - For recursive mode: Traverses the directory structure level by level with a 10-second timeout - - If timeout occurs, returns partial results collected up to that point +4. **Directory/File Scanning**: + - Uses the `ripgrep` tool to efficiently list files, applying a 10-second timeout. + - Uses Node.js `fs` module to list directories. + - Applies different filtering logic for recursive vs. non-recursive modes. 5. **Result Filtering**: - In recursive mode, skips common large directories like `node_modules`, `.git`, etc. - Respects `.gitignore` rules when in recursive mode diff --git a/docs/features/tools/search-and-replace.md b/docs/features/tools/search-and-replace.md new file mode 100644 index 00000000..0ea72375 --- /dev/null +++ b/docs/features/tools/search-and-replace.md @@ -0,0 +1,103 @@ +# search_and_replace + +The `search_and_replace` tool finds and replaces text within a file, supporting both literal strings and regular expression patterns. It allows for targeted replacements across multiple locations, optionally within specific line ranges. + +## Parameters + +### Required Parameters + +- `path`: The relative path (from the workspace root) of the file to modify. +- `search`: The text string or regex pattern to find. +- `replace`: The text to replace matches with. + +### Optional Parameters + +- `start_line`: The 1-based line number where the search scope begins. +- `end_line`: The 1-based line number where the search scope ends (inclusive). +- `use_regex`: Set to `"true"` to treat the `search` parameter as a regular expression pattern (default is `false`). +- `ignore_case`: Set to `"true"` to perform a case-insensitive search (default is `false`). + +## What It Does + +This tool reads the specified file and performs a search-and-replace operation based on the provided parameters. It can operate on the entire file or be restricted to a specific range of lines. Changes are presented in a diff view for user review and approval before being saved. + +## When is it used? + +- When renaming variables, functions, or classes across a file. +- When updating specific text strings or values consistently. +- When applying patterned changes using regular expressions. +- When refactoring code requires replacing specific patterns. +- When making targeted changes within a defined section of a file. + +## Key Features + +- **Flexible Searching**: Supports both literal text and regular expression patterns. +- **Case Sensitivity Control**: Option to ignore case during search. +- **Scoped Replacements**: Can limit replacements to a specific range of lines (`start_line`, `end_line`). +- **Global Replacement**: Performs replacements across the entire file (or specified range) by default. +- **Interactive Approval**: Shows proposed changes in a diff view for user review and approval. +- **User Edit Support**: Allows editing the proposed content directly within the diff view. +- **Context Tracking**: Records the file edit operation. +- **Error Handling**: Checks for missing parameters, file access issues, and invalid line numbers. + +## Limitations + +- **Single File Operation**: Operates on only one file at a time. Use `search_files` to find patterns across multiple files first. +- **Review Overhead**: The mandatory diff view approval adds an interactive step. +- **Regex Complexity**: Complex regex patterns might require careful construction and testing. + +## How It Works + +When the `search_and_replace` tool is invoked, it follows this process: + +1. **Parameter Validation**: Checks for required `path`, `search`, `replace`, and validates optional parameters like line numbers and boolean flags. +2. **File Reading**: Reads the content of the target file specified by `path`. +3. **Regex Construction**: + * If `use_regex` is `false`, the `search` string is escaped to treat it as literal text. + * A `RegExp` object is created with the `g` (global) flag and optionally the `i` (ignore case) flag. +4. **Replacement Execution**: + * If `start_line` or `end_line` are provided, the file content is split into lines, the relevant section is isolated, the replacement is performed on that section, and the file content is reconstructed. + * If no line range is specified, the replacement is performed on the entire file content string. +5. **Diff View Interaction**: + * Opens the file in the diff view showing original vs. proposed content. + * Updates the diff view with the result of the replacement. +6. **User Approval**: Presents the change via `askApproval`. Reverts if rejected. +7. **Saving Changes**: If approved, saves the changes (including any user edits made in the diff view). +8. **File Context Tracking**: Tracks the edit using `cline.getFileContextTracker().trackFileContext`. +9. **Result Reporting**: Reports success (including user edits) or failure back to the AI model. + +## Usage Examples + +Simple text replacement throughout a file: + +```xml + +src/config.js +API_KEY_OLD +API_KEY_NEW + +``` + +Case-insensitive regex replacement to update function calls: + +```xml + +src/app.ts +processData\((.*?)\) +handleData($1) +true +true + +``` + +Replacing text only within lines 10 to 20: + +```xml + +README.md +Draft +Final +10 +20 + +``` \ No newline at end of file diff --git a/docs/features/tools/tool-use-overview.md b/docs/features/tools/tool-use-overview.md index 6a8a8da6..7aff576d 100644 --- a/docs/features/tools/tool-use-overview.md +++ b/docs/features/tools/tool-use-overview.md @@ -11,7 +11,7 @@ Tools are organized into logical groups based on their functionality: | Category | Purpose | Tools | Common Use | |----------|---------|-------|------------| | **Read Group** | File system reading and searching | [read_file](/features/tools/read-file), [search_files](/features/tools/search-files), [list_files](/features/tools/list-files), [list_code_definition_names](/features/tools/list-code-definition-names) | Code exploration and analysis | -| **Edit Group** | File system modifications | [apply_diff](/features/tools/apply-diff), [write_to_file](/features/tools/write-to-file) | Code changes and file manipulation | +| **Edit Group** | File system modifications | [apply_diff](/features/tools/apply-diff), [insert_content](/features/tools/insert-content), [search_and_replace](/features/tools/search-and-replace), [write_to_file](/features/tools/write-to-file) | Code changes and file manipulation | | **Browser Group** | Web automation | [browser_action](/features/tools/browser-action) | Web testing and interaction | | **Command Group** | System command execution | [execute_command](/features/tools/execute-command) | Running scripts, building projects | | **MCP Group** | External tool integration | [use_mcp_tool](/features/tools/use-mcp-tool), [access_mcp_resource](/features/tools/access-mcp-resource) | Specialized functionality through external servers | @@ -40,6 +40,8 @@ These tools help Roo understand your code and project: These tools help Roo make changes to your code: - [apply_diff](/features/tools/apply-diff) - Makes precise, surgical changes to your code +- [insert_content](/features/tools/insert-content) - Adds new lines of content without modifying existing lines +- [search_and_replace](/features/tools/search-and-replace) - Finds and replaces text or regex patterns within a file - [write_to_file](/features/tools/write-to-file) - Creates new files or completely rewrites existing ones ### Browser Tools diff --git a/docs/features/tools/write-to-file.md b/docs/features/tools/write-to-file.md index aa03ee0c..c0c23791 100644 --- a/docs/features/tools/write-to-file.md +++ b/docs/features/tools/write-to-file.md @@ -48,6 +48,7 @@ When the `write_to_file` tool is invoked, it follows this process: 1. **Parameter Validation**: Validates the required parameters and permissions - Checks that `path`, `content`, and `line_count` are provided + - If `line_count` is missing/invalid, reverts any diff view changes and returns an error suggesting alternative tools (`apply_diff`, `insert_content`, etc.) if modifying an existing file. - Validates the file is allowed (not restricted by `.rooignore`) - Ensures the path is within the workspace boundaries - Tracks consecutive mistake counts for missing parameters diff --git a/docs/update-notes/index.md b/docs/update-notes/index.md index 2c06f287..d9029daa 100644 --- a/docs/update-notes/index.md +++ b/docs/update-notes/index.md @@ -2,8 +2,14 @@ This section contains notes about recent updates to Roo Code, listed by version number. +## Version 3.14 + +* [3.14.1](/update-notes/v3.14.1) (2025-04-24) +* [3.14.0](/update-notes/v3.14.0) (2025-04-23) + ## Version 3.13 +* [3.13.2](/update-notes/v3.13.2) (2025-04-18) * [3.13.1](/update-notes/v3.13.1) (2025-04-18) * [3.13.0](/update-notes/v3.13.0) (2025-04-17) diff --git a/docs/update-notes/v3.13.0.md b/docs/update-notes/v3.13.0.md index d88bf071..60a7a091 100644 --- a/docs/update-notes/v3.13.0.md +++ b/docs/update-notes/v3.13.0.md @@ -9,7 +9,7 @@ This release brings significant UI improvements across multiple views, adds the - UI improvements to task header, chat view, history preview, and welcome view (thanks sachasayan!) ## New Tool: append_to_file -- Added new [append_to_file](/features/tools/append-to-file) tool for appending content to files (thanks samhvw8!) +- Added new append_to_file tool for appending content to files (thanks samhvw8!) - Efficiently add content to the end of existing files or create new files - Ideal for logs, data records, and incremental file building - Includes automatic directory creation and interactive approval via diff view diff --git a/docs/update-notes/v3.13.2.md b/docs/update-notes/v3.13.2.md new file mode 100644 index 00000000..fee98ded --- /dev/null +++ b/docs/update-notes/v3.13.2.md @@ -0,0 +1,7 @@ +# Roo Code 3.13.2 Release Notes (2025-04-18) + +This release adds the ability to specify custom URLs for the Gemini provider. + +## Improvements + +* Allow custom URLs for Gemini provider. \ No newline at end of file diff --git a/docs/update-notes/v3.14.0.md b/docs/update-notes/v3.14.0.md new file mode 100644 index 00000000..74cc99b4 --- /dev/null +++ b/docs/update-notes/v3.14.0.md @@ -0,0 +1,63 @@ +# Roo Code 3.14.0 Release Notes (2025-04-23) + +This release introduces Gemini prompt caching, improves several tools, and includes numerous bug fixes and enhancements across the extension. + +## Apply Diff and Other Major File Edit Improvements + +* Improve [`apply_diff`](/features/tools/apply-diff) to work better with **Google Gemini 2.5** and other models +* Automatically close files opened by edit tools (`apply_diff`, `insert_content`, `search_and_replace`, `write_to_file`) after changes are approved. This prevents cluttering the editor with files opened by Roo and helps clarify context by only showing files intentionally opened by the user. +* Added the [`search_and_replace`](/features/tools/search-and-replace) tool. This tool finds and replaces text within a file using literal strings or regex patterns, optionally within specific line ranges (thanks samhvw8!). +* Added the [`insert_content`](/features/tools/insert-content) tool. This tool adds new lines into a file at a specific location or the end, without modifying existing content (thanks samhvw8!). +* Deprecated the `append_to_file` tool in favor of `insert_content` (use `line: 0`). +* Correctly revert changes and suggest alternative tools when [`write_to_file`](/features/tools/write-to-file) fails on a missing line count +* Better progress indicator for [`apply_diff`](/features/tools/apply-diff) tools (thanks qdaxb!) +* Ensure user feedback is added to conversation history even during API errors (thanks System233!). +* Prevent redundant 'TASK RESUMPTION' prompts from appearing when resuming a task (thanks System233!). +* Fix issue where error messages sometimes didn't display after cancelling an API request (thanks System233!). +* Preserve editor state and prevent tab unpinning during diffs (thanks seedlord!) + +## Context Mentions + +* Use material icons for files and folders in mentions (thanks elianiva!) +* Improvements to icon rendering on Linux (thanks elianiva!) +* Better handling of `aftercursor` content in context mentions (thanks elianiva!) + + Warning indicator for active system prompt override + +## Footgun Prompting + +* **Context Variables:** Added the ability to interpolate context variables (`{{workspace}}`, `{{mode}}`, `{{language}}`, `{{shell}}`, `{{operatingSystem}}`) into custom system prompt override files, allowing for more dynamic prompts (thanks daniel-lxs!). See the [Footgun Prompting documentation](/features/footgun-prompting#using-context-variables) for details. +* **Override Warning:** Roo Code now displays a warning indicator in the chat input when a system prompt override is active for the current mode. + + Warning indicator for active system prompt override + +## MCP Related + +* Support injecting environment variables in MCP config (thanks NamesMT!) +* Fix MCP hub error when dragging extension to another sidebar +* Improve display of long MCP tool arguments + +## Provider Updates + +* Allow Amazon Bedrock Marketplace ARNs (thanks mlopezr!) +* Add prompt caching for `gemini-2.5-pro-preview-03-25` in the Gemini provider (Vertex and OpenRouter coming soon!) +* Improvements to Requesty model list fetching (thanks dtrugman!) +* Make the VS Code LM provider show the correct model information (thanks QuinsZouls!) +* Remove unnecessary calculation from VS Code LM provider (thanks d-oit!) + +## Bug Fixes and General QOL Improvements and Misc. + +* Make the [`list_files`](/features/tools/list-files) tool more efficient and smarter about excluding directories like `.git/` +* Performance improvements to task size calculations +* Give better loading feedback on chat rows (thanks elianiva!) +* Use a more sensible task export icon +* Fix file drag and drop on Windows and when using SSH tunnels (thanks NyxJae!) +* Fix interpolation bug in the “add to context” code action (thanks elianiva!) +* Fix redundant ‘TASK RESUMPTION’ prompts (thanks System233!) +* Fix bug opening files when editor has no workspace root +* Don’t immediately show a model ID error when changing API providers +* Fixes to make the `focusInput` command more reliable (thanks hongzio!) +* Fix terminal carriage return handling for correct progress bar display (thanks Yikai-Liao!) +* Track tool use errors in evals +* Use path aliases in webview source files +* Better handling of FakeAI “controller” object (thanks wkordalski) diff --git a/docs/update-notes/v3.14.1.md b/docs/update-notes/v3.14.1.md new file mode 100644 index 00000000..e3bf4022 --- /dev/null +++ b/docs/update-notes/v3.14.1.md @@ -0,0 +1,7 @@ +# Roo Code 3.14.1 Release Notes (2025-04-24) + +This release temporarily disables Gemini caching due to reported issues. + +## Bug Fixes + +* Disable Gemini caching while we investigate issues reported by the community. \ No newline at end of file diff --git a/sidebars.ts b/sidebars.ts index adbdd762..292b0eb3 100644 --- a/sidebars.ts +++ b/sidebars.ts @@ -44,16 +44,17 @@ const sidebars: SidebarsConfig = { items: [ 'features/tools/tool-use-overview', 'features/tools/access-mcp-resource', - 'features/tools/append-to-file', 'features/tools/apply-diff', 'features/tools/ask-followup-question', 'features/tools/attempt-completion', 'features/tools/browser-action', 'features/tools/execute-command', +'features/tools/insert-content', 'features/tools/list-code-definition-names', 'features/tools/list-files', 'features/tools/new-task', 'features/tools/read-file', +'features/tools/search-and-replace', 'features/tools/search-files', 'features/tools/switch-mode', 'features/tools/use-mcp-tool', @@ -138,10 +139,19 @@ const sidebars: SidebarsConfig = { label: 'Update Notes', items: [ 'update-notes/index', + { + type: 'category', + label: '3.14', + items: [ + { type: 'doc', id: 'update-notes/v3.14.1', label: '3.14.1' }, + { type: 'doc', id: 'update-notes/v3.14.0', label: '3.14.0' }, + ], + }, { type: 'category', label: '3.13', items: [ + { type: 'doc', id: 'update-notes/v3.13.2', label: '3.13.2' }, { type: 'doc', id: 'update-notes/v3.13.1', label: '3.13.1' }, { type: 'doc', id: 'update-notes/v3.13.0', label: '3.13.0' }, ], diff --git a/static/img/footgun-prompting/footgun-prompting-1.png b/static/img/footgun-prompting/footgun-prompting-1.png new file mode 100644 index 0000000000000000000000000000000000000000..359c9b487d695d9ecadbcab8715f4e17f2d47938 GIT binary patch literal 48992 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 literal 0 HcmV?d00001 diff --git a/static/img/v3.14.0/v3.14.0.png b/static/img/v3.14.0/v3.14.0.png new file mode 100644 index 0000000000000000000000000000000000000000..3204855bed844cdade45f9d8b26f8fd65f967b32 GIT binary patch literal 59360 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

    jGjnAob+zF>&)PjHP4j(r=`6{uC@15GYwedfN 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