Commit graph

4035 commits

Author SHA1 Message Date
KJ7LNW
5c2511e355
feat: compress terminal output with backspace characters (#2907)
Follow-up to #2562 adding support for backspace character compression.
Optimizes terminal output by handling backspace characters similar to
carriage returns, improving readability of progress spinners and other
terminal output that uses backspace for animation.

- Added processBackspaces function using efficient indexOf approach
- Added comprehensive test suite for backspace handling
- Integrated with terminal output compression pipeline

Signed-off-by: Eric Wheeler <roo-code@z.ewheeler.org>
Co-authored-by: Eric Wheeler <roo-code@z.ewheeler.org>
2025-04-24 19:28:09 -04:00
github-actions[bot]
23aa3b636b
Update contributors list (#2903)
docs: update contributors list [skip ci]

Co-authored-by: cte <cte@users.noreply.github.com>
2025-04-24 19:26:00 -04:00
Chris Estreich
a3f1a3f3ad
Gemini caching improvements (#2925) 2025-04-24 14:20:09 -07:00
asychin
7f99c0691e
feat/add-russian-lang (#2909)
* rus

* sad

* fix lang

* Add ru to translate mode instructions

* Add ru to evals types

* Add link to READMEs

* Bring back smart quotes

* Add prompt caching translations

---------

Co-authored-by: Matt Rubens <mrubens@users.noreply.github.com>
2025-04-24 16:03:30 -04:00
Chris Estreich
b75379bed3
Improve OpenRouter model fetching (#2922) 2025-04-24 12:29:36 -07:00
Chris Estreich
ad4782b766
Add an option to enable prompt caching (#2924) 2025-04-24 12:28:43 -07:00
R00-B0T
31600ed3c9
Changeset version bump (#2919)
* changeset version bump

* Update CHANGELOG.md

---------

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: Chris Estreich <cestreich@gmail.com>
2025-04-24 09:27:32 -07:00
Chris Estreich
d46a9b484c
v3.14.1 (#2920) 2025-04-24 09:24:56 -07:00
Chris Estreich
fb91836203
Revert Gemini caching, fix OR supports cache issue (#2918) 2025-04-24 09:15:56 -07:00
R00-B0T
9b73965867
Changeset version bump (#2877)
* changeset version bump

* Update CHANGELOG.md

* Update CHANGELOG.md

---------

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: Matt Rubens <mrubens@users.noreply.github.com>
2025-04-24 00:51:24 -04:00
Matt Rubens
2e9b1f1824
v3.14.0 (#2902) 2025-04-24 00:44:24 -04:00
github-actions[bot]
37a8a442ac
Update contributors list (#2871)
docs: update contributors list [skip ci]

Co-authored-by: mrubens <mrubens@users.noreply.github.com>
2025-04-24 00:31:27 -04:00
Yikai Liao
b5ffaf1ba2
Fix Terminal Carriage Return Handling for Correct Progress Bar Display (#2562)
* fix(terminal): Ensure correct handling of carriage returns for progress bars

This commit refines the tests for `TerminalProcess` to ensure the correct interpretation of terminal output containing carriage returns (`\\r`), which is essential for properly handling dynamic elements like progress bars (e.g., `tqdm`).

- Validated the `processCarriageReturns` method's behavior in simulating terminal line overwrites caused by `\\r`.
- Corrected the expectation in the `handles carriage returns in mixed content` test to accurately reflect the method's output (final line content + preserved escape sequences), confirming the logic works as intended for progress-bar-like updates.
- Fixed a minor Jest `toBe` syntax error in a related test case.
- Suppressed an expected `console.warn` in the non-shell-integration test for cleaner logs.

By ensuring `processCarriageReturns` is correctly tested, we increase confidence that the component responsible for pre-processing terminal output handles progress bars appropriately before the output is potentially used elsewhere (e.g., sent to an LLM).

* fix(test): Make TerminalProcess integration test reliable

This commit fixes the flaky test case `integrates with getUnretrievedOutput to handle progress bars` in `TerminalProcess.test.ts`.

The test previously failed intermittently due to:
1.  Relying on a fixed `setTimeout` duration to wait for asynchronous stream processing, which created a race condition.
2.  Incorrectly assuming that `await terminalProcess.run(...)` would return the final output directly via its resolved value.

The fix addresses these issues by:
-   Removing the unreliable intermediate check based on `setTimeout`.
-   Modifying the test to correctly obtain the final output by listening for the `completed` event emitted by `TerminalProcess`, which is the intended way to receive the result.

This ensures the test accurately reflects the behavior of `TerminalProcess` and is no longer prone to timing-related failures.

* Add changeset for terminal carriage return fix

* Implement terminal compress progress bar feature

This commit introduces a new feature to compress terminal output by processing carriage returns. The `processCarriageReturns` function has been integrated into the `Terminal` class to handle progress bar updates effectively, ensuring only the final state is displayed.

Additionally, the `terminalCompressProgressBar` setting has been added to the global settings schema, allowing users to enable or disable this feature.

Tests have been updated to validate the new functionality and ensure correct behavior in various scenarios.

A Benchmark is also added to test the performance.

Not that there is still no i18n support for this.

* Add i18n support for compressProgressBar setting in multiple languages

* Optimize processCarriageReturns function for performance and multi-byte character handling

This commit enhances the `processCarriageReturns` function by implementing in-place string operations to improve performance, especially with large outputs. Key features include:
- Line-by-line processing to maximize chunk handling.
- Use of string indexes and substring operations instead of arrays.
- Single-pass traversal of input for efficiency.
- Special handling for multi-byte characters to prevent corruption during overwrites.

Additionally, tests have been updated to validate the new functionality, ensuring correct behavior with various character sets, including emojis and non-ASCII text.

Highly Density CR case is added to Benchmark

* slight performance improvement by caching several variable

* Optimize multi-byte character handling in processCarriageReturns

Refactor the logic within the `processCarriageReturns` function to simplify the detection of partially overwritten multi-byte characters (e.g., emojis).

Removed redundant checks and clarified the conditions for identifying potential character corruption during carriage return processing. This improves code readability and maintainability while preserving the original functionality of replacing potentially corrupted characters with a space.

Also enforced consistent use of semicolons for improved code style.

* docs: standardize carriage return (\r) and line feed (\n) terminology
Improve code clarity by consistently adding escape sequence notation to all
references of carriage returns and line feeds throughout documentation and tests.
This makes the code more readable and avoids ambiguity when discussing these special characters.

* feat: Improve terminal output processing clarity and settings UI

- Add detailed comments to `processCarriageReturns` explaining line feed handling.
- Relocate `terminalCompressProgressBar` setting below `terminalOutputLineLimit` for better context in UI.

* Fix: Compress Progress Bar Setting Checkbox

---------

Co-authored-by: Matt Rubens <mrubens@users.noreply.github.com>
2025-04-24 00:22:47 -04:00
axb
3b65023d0b
feat(diff): improve progress indicator for apply_diff tool (#2758)
Add animated dots to progress indicator based on content length
Optimize when progress updates are shown (every 10 characters)
Move searchBlockCount calculation inside conditional blocks
Skip unnecessary ask operations when toolProgressStatus is empty
2025-04-24 00:12:07 -04:00
Hannes Rudolph
c228e638b9
Update insert_content tool description for clarity and detail (#2892) 2025-04-23 17:43:36 -04:00
Hannes Rudolph
41db2cad43
Update search_and_replace tool description for clarity and detail (#2891) 2025-04-23 17:42:59 -04:00
Matt Rubens
a53f604e3a
Disable OpenRouter Gemini caching for now (#2890) 2025-04-23 16:46:52 -04:00
Chris Estreich
03925d25b0
Fix code cli flag in evals (#2889) 2025-04-23 13:26:59 -07:00
Chris Estreich
1543713c32
Don't immediately show an model ID error when changing API providers (#2888) 2025-04-23 13:24:22 -07:00
Chris Estreich
2c40224f6f
Fix task size cache TTL (#2887) 2025-04-23 12:20:13 -07:00
Chris Estreich
72962b3c76
Split api and chat message persistence into a separate module (#2866) 2025-04-23 12:09:24 -07:00
Chris Estreich
230e953e5d
Throttle calls to calculate task folder size (#2885) 2025-04-23 11:42:22 -07:00
Chris Estreich
b421636a2c
Properly hide cache section of task header (#2884) 2025-04-23 11:41:06 -07:00
Chris Estreich
a08461a655
Gemini prompt caching (#2827) 2025-04-23 11:35:50 -07:00
Chris Estreich
31d4b656d0
Package material icons in vsix (#2882)
* Package material icons in vsix

* Add changeset
2025-04-23 11:21:35 -07:00
Chris Estreich
a77be28a95
Use formatLargeNumber on token counts in task header (#2883)
* Format large numbers

* Add changeset
2025-04-23 11:16:20 -07:00
Daniel
970ccd7879
feat: add other useful variables to the custom system prompt (#2879) 2025-04-23 13:21:32 -04:00
Dicha Zelianivan Arkana
4606e9a6cc
fix(chat): better loading feedback (#2750)
* fix(chat): better loading feedback

* fix(chat): missing loading aria role

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

* refactor(chat): use vscode loading for more consistency

---------

Co-authored-by: ellipsis-dev[bot] <65095814+ellipsis-dev[bot]@users.noreply.github.com>
2025-04-23 11:57:50 -04:00
Matt Rubens
80912d0919
v13.3.3 (#2876) 2025-04-23 09:47:19 -04:00
Chris Estreich
a9ca17717c
OpenRouter Gemini caching (#2847)
* OpenRouter Gemini caching

* Fix tests

* Remove unsupported models

* Clean up the task header a bit

* Update src/api/providers/openrouter.ts

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

* Remove model that doesn't seem to work

---------

Co-authored-by: ellipsis-dev[bot] <65095814+ellipsis-dev[bot]@users.noreply.github.com>
2025-04-23 09:45:57 -04:00
mlopezr
e53d299acf
Allow Amazon Bedrock Marketplace ARNs (#2874)
* Update validate.ts

Allow ARNs from Bedrock Marketplace, which are different because models are deployed using SageMaker Inference behind the scenes.

* Update bedrock.ts

Allow ARNs from Bedrock Marketplace, which are different because models are deployed using SageMaker Inference behind the scenes.
2025-04-23 09:36:50 -04:00
Dominik Oswald
844753e0d9
Remove unnecessary cost calculation from vscode-lm.ts (#2875)
* feat: Removed unnecessary cost calculation

* Update vscode-lm.ts

---------

Co-authored-by: Matt Rubens <mrubens@users.noreply.github.com>
2025-04-23 09:34:32 -04:00
Wojciech Kordalski
74faacd69d
FakeAI "controller" object must not be copied (#2463)
The FakeAI object passed by the user must be exactly the same object
that is passed to FakeAIHandler via API configuration.
Unfortunatelly, as the VSCode global state is used as configuration
storage, we lose this property (VSCode global state creates copies of
the object). Also the class of the stored object is lost, so methods
of the object are unavailable.

Therefore, we store the original objects in global variable and
use ID field of FakeAI object to identify the original object.
2025-04-23 01:42:06 -07:00
github-actions[bot]
e403a96e66
Update contributors list (#2867)
docs: update contributors list [skip ci]

Co-authored-by: mrubens <mrubens@users.noreply.github.com>
2025-04-23 03:14:08 -04:00
Trung Dang
01a7a66ca0
feat: add injectEnv util, support env ref in mcp config (#2679)
* feat: support environment variables reference in mcp `env` config

* tests(src/utils/config): add test for `injectEnv`

* fix(injectEnv): use `env == null` and `??` check instead of `!env`, `||`

* refactor: remove unnecessary type declare

* chore!: simplify regexp, remove replacement for env vars with dots
2025-04-23 03:13:04 -04:00
Dicha Zelianivan Arkana
3df9eac5b7
fix(mention): conditionally remove aftercursor content (#2732) 2025-04-23 03:09:29 -04:00
hongzio
33ee5d6c34
Fix: focusInput open roo code panel (#2626) (#2817)
* Fix: focusInput open roo code panel (#2626)

* Fix: `roo-cline.focusInput` open roo code panel

* fixup! Fix: focusInput open roo code panel (#2626)
2025-04-23 03:06:48 -04:00
Alfredo Medrano
3a5913ffca
Bugfix/fix vscodellm model information (#2832)
* feat: initialize VS Code Language Model client in constructor

* feat: add VS Code LLM models and configuration

* feat: integrate VS Code LLM models into API configuration normalization

* Fix tests

---------

Co-authored-by: Matt Rubens <mrubens@users.noreply.github.com>
2025-04-23 03:05:47 -04:00
seedlord
c2dd743aeb
Fix: Preserve editor state and prevent tab unpinning during diffs (#2857)
- Maintains editor view column state when closing and reopening files during diff operations, ensuring tabs stay opened in their original position.

- Prevents closing the original editor tab when opening the diff view, preserving pinned status when applying changes via write_to_file or apply_diff.

- Updates VSCode workspace launch flag from -n to -W for compatibility.
2025-04-23 02:45:35 -04:00
Hannes Rudolph
3d129e8a89
fix: allow opening files without workspace root (#1054)
* fix: allow opening files without workspace root

The openFile function in open-file.ts was requiring a workspace root to be present,
which prevented opening global files (like MCP settings) when no workspace was open.
Modified the function to handle absolute paths without this requirement.

Previously, trying to open MCP settings in a new window without a workspace would
error with "Could not open file: No workspace root found". Now the function
properly handles both workspace-relative and absolute paths, allowing global
settings files to be accessed in any context.

Changes:
- Removed workspace root requirement in openFile
- Added fallback for relative paths when no workspace is present

* fix: update openFile function to use provided path without modification

---------

Co-authored-by: Roo Code <support@roo.vet>
Co-authored-by: Matt Rubens <mrubens@users.noreply.github.com>
2025-04-23 02:35:10 -04:00
Daniel
0f64849542
feat: allow variable interpolation into the custom system prompt (#2863)
* feat: allow variable interpolation into the custom system prompt

* fix: allow the test to pass on windows by using the path module
2025-04-23 01:09:14 -04:00
System233
c6f91a3b2f
Fix error message not showing after canceling API request (#2845) 2025-04-22 15:40:33 -04:00
Dicha Zelianivan Arkana
1a376c262e
[DRAFT] feat(menu): use material icons for files and folders (#2739)
feat(menu): use material icons for files and folders
2025-04-22 15:39:45 -04:00
System233
0d561f8a27
Fix redundant 'TASK RESUMPTION' prompts (#2842) 2025-04-22 10:12:29 -04:00
System233
8ac911244c
Fix user feedback not being added to conversation history in API error state (#2844)
Fix user feedback not being added to conversation history in the API error state
2025-04-22 10:10:34 -04:00
Matt Rubens
f1c79759a0
Add line wrapping to MCP arguments (#2831) 2025-04-22 00:15:46 -04:00
Matt Rubens
3e2d20f37c
Search and replace fixes (#2830)
* Allow replacing with an empty string

* Visual cleanup
2025-04-21 22:57:58 -04:00
Matt Rubens
8b5d48013e
Fix MCP hub lookup during view transition (#2829) 2025-04-21 22:39:39 -04:00
github-actions[bot]
b6ea9d1465
Update contributors list (#2803)
docs: update contributors list [skip ci]

Co-authored-by: mrubens <mrubens@users.noreply.github.com>
2025-04-21 21:22:54 -04:00
Matt Rubens
ff5430a95c
Try adding better errors for write_to_file truncated output (#2821) 2025-04-21 21:18:25 -04:00