Commit graph

2761 commits

Author SHA1 Message Date
Eric Wheeler
2032c9e45f test: add validateMarkerSequencing test cases
Tests valid and invalid marker sequences:
- validates single and multiple complete sequences
- detects out-of-order markers (separator/replace before search)
- detects incorrect sequence termination
- validates state transitions between SEARCH/SEP/REPLACE markers

Signed-off-by: Eric Wheeler <roo-code@z.ewheeler.org>
2025-03-21 20:55:51 -07:00
Eric Wheeler
4b3f711746 fix: enforce newlines between diff section separators
Require newlines between diff section markers (SEARCH, ======, REPLACE)
to prevent content confusion when searching input contains separator
markers. Error message mentions required marker newlines.

Signed-off-by: Eric Wheeler <roo-code@z.ewheeler.org>
2025-03-21 20:55:51 -07:00
Eric Wheeler
c7321b0107 fix: reject apply_diff when search matches replace content
Prevents attempting to apply diffs where search and replace content are identical,
which would result in no changes being made. Instead, provide a helpful error
message explaining why the operation was rejected.

Fixes: #1350

Signed-off-by: Eric Wheeler <roo-code@z.ewheeler.org>
2025-03-21 20:55:51 -07:00
Eric Wheeler
1b8bac66fd fix: pass multi-block flag to getDiffStrategy in system instructions
When previewing system instructions, getDiffStrategy was not receiving the
MULTI_SEARCH_AND_REPLACE flag, causing the instructions to show the wrong diff
strategy description. Now correctly passing the flag to ensure the proper diff
strategy description is shown in system instructions.

Signed-off-by: Eric Wheeler <roo-code@z.ewheeler.org>
2025-03-21 20:55:51 -07:00
Eric Wheeler
81692a43c9 fix: escape section markers in apply_diff
Provide support for escaping section markers so that the model can
add or remove lines like:
	=======
by escaping them in the search or replace string:
	\=======

A state machine tracks apply_diff markers appear in correct sequence:
SEARCH -> SEPARATOR -> REPLACE. Prevents syntax corruption from interleaved or
malformed blocks by validating before processing matches.

If a model tries to interleave diff markers, then the state machine will
return a response to the model like this so it can correct. testing
shows that this works on Claude 3.5, 3.7 and gemini-2.0-flash-thinking:

```xml
    <error_details>
    ERROR: Special marker '=======' found in your diff content at line 7:

    When removing merge conflict markers like '=======' from files, you MUST escape them
    in your SEARCH section by prepending a backslash (\) at the beginning of the line:

    CORRECT FORMAT:

    <<<<<<< SEARCH
    content before
    \=======    <-- Note the backslash here in this example
    content after
    =======
    replacement content
    >>>>>>> REPLACE

    Without escaping, the system confuses your content with diff syntax markers.
    You may use multiple diff blocks in a single diff request, but ANY of ONLY the following separators that occur within SEARCH or REPLACE content must be must be escaped, as follows:
    \<<<<<<< SEARCH
    \=======
    \>>>>>>> REPLACE

    </error_details>
```

Fixes: #1557
Fixes: #1408

Signed-off-by: Eric Wheeler <roo-code@z.ewheeler.org>
2025-03-21 20:55:47 -07:00
Matt Rubens
def40180dc
Don't do partial reads on binary files (#1886) 2025-03-21 15:47:13 -04:00
Matt Rubens
f5628e573f
Support mentioning binary files (#1880) 2025-03-21 10:51:44 -04:00
Matt Rubens
02081dedf9
Revert "feat(mentions): improve path handling for Windows and escaped spaces" (#1875) 2025-03-21 09:59:16 -04:00
Matt Rubens
95ba760daf
Non-thinking sonnet has 8192 max tokens (#1860) 2025-03-21 00:24:57 -04:00
cannuri
000df18503
Enhance translate mode guidelines + informal speech in de locales (#1858)
* feat(i18n): Enhance Translate mode guidelines

This commit improves the Translate custom mode in .roomodes by adding:

- Clear requirement to use informal speech (e.g., "du" instead of "Sie")
- Guidance on preserving domain-specific terminology in English
- New section on common translation pitfalls to avoid
- Enhanced instructions for handling placeholders in translated strings
- Guidelines for UI element translation (buttons vs. tooltips)
- Directions for handling incomplete source strings
- Rules to preserve original perspective (user→system vs system→user)
- A translator's checklist for quality assurance

These improvements ensure more consistent, accurate, and natural
translations across supported languages while preventing common
localization errors.

* use informal speech in de locales
2025-03-20 20:47:27 -04:00
Matt Rubens
f9d2b4db97
Make the question follow-up suggestions optional (#1857)
Make the question follow-up optional
2025-03-20 18:37:09 -04:00
Yukky
b033082523
Reflect Cross-region inference option in ap-xx region (#1842)
* Fix: Enable cross-region inference for 'ap-xx' region in AwsBedrockHandler.completePrompt

* Fix: Enable cross-region inference for 'ap-xx' region in AwsBedrockHandler.createMessage

* Create itchy-waves-move.md

---------

Co-authored-by: Matt Rubens <mrubens@users.noreply.github.com>
2025-03-20 16:03:51 -04:00
Matt Rubens
842e69ceb8
v3.10 (#1850) 2025-03-20 16:00:04 -04:00
Matt Rubens
4f6dd74c29
Sort file search results shortest to longest (#1849) 2025-03-20 14:21:27 -04:00
Matt Rubens
dca4563b9a
Fixes to file search (#1846) 2025-03-20 12:14:32 -04:00
Matt Rubens
c7562a6a37
Try to avoid placeholders in follow-up questions (#1839)
* Try to avoid placeholders in follow-up questions

* Fix this too
2025-03-20 11:33:38 -04:00
Sam Hoang Van
f1efeca554
feat follow up suggest (#1783)
* feat follow up suggest

* Cleanup

---------

Co-authored-by: Matt Rubens <mrubens@users.noreply.github.com>
2025-03-20 10:42:11 -04:00
aheizi
6bc81c2a0e
fix mcp stderr log (#1830) 2025-03-20 09:12:36 -04:00
pugazhendhi-m
e4c398d888
Discards temperature setting on o3-mini for Unbound (#1836)
* Discards temperature setting on o3-mini for Unbound

* Adds changeset

---------

Co-authored-by: Pugazhendhi <pugazhendhi@unboundsecurity.ai>
2025-03-20 09:11:22 -04:00
KJ7LNW
9fadd3dbe2
fix: ripgrep search result handling and formatting (#1831)
Problem:
- Previous implementation incorrectly grouped context lines with matches
- Context lines were split into beforeContext/afterContext arrays, making it difficult to maintain proper line order
- Output format was inconsistent with read_file output
- Non-contiguous search results were sometimes broken or incorrectly grouped
- Example of incorrect output:
  # bench/bundle-test/rollup.config.mjs
   16 |       file: 'dist/index-wasm.min.mjs',
   17 |       format: 'es',
   24 |     output: {
  ----
   25 |       file: 'dist/index-lite.min.mjs',
   26 |       format: 'es',
  ----

  # packages/rehype/package.json
  ----
   10 | it('run', async () => {
   27 |   "files": [
   28 |     "dist"
  ----

Solution:
- Replace separate context arrays with a single 'lines' array containing both matches and context
- Add isMatch flag to distinguish between match and context lines
- Improve contiguity detection by checking if line numbers are sequential
- Standardize output format to match read_file output
- Properly handle non-contiguous search results by creating new result groups
- Example of correct output:
  # bench/bundle-test/rollup.config.mjs
   16 |       file: 'dist/index-wasm.min.mjs',
   17 |       format: 'es',
  ----
   24 |     output: {
   25 |       file: 'dist/index-lite.min.mjs',
   26 |       format: 'es',
  ----

This change ensures search results are properly grouped and displayed with the correct context.

Signed-off-by: Eric Wheeler <roo-code@z.ewheeler.org>
Co-authored-by: Eric Wheeler <roo-code@z.ewheeler.org>
2025-03-20 09:10:22 -04:00
Matt Rubens
4a0c0b1116
Revert "Merge pull request #1682 from GitlyHallows/bug/old-task-deletion" (#1837)
This reverts commit bfd60097d0, reversing
changes made to 7459ac5dac.
2025-03-20 09:08:36 -04:00
Sam Hoang Van
70a476e722
feat read file range (#1440)
* feat read file range

feat: add file truncation with code structure preview

Add configurable line limit for large file handling with source code structure preview. This improves performance and memory usage while maintaining code readability.

Key changes:

Add maxReadFileLine setting (default: 4500) with UI controls
Create efficient line counter utility using streams
Add parseSourceCodeDefinitionsForFile for single file parsing
Show truncation notice with code structure for large files
Add comprehensive tests for new functionality
Move file extensions to shared constant

add line number

pr comment

Return definition ranges from tree-sitter

make treesitter always add line

add line number to rg search

enhance tree siter output & fix test

update snapshot

fix test

* Add translations, tweak range

---------

Co-authored-by: Matt Rubens <mrubens@users.noreply.github.com>
2025-03-20 00:55:47 -04:00
Matt Rubens
f181da1454
Move context-mention file/folder search to the server (#1824) 2025-03-20 00:45:27 -04:00
Wojciech Kordalski
499b8e4665
Fake AI provider (#1769)
* Fake AI

* Do not show Fake AI in Roo-Code settings

* Rename providers/fake-provider.ts to providers/fake-ai.ts
2025-03-19 19:07:59 -07:00
Matt Rubens
65740b311f
Put the full language name in the system prompt (#1813) 2025-03-19 13:33:31 -04:00
arthur
6b8010f50c
Update French locales (common.json) (#1800) 2025-03-19 00:45:29 -07:00
Seth Miller
de7cef29f1
FIX: Initialize tts speed state in ClineProvider (#1799) 2025-03-19 00:44:59 -07:00
Matt Rubens
dc9fc13a22
Pass current language to system prompt correctly (#1793) 2025-03-19 01:03:54 -04:00
Matt Rubens
aed55d799b
v3.9 (#1790) 2025-03-19 00:30:13 -04:00
Matt Rubens
ff14efac81
Add total cost to environment details (#1788)
* Add total cost to environment details

* Update src/core/Cline.ts

Co-authored-by: ellipsis-dev[bot] <65095814+ellipsis-dev[bot]@users.noreply.github.com>

* Update src/core/Cline.ts

---------

Co-authored-by: ellipsis-dev[bot] <65095814+ellipsis-dev[bot]@users.noreply.github.com>
2025-03-18 22:04:51 -04:00
Chris Estreich
a15691dc1d
Add a way to stop TTS (#1787) 2025-03-18 17:05:05 -07:00
Matt Rubens
2267cad93d
Revert "Merge pull request #1618 from aheizi/support_project_mcp" (#1784)
This reverts commit df80e9620d, reversing
changes made to dc302f72c2.
2025-03-18 16:10:12 -04:00
Chris Estreich
4d1b9d2ff6
Allow webviews to make OpenRouter API calls (#1778)
* Allow webviews to make OpenRouter API calls

* Update package-lock.json
2025-03-18 09:23:09 -07:00
Matt Rubens
38655825d4
Extension-side internationalization (#1757)
* Extension-side internationalization

* Update script

* Cleaner esbuild

* Turn off debugging

* PR feedback

* Update src/i18n/locales/en/common.json

Co-authored-by: ellipsis-dev[bot] <65095814+ellipsis-dev[bot]@users.noreply.github.com>

* Update src/i18n/locales/ca/common.json

Co-authored-by: ellipsis-dev[bot] <65095814+ellipsis-dev[bot]@users.noreply.github.com>

---------

Co-authored-by: ellipsis-dev[bot] <65095814+ellipsis-dev[bot]@users.noreply.github.com>
2025-03-18 10:39:21 -04:00
aheizi
7ef4841914
feat: batch clear history (#1596)
* batch clear history

* catch Task not found error

* fix deleteMultipleTasksWithIds

* add i18n for batch clear history

* add i18n for history

* debug

* remove unused logs

* fix trans

* fix trans

* Cleanup

---------

Co-authored-by: aheizi <aheiz@outlook.com>
Co-authored-by: Matt Rubens <mrubens@users.noreply.github.com>
2025-03-18 09:33:25 -04:00
Sam Hoang Van
a56741f51e
fix for task history (#1765) 2025-03-18 08:54:39 -04:00
Chris Estreich
878b3820d2
Settings tweaks: add terminal & language sections, fix whell scroll in editor tab (#1763) 2025-03-18 00:11:57 -07:00
KJ7LNW
6301e90454
Fix shell integration race condition (and other minor fixup/cleanup) (#1660)
* fix: clarify PowerShell command completion workaround

The command completion detection approach in PowerShell requires an output
string to allow duplicate commands to execute in some versions of code.
Update the string to explicitly indicate it is a Roo PowerShell workaround,
making it clear in terminal output that this is intentional behavior rather
than a side effect.

Signed-off-by: Eric Wheeler <roo-code@z.ewheeler.org>

* cleanup: improve terminal logging and error handling

No functional changes - purely improves error handling and logging clarity.

Terminal.ts:
- Handle undefined process state in setActiveStream without throwing
- Add terminal IDs to all log messages for better traceability
- Improve error message clarity in shell integration timeout

TerminalRegistry.ts:
- Reorganize shell execution event handlers for better flow
- Log shell execution events before processing for reliable debugging
- Add detailed context to terminal not found scenarios
- Include command and execution state in error messages

Signed-off-by: Eric Wheeler <roo-code@z.ewheeler.org>

* feat: make terminal shell integration timeout configurable

Users with long shell startup times were encountering "Shell Integration Unavailable" errors due to the hard-coded 4s timeout. The timeout is now configurable through Advanced Settings (1-60s).

Thanks @filthy for troubleshooting and @kiwina for suggesting making the timeout configurable.

Fixes #1654

Signed-off-by: Eric Wheeler <roo-code@z.ewheeler.org>

* critical fix: race condition that prevents command completion

Terminal running state is now managed in TerminalRegistry instead of Terminal to prevent race between stream close and shell completion.

While this race may not trigger on current VSCode versions, newer releases with additional terminal fixes may expose the issue. This proactively prevents "Shell execution end event received, but process is not running" errors.

Signed-off-by: Eric Wheeler <roo-code@z.ewheeler.org>

* fix: improve command execution path reporting

Enhance clarity of command execution context and error reporting:

- Check to see if the directory changed because of the command
- Clarify execution path message
- Add explicit message when command exits with non-zero code

Signed-off-by: Eric Wheeler <roo-code@z.ewheeler.org>

* system instructions: clarify terminal directory operations

Clear guidance for the AI system on:
- Working directory constraints
- Path handling requirements
- Tool vs terminal directory behavior

Signed-off-by: Eric Wheeler <roo-code@z.ewheeler.org>

* test: update snapshots for system prompt working directory instructions

Signed-off-by: Eric Wheeler <roo-code@z.ewheeler.org>

---------

Signed-off-by: Eric Wheeler <roo-code@z.ewheeler.org>
Co-authored-by: Eric Wheeler <roo-code@z.ewheeler.org>
Co-authored-by: Chris Estreich <cestreich@gmail.com>
2025-03-17 23:57:20 -07:00
teddyOOXX
23af4c2609
add multiple workspaces support (#1725)
feat: add multiple workspaces support

- Add getWorkspacePath function to centralize workspace directory path retrieval
- Use the new workspace directory retrieval logic in Cline, Mentions, ClineProvider, and WorkspaceTracker
- Update WorkspaceFile on tab switch and prevent redundant updates by checking prevWorkSpacePath
- Fix the bug that loads the contents of the previous tab when quickly switching tabs
- Optimize getWorkspacePath return value for better reliability

Co-authored-by: xiong <yueminxiong.xym@alibaba-inc.com>
2025-03-18 02:14:39 -04:00
Felix NyxJae
a4853f2faa
fix Human Relay not working up on welcome screen (#1759)
* fix: Add special handling to human-relay providers, optimize configuration check logic

* fix: Remove the debug log in the checkExistKey function
2025-03-18 01:51:14 -04:00
Seth Miller
f16a49de87
Add text-to-speech functionality (#1412)
* Add text-to-speech functionality

* Add speed config option to text-to-speech

* Fix test case for tts speed slider

* Fix test case for tts speed slider (really)

* Disabled error message logging in tts.ts

* ignore markdown and mermaid diagrams in TTS

* add ttsEnabled and ttsSpeed to GlobalStateKey

* fix failing webview test for save button

* Translations

* Fix tests

---------

Co-authored-by: Matt Rubens <mrubens@users.noreply.github.com>
2025-03-18 01:47:16 -04:00
Chris Estreich
eb74f02094
Choose specific provider when using OpenRouter (#1753)
* Choose specific provider when using OpenRouter

* Add translations
2025-03-17 15:40:27 -07:00
Chris Estreich
bfd60097d0
Merge pull request #1682 from GitlyHallows/bug/old-task-deletion
Fix old task deletion bug
2025-03-17 13:16:26 -07:00
Matt Rubens
7459ac5dac
Merge pull request #1751 from RooVetGit/i18n_more_chat
More chat i18n
2025-03-17 16:09:07 -04:00
Matt Rubens
7780957fed Fix language passing 2025-03-17 15:50:18 -04:00
Matt Rubens
41bd36c29a More chat i18n 2025-03-17 15:49:59 -04:00
Chris Estreich
4f15b5d9b7
Merge pull request #1616 from qdaxb/remove_at_when_add_context
remove '@' when add selection to context
2025-03-17 11:40:42 -07:00
cte
f108dfaeb8 Evals 2025-03-17 10:09:19 -07:00
Franciszek Piszcz
2270c72275 fix(RooCodeAPI): re-add clineAskResponded event that got lost in rebase 2025-03-17 17:46:54 +01:00
Chris Estreich
a06119a40c
Merge branch 'main' into all-tasks-events-in-api 2025-03-17 09:35:14 -07:00