Commit graph

1352 commits

Author SHA1 Message Date
ItsOnlyBinary
76c6745649
Make ollama models info transport work like lmstudio (#7679) 2025-09-08 22:48:22 -04:00
roomote[bot]
ed765a3e7d
feat(checkpoints): create checkpoint when user sends a message (#7713)
* feat(checkpoints): create checkpoint on user message send

* fix(checkpoints): suppress implicit user-message checkpoint row; keep current checkpoint updated without a chat row

* Fix checkpoint suppression for user messages

- Propagate suppressMessage flag through event chain properly
- Update ChatView to check checkpoint metadata for suppressMessage flag
- Ensure checkpoint messages are created but not rendered when suppressed
- Fix bug where checkpointSave(false) should have been checkpointSave(true)

* fix: only create checkpoint on user message when files have changed

- Changed allowEmpty from true to false in checkpointSave call
- Checkpoints will now only be created when there are actual file changes
- This avoids creating empty commits in the shadow git repository

* test: update checkpoint test to include suppressMessage parameter

- Fixed test expectation to match the new function signature
- saveCheckpoint now expects both allowEmpty and suppressMessage parameters

---------

Co-authored-by: Roo Code <roomote@roocode.com>
Co-authored-by: Hannes Rudolph <hrudolph@gmail.com>
Co-authored-by: Daniel Riccio <ricciodaniel98@gmail.com>
2025-09-05 18:07:59 -04:00
Ton Hoang Nguyen (Bill)
c206da4a26
fix: Tackling Race/State condition issue by Changing the Code Design for Gemini Grounding Sources (#7434)
Co-authored-by: daniel-lxs <ricciodaniel98@gmail.com>
Co-authored-by: Matt Rubens <mrubens@users.noreply.github.com>
2025-09-05 15:03:09 -04:00
NaccOll
1e403a7c92
fix: identify mcp and slash command config path in multiple folder workspace (#6904) 2025-09-05 14:52:48 -04:00
NaccOll
e559ac64bd
Edit/Delete User Message (#7447) 2025-09-05 14:50:18 -04:00
Daniel
de12ec169b
fix: prevent countdown timer from showing in history for answered follow-up questions (#7686) 2025-09-04 23:19:05 -04:00
roomote[bot]
7935c94827
fix: validate MCP tool exists before execution (#7632)
Co-authored-by: Roo Code <roomote@roocode.com>
Co-authored-by: Daniel Riccio <ricciodaniel98@gmail.com>
2025-09-04 17:44:31 -04:00
Thach Nguyen
72502d8f1a
feat: Add DeepInfra as a model provider in Roo Code (#7677) 2025-09-04 17:28:45 -04:00
roomote[bot]
e7f599bfb9
fix: use askApproval wrapper in insert_content and search_and_replace tools (#7649)
Fixes issue where isWriteProtected was incorrectly passed as the partial flag
to task.ask(), causing "Current ask promise was ignored (#1)" error.

Both tools now use the askApproval wrapper function which correctly handles
the parameter ordering, passing undefined for progressStatus and isWriteProtected
as the fourth parameter.

Fixes #7648

Co-authored-by: Roo Code <roomote@roocode.com>
2025-09-03 22:35:40 -04:00
Chris Estreich
c25cfdeaef
Publish token usage metrics (#7637) 2025-09-03 13:51:27 -07:00
Chris Estreich
280b75d2eb
Focus the extension when receiving bridge commands (#7633) 2025-09-03 12:23:50 -07:00
roomote[bot]
d7896924a9
feat: add run_slash_command tool for executing slash commands (#7473)
Co-authored-by: Roo Code <roomote@roocode.com>
Co-authored-by: Matt Rubens <mrubens@users.noreply.github.com>
Co-authored-by: Daniel Riccio <ricciodaniel98@gmail.com>
2025-09-03 14:14:55 -04:00
Chris Estreich
43ff486d42
Publish subtask events (#7626) 2025-09-03 04:05:54 -07:00
Chris Estreich
641c058587
Send custom modes to the extension bridge (#7612) 2025-09-02 23:11:45 -07:00
Chris Estreich
5196c75017
Move message queue to the extension host (#7604)
Co-authored-by: roomote[bot] <219738659+roomote[bot]@users.noreply.github.com>
2025-09-02 19:12:18 -07:00
John Richmond
59d6e74ec0
Cloud: fix provider syncing (#7603)
ClineProvider creation was moved before CloudService which broke
the old way of doing things.
2025-09-02 15:18:21 -07:00
roomote[bot]
f5e0525536
feat: rename Account tab to Cloud tab (#7558)
Co-authored-by: Roo Code <roomote@roocode.com>
Co-authored-by: Matt Rubens <mrubens@users.noreply.github.com>
2025-08-30 18:57:00 -04:00
Daniel
fad219e001
feat: optimize memory usage for image handling in webview (#7556)
* feat: optimize memory usage for image handling in webview

- Replace base64 image data with webview URIs to reduce memory footprint
- Add proper resource roots to webview for workspace file access
- Implement convertToWebviewUri method for safe file-to-URI conversion
- Update ImageViewer to handle both webview URIs and file paths separately
- Add image message type for proper image rendering in chat
- Improve error handling and display for failed image loads
- Add comprehensive tests for ImageViewer component
- Format display paths as relative for better readability

This change significantly reduces memory usage by avoiding base64 encoding
of images and instead using VSCode's webview URI system for direct file
access. Images are now loaded on-demand from disk rather than being held
in memory as base64 strings.

* fix: address PR review comments

- Use safeJsonParse instead of JSON.parse in ChatRow.tsx
- Add type definition for parsed image info
- Add more specific error types in ClineProvider.ts
- Add comprehensive JSDoc comments to ImageBlock.tsx
- Improve error handling and type safety

* fix: address MrUbens' review comments

- Remove hardcoded 'rc1' pattern in formatDisplayPath, use generic workspace detection
- Internationalize 'No image data' text using i18n system

* chore: remove useless comment

* chore(i18n): add image.noData to all locales to fix translation check

* test: update ImageViewer.spec to align with i18n key and flexible path formatting
2025-08-30 15:57:30 -04:00
Chris Estreich
20929b0f16
Mode and provider profile selector (#7545) 2025-08-29 16:48:06 -07:00
Daniel
c3d84d295d
refactor: flatten image generation settings structure (#7536) 2025-08-29 18:35:24 -04:00
roomote[bot]
01458f1646
feat: sync extension bridge settings with cloud (#7535)
- Use CloudService.getUserSettings() for remoteControlEnabled instead of global state
- Update CloudService.updateUserSettings when toggling remote control
- Add BridgeOrchestrator.connectOrDisconnect handling in settings update handler
- Remove dependency on contentProxy/globalSettings for remote control state
---------

Co-authored-by: Roo Code <roomote@roocode.com>
Co-authored-by: John Richmond <5629+jr@users.noreply.github.com>
2025-08-29 11:08:58 -07:00
roomote[bot]
b22a618ee2
feat: add optional input image parameter to image generation tool (#7525)
Co-authored-by: Roo Code <roomote@roocode.com>
Co-authored-by: Daniel Riccio <ricciodaniel98@gmail.com>
2025-08-29 11:08:21 -04:00
Chris Estreich
1d46bd1bbc
Implement deferred task subscriptions (#7517) 2025-08-29 02:43:06 -07:00
Chris Estreich
1e4c46fe6f
Refactor the extension bridge (#7515) 2025-08-29 00:28:38 -07:00
Chris Estreich
cd9e92fa9b
Move @roo-code/cloud to the Roo-Code repo (#7503) 2025-08-28 11:18:45 -07:00
Matt Rubens
bea0684487
Support free imagegen (#7493) 2025-08-28 10:00:01 -04:00
Daniel
2092fb1a50
feat: add image generation tool with OpenRouter integration (#7474)
Co-authored-by: Matt Rubens <mrubens@users.noreply.github.com>
Co-authored-by: cte <cestreich@gmail.com>
2025-08-28 01:57:48 -04:00
Daniel
2204457cc5
Fix GPT-5 Responses API issues with condensing and image support (#7067)
Co-authored-by: ellipsis-dev[bot] <65095814+ellipsis-dev[bot]@users.noreply.github.com>
Co-authored-by: Roo Code <roomote@roocode.com>
Co-authored-by: Hannes Rudolph <hrudolph@gmail.com>
2025-08-27 23:30:43 -04:00
roomote[bot]
d4a16f469c
fix: exclude browser scroll actions from repetition detection (#7471)
- Modified ToolRepetitionDetector to skip repetition detection for browser_action scroll_down and scroll_up actions
- Added isBrowserScrollAction() helper method to identify scroll actions
- Added comprehensive tests for the new behavior
- Fixes issue where multiple scroll actions were incorrectly flagged as being stuck in a loop

Resolves: https://github.com/RooCodeInc/Roo-Code/discussions/7470

Co-authored-by: Roo Code <roomote@roocode.com>
2025-08-27 20:56:36 -04:00
roomote[bot]
3cb489d305
fix: hide .rooignore'd files from environment details by default (#7369)
* fix: change default showRooIgnoredFiles to false to hide ignored files

- Changed default value from true to false across all files
- Updated tests to reflect the new default behavior
- This prevents ignored files from appearing in environment details

Fixes #7368

* fix: update tests to match new showRooIgnoredFiles default

* fix: update test expectation to match new showRooIgnoredFiles default value

The PR changed the default value of showRooIgnoredFiles from true to false,
so the test needs to expect false instead of true when calling formatFilesList.

---------

Co-authored-by: Roo Code <roomote@roocode.com>
Co-authored-by: daniel-lxs <ricciodaniel98@gmail.com>
2025-08-27 18:09:06 -04:00
Matt Rubens
0f6079a3a3
Add type for RooCodeEventName.TaskSpawned (#7465) 2025-08-27 17:40:06 -04:00
Matt Rubens
1ad2129964
Add support for Vercel embeddings (#7445)
Co-authored-by: daniel-lxs <ricciodaniel98@gmail.com>
2025-08-27 13:30:19 -04:00
Daniel
faf5734bdc
feat: show model ID in API configuration dropdown (#7423) 2025-08-27 13:19:30 -04:00
Chris Estreich
f02a2bb05d
Random chat text area cleanup (#7436) 2025-08-26 20:48:24 -07:00
Josh
934bfd0a54
feat: Add Vercel AI Gateway provider integration (#7396)
Co-authored-by: daniel-lxs <ricciodaniel98@gmail.com>
Co-authored-by: cte <cestreich@gmail.com>
2025-08-26 13:41:02 -07:00
Matt Rubens
572fa5080d
Sonic -> Grok Code Fast (#7426) 2025-08-26 16:17:47 -04:00
Matt Rubens
a79c3d04a6
Follow symlinks in rooignore checks (#7405) 2025-08-26 10:12:20 -04:00
Matt Rubens
296edfc829
Mark code-workspace files as protected (#7403) 2025-08-26 00:09:14 -04:00
Matt Rubens
2c82f4c950
Add a built-in /init slash command (#7381)
Co-authored-by: Hannes Rudolph <hrudolph@gmail.com>
2025-08-25 16:53:32 -04:00
Hannes Rudolph
1322e9a981
fix: resolve newTaskRequireTodos setting not working correctly (#7363)
* fix: resolve newTaskRequireTodos setting not working correctly

- Use dynamic Package.name instead of hardcoded namespace values
- Show todos parameter as optional/required based on setting value
- Remove hardcoded new_task example from shared tool use section
- Update tests to use Package.name pattern

The setting now works correctly for both regular and nightly builds
without requiring hardcoded namespace values.

* test: update snapshots after removing hardcoded new_task example

The snapshots needed updating because the hardcoded new_task example
was removed from the shared tool use section

* fix: remove namespace prefix from newTaskRequireTodos setting

The setting name should not include the namespace prefix in package.json
as VSCode automatically adds the extension's namespace. This was preventing
the setting from appearing in the VSCode settings UI.

* fix: restore prefixed setting id roo-cline.newTaskRequireTodos for Settings UI visibility

* docs(newTaskTool): explain dynamic Package.name config namespace\n\ntest(newTaskTool): verify config uses Package.name variant (roo-code-nightly)

* refactor: simplify new-task prompt generation

- Replace complex template literals with two complete prompt constants
- Remove nested ternary operators for better readability
- Hide todos parameter completely when disabled (not shown as optional)
- Update tests to reflect new behavior
- Reduce code from 105 to 66 lines for better maintainability

* test: update snapshots after removing optional todos parameter

The todos parameter is now conditionally required based on the newTaskRequireTodos setting, so the snapshots needed to be updated to reflect the new tool documentation format.

---------

Co-authored-by: daniel-lxs <ricciodaniel98@gmail.com>
2025-08-24 17:33:58 -04:00
Daniel
d175272c76
feat: add custom base URL support for Requesty provider (#7337)
Co-authored-by: ellipsis-dev[bot] <65095814+ellipsis-dev[bot]@users.noreply.github.com>
Co-authored-by: John Costa <john@requesty.ai>
Co-authored-by: Thibault Jaigu <thibault.jaigu@gmail.com>
2025-08-22 13:43:08 -07:00
Hannes Rudolph
7137c1902f
Revert "feat: enable loading Roo modes from multiple files in .roo/roo_modes directory" (#7332)
Revert "feat: enable loading Roo modes from multiple files in .roo/roo_modes …"

This reverts commit faece9e26f.
2025-08-22 11:44:15 -07:00
Daniel
d06d970208
fix: ensure subtask results are provided to GPT-5 in OpenAI Responses API (#7305)
When a subtask completes and the parent task resumes, set skipPrevResponseIdOnce = true
to ensure the next API call sends the full conversation including the subtask result.
This fixes the issue where GPT-5 would only receive the new message without the subtask
result context when using previous_response_id.

Fixes #7251
2025-08-21 20:16:16 -07:00
roomote[bot]
4222036c58
feat: remove assistantMessageParser experiment flag and enable for all users (#7300)
- Remove assistantMessageParser from experiment definitions in packages/types
- Remove ASSISTANT_MESSAGE_PARSER from shared experiments configuration
- Update Task.ts to always initialize and use AssistantMessageParser
- Remove conditional logic that checked for experiment flag
- Remove unused parseAssistantMessage import
- Update test files to remove assistantMessageParser references
- All tests passing successfully

Co-authored-by: Roo Code <roomote@roocode.com>
2025-08-21 15:30:42 -07:00
Daniel
44fd6432dc
refactor: Remove exceptions from RooHandler constructor (#7302) 2025-08-21 14:56:47 -07:00
Hannes Rudolph
4664955127
feat: add optional todos parameter to new_task tool with experimental setting (#6329) (#6775)
* feat: add optional todos parameter to new_task tool with experimental setting (#6329)

- Add optional todos parameter to new_task tool for hierarchical task planning
- Implement experimental setting to optionally require todos parameter
- Add clean state-based UI rendering to avoid spurious messages
- Export and reuse parseMarkdownChecklist function
- Add comprehensive test coverage for both optional and required modes
- Maintain full backward compatibility (todos optional by default)

* fix: update new_task tool example to include todos parameter

- Updated the example in tool-use.ts to show the todos parameter
- This prevents AI confusion about whether todos is a valid parameter
- The example now demonstrates the complete tool usage pattern

* fix: make new_task tool definition dynamic based on experimental setting

- Tool description now changes based on newTaskRequireTodos setting
- When disabled: shows todos as (optional)
- When enabled: shows todos as (required) with no mention of configuration
- Added tests to verify dynamic behavior
- Ensures AI models get unambiguous instructions based on current settings

* fix: add translations for newTaskRequireTodos experimental setting

- Added translations for all 17 supported languages
- Ensures consistent UI experience across all locales

* test: update snapshots for new_task tool example with todos parameter

- Updated 13 snapshot files to reflect the new tool-use example
- All tests now pass with the updated example format

* Update src/core/tools/newTaskTool.ts

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>

* fix: address PR review comments

- Replace any[] with TodoItem[] type in ExtensionStateContext.tsx for better type safety
- Remove redundant initialTodos parameter from startTask call in Task.ts (todos already set in constructor)
- Improve code clarity in newTaskTool.ts by checking provider reference early and reusing state

# Conflicts:
#	src/core/task/Task.ts
#	webview-ui/src/context/ExtensionStateContext.tsx

* fix: revert order of operations in startTask to fix integration test timeout

The change in order of operations (calling say() before postStateToWebview()) was causing the XML content file test to timeout. Reverting to the original order fixes the issue.

* fix: hide todos parameter from new_task tool prompt when experiment is disabled

- Modified getNewTaskDescription to completely omit todos parameter when experiment is off
- Updated tests to verify todos parameter is not shown at all when disabled
- Ensures tool prompt remains unchanged when experimental setting is disabled
- Maintains backward compatibility while providing cleaner prompt interface

* fix: update snapshots for new_task tool todos parameter

- Updated snapshots in add-custom-instructions.spec.ts
- Updated snapshots in system-prompt.spec.ts
- All tests now passing with the new todos parameter documentation

* feat: move newTaskRequireTodos from experimental to VSCode settings

- Added newTaskRequireTodos as a VSCode configuration property in src/package.json
- Added description in src/package.nls.json
- Updated newTaskTool.ts to read from VSCode configuration instead of experiments
- Removed NEW_TASK_REQUIRE_TODOS from experimental settings in src/shared/experiments.ts
- Removed newTaskRequireTodos from packages/types/src/experiment.ts
- Updated tests to use VSCode configuration mocking instead of experiments
- Removed references from experiments test file
- Maintains backward compatibility (defaults to false)

* fix: make new_task tool description dynamically reflect VSCode setting

- Updated new-task.ts to check args.settings instead of args.experiments
- Added newTaskRequireTodos to SystemPromptSettings interface
- Pass newTaskRequireTodos setting through Task.ts and generateSystemPrompt.ts
- Updated all related tests to use settings instead of experiments
- Fixed TypeScript errors in test files by adding newTaskRequireTodos property

This ensures the tool description correctly shows todos parameter as required/optional
based on the VSCode setting value, fixing the issue where Roo would try to use
new_task without the todos parameter when it was required.

---------

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Co-authored-by: Merge Resolver <merge-resolver@roo-code.com>
Co-authored-by: Roo Code <roomote@roocode.com>
2025-08-21 13:02:05 -07:00
Daniel
4216618c72
feat: add MDM authentication notification when navigation is blocked (#7291)
- Show VSCode warning when users under MDM policy try to leave AccountView without auth
- Add showMdmAuthRequiredNotification message type to WebviewMessage interface
- Implement handler in webviewMessageHandler to display localized warning
- Add 'Your organization requires authentication' translation in all 17 languages
- Fix translation key path to use common:mdm.info.organization_requires_auth
2025-08-21 11:12:04 -07:00
Daniel
a5b143bb44
feat: add OpenAI context window error handling (#6967)
* feat: add OpenAI context window error handling

- Add comprehensive context window error detection for OpenAI, OpenRouter, Anthropic, and Cerebras
- Implement automatic retry with aggressive context truncation (25% reduction)
- Use proper profile settings for condensing operations
- Add robust error handling with try-catch blocks

Based on PR #5479 from cline/cline repository

* fix: address PR review comments

- Improved type safety by using Record<string, any> instead of direct any casts
- Enhanced Anthropic error detection with message pattern matching
- Added comprehensive unit tests for context-error-handling module
- Added named constant FORCED_CONTEXT_REDUCTION_PERCENT
- Added MAX_CONTEXT_WINDOW_RETRIES limit to prevent infinite loops
- Added logging for context window exceeded errors
- Extracted getCurrentProfileId helper method to reduce duplication
- All tests passing (3438 tests)

* fix: address PR review comments for context window error handling

- Improve Anthropic error detection with more specific patterns and error codes
- Add comprehensive unit tests for context-error-handling module
- Add logging for context window errors with detailed information
- Fix comment for FORCED_CONTEXT_REDUCTION_PERCENT constant
- Fix TypeScript error for untyped error parameter
- Maintain existing getCurrentProfileId helper method

---------

Co-authored-by: Roo Code <roomote@roocode.com>
2025-08-21 02:20:49 -07:00
roomote[bot]
faece9e26f
feat: enable loading Roo modes from multiple files in .roo/roo_modes directory (#7203)
* feat: enable loading Roo modes from multiple files in .roo/roo_modes directory

- Add support for loading modes from .roo/roo_modes directory (both global and project)
- Implement proper precedence: project .roo/roo_modes > .roomodes > global .roo/roo_modes > settings
- Update file watchers to monitor .roo/roo_modes directories
- Preserve original source file when updating modes
- Add comprehensive tests for the new functionality

Fixes #7202

* refactor: rename .roo/roo_modes to .roo/modes for cleaner directory structure

- Changed ROO_MODES_DIR constant from "roo_modes" to "modes"
- Updated all references in CustomModesManager.ts
- Updated all test descriptions and mocks in CustomModesManager.spec.ts
- All tests passing successfully

* fix: normalize sourceFile paths to use forward slashes in exported YAML

- Fixes Windows test failure where backslashes in sourceFile paths were causing test assertions to fail
- Ensures cross-platform compatibility by normalizing all paths to use forward slashes in YAML exports

---------

Co-authored-by: Roo Code <roomote@roocode.com>
Co-authored-by: daniel-lxs <ricciodaniel98@gmail.com>
2025-08-21 02:12:56 -07:00
Matt Rubens
94fa33bd63
Add announcement for Sonic model (#7244) 2025-08-19 23:02:27 -07:00