Commit graph

3332 commits

Author SHA1 Message Date
Roo Code
c16ee0151c fix: track original index in saveImagesToTempStorage to prevent image/path misalignment
When saveImagesToTempStorage skips unsupported image formats (e.g. tiff,
bmp, avif), savedImagePaths becomes shorter than images[]. Using a plain
index to pair paths with data URLs causes misalignment. Now both
saveImagesToTempStorage and saveImagesToFallbackLocation return
{path, originalIndex}[] so the caller can correctly look up the matching
data URL from the original images array.

Adds a test with mixed supported/unsupported formats to verify correct
pairing.
2026-02-06 21:10:59 +00:00
Roo Code
d4c77b63d5 fix: include both file paths and raw base64 data in MCP image responses
Pass both source_path and raw base64 data URLs to the LLM in MCP tool
image responses. This ensures the model can analyze images in the current
turn (via base64 data) while still benefiting from path-based persistence
for future context (via source_path).
2026-02-06 20:46:05 +00:00
Roo Code
f3eaa464fa fix: implement intermediate file persistence for MCP images
- Save MCP tool images to temp storage instead of passing raw base64 to LLM
- Add source_path parameter to save_image tool for copying from temp storage
- This prevents data corruption and reduces token costs significantly
- Images are still stored as data URLs in message.images for UI thumbnails
- Update tests to match new behavior with file paths instead of base64 in text
2026-01-22 11:27:05 +00:00
Roo Code
953f037c7f fix: MCP image preview thumbnails and save_image tool functionality
- Feature 1: Fix image thumbnails not displaying in MCP tool responses
  - Add mcpResponseImages prop to ChatRow to pass images from mcp_server_response
  - Find corresponding mcp_server_response message in ChatView and pass its images
  - McpExecution now receives images from the response message instead of ask message

- Feature 2: Fix save_image tool not receiving image data
  - Include base64 data URLs in MCP tool result text response
  - Agent now receives image data in a format usable with save_image tool
  - Images are wrapped in <image_N> tags for easy parsing

- Update tests to match new behavior
2026-01-22 09:22:53 +00:00
Roo Code
7f1cab989f fix: add i18n translation key and fix security validation path in SaveImageTool 2026-01-22 06:52:52 +00:00
Roo Code
1632659c02 feat: add MCP image preview thumbnails and save_image tool
- Add image thumbnails to McpExecution component (Feature 1)
  - Import Thumbnails component
  - Add images prop to McpExecutionProps interface
  - Render thumbnails when images are present (click to open in VSCode)
  - Pass message.images from ChatRow to McpExecution

- Add save_image tool for agent to save images (Feature 2)
  - Create SaveImageTool.ts with base64 data URL support
  - Add save_image to toolNames in types/tool.ts
  - Add tool definitions in shared/tools.ts
  - Create native tool description in prompts/tools/native-tools
  - Register tool in presentAssistantMessage.ts
  - Add to edit tool group for file write operations

Addresses Issue #10877
2026-01-21 23:02:54 +00:00
Roo Code
bb488fe30f fix: add image content support to MCP tool responses
Fixes #10872

The processToolContent method in UseMcpToolTool.ts now handles image
content types from MCP protocol responses (e.g., Figma's get_screenshot).

Changes:
- Modified processToolContent to return both text and images
- Updated executeToolAndProcessResult to pass images to task.say() and
  pushToolResult()
- Added tests for image handling scenarios
2026-01-21 19:56:46 +00:00
Hannes Rudolph
8de9337e63
chore: remove XML tool calling support (#10841)
Co-authored-by: daniel-lxs <ricciodaniel98@gmail.com>
Co-authored-by: Matt Rubens <mrubens@users.noreply.github.com>
2026-01-20 20:25:08 -05:00
Chris Estreich
04256be956
Git worktree management (#10458)
Co-authored-by: Roo Code <roomote@roocode.com>
Co-authored-by: Hannes Rudolph <hrudolph@gmail.com>
Co-authored-by: daniel-lxs <ricciodaniel98@gmail.com>
2026-01-20 13:39:24 -08:00
Hannes Rudolph
06039400cd
perf(webview): avoid resending taskHistory in state updates (#10842)
Co-authored-by: roomote[bot] <219738659+roomote[bot]@users.noreply.github.com>
2026-01-19 21:22:32 -07:00
Hannes Rudolph
1a1827d806
feat(openai-codex): add ChatGPT subscription usage limits dashboard (#10813) 2026-01-19 11:55:40 -07:00
roomote[bot]
0f08867656
refactor: unify user content tags to <user_message> (#10723)
Co-authored-by: Roo Code <roomote@roocode.com>
2026-01-18 22:04:00 -05:00
roomote[bot]
a148862a06
feat: warn users when too many MCP tools are enabled (#10772)
* feat: warn users when too many MCP tools are enabled

- Add WarningRow component for displaying generic warnings with icon, title, message, and optional docs link
- Add TooManyToolsWarning component that shows when users have more than 40 MCP tools enabled
- Add MAX_MCP_TOOLS_THRESHOLD constant (40)
- Add i18n translations for the warning message
- Integrate warning into ChatView to display after task header
- Add comprehensive tests for both components

Closes ROO-542

* Moves constant to the right place

* Move it to the backend

* i18n

* Add actionlink that takes you to MCP settings in this case

* Add to MCP settings too

* Bump max tools up to 60 since github itself has 50+

* DRY

* Fix test

---------

Co-authored-by: Roo Code <roomote@roocode.com>
Co-authored-by: Bruno Bergher <bruno@roocode.com>
Co-authored-by: Matt Rubens <mrubens@users.noreply.github.com>
2026-01-18 09:22:09 -05:00
github-actions[bot]
719e6cb35b
Changeset version bump (#10823)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: Matt Rubens <mrubens@users.noreply.github.com>
2026-01-18 08:05:06 -05:00
github-actions[bot]
c1f7099698
Changeset version bump (#10790)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: Matt Rubens <mrubens@users.noreply.github.com>
2026-01-16 18:03:24 -05:00
Daniel
95be704ebf
fix(litellm): detect Gemini models with space-separated names for thought signature injection (#10787) 2026-01-16 17:43:51 -05:00
roomote[bot]
c40c882561
fix: add openai-codex to providers that don't require API key (#10786)
Co-authored-by: Roo Code <roomote@roocode.com>
2026-01-16 17:13:50 -05:00
Hannes Rudolph
9533f0be3c
fix(openai-codex): reset invalid model selection (#10777) 2026-01-16 14:55:01 -07:00
Bruno Bergher
9bf7173725
feat: add button to open markdown in VSCode preview (#10773)
Co-authored-by: Roo Code <roomote@roocode.com>
2026-01-16 10:56:19 -05:00
github-actions[bot]
8b9f02aa0d
Changeset version bump (#10768)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: Matt Rubens <mrubens@users.noreply.github.com>
2026-01-16 00:48:45 -05:00
Daniel
ddac338fdd
fix: Gemini thought signature validation errors (#10694)
Co-authored-by: Roo Code <roomote@roocode.com>
2026-01-15 23:25:42 -05:00
Daniel
e34d93e2cb
fix: truncate call_id to 64 chars for OpenAI Responses API (#10763) 2026-01-15 23:09:54 -05:00
Daniel
bbb6a6e4b4
fix: prevent duplicate tool_use IDs causing API 400 errors (#10760) 2026-01-15 23:08:21 -05:00
Daniel
df42655fc9
fix: flatten top-level anyOf/oneOf/allOf in MCP tool schemas (#10726) 2026-01-15 23:05:00 -05:00
Daniel
3a884ee01e
fix: filter out empty text blocks from user messages for Gemini compatibility (#10728) 2026-01-15 23:03:16 -05:00
Daniel
bbf3196837
fix: filter Ollama models without native tool support (#10735) 2026-01-15 23:01:25 -05:00
T
f48ea389df
Feat/issue 5376 aggregate subtask costs (#10757) 2026-01-15 16:44:55 -05:00
Hannes Rudolph
f2b16d400d
fix: handle missing tool identity in OpenAI Native streams (#10719) 2026-01-15 11:42:34 -07:00
github-actions[bot]
5183be22a4
Changeset version bump (#10747)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: Matt Rubens <mrubens@users.noreply.github.com>
2026-01-15 00:44:59 -05:00
Matt Rubens
afc588b8d3
Release v3.41.0 (#10746) 2026-01-15 00:39:13 -05:00
Daniel
d7b7e17a21
fix(litellm): inject dummy thought signatures on ALL tool calls for Gemini (#10743) 2026-01-14 23:49:22 -05:00
Hannes Rudolph
4ebbca08b0
feat: add OpenAI Codex provider with OAuth subscription authentication (#10736)
Co-authored-by: Roo Code <roomote@roocode.com>
2026-01-14 23:48:51 -05:00
Hannes Rudolph
739b91ec40
Clear terminal output buffers to prevent memory leaks (#7666) 2026-01-14 21:24:14 -07:00
github-actions[bot]
d689de34f8
Changeset version bump (#10714)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: Matt Rubens <mrubens@users.noreply.github.com>
2026-01-14 00:00:52 -05:00
Hannes Rudolph
9b1c8500d9
feat(gemini): add allowedFunctionNames support to prevent mode switch errors (#10708)
Co-authored-by: Roo Code <roomote@roocode.com>
2026-01-13 23:49:57 -05:00
github-actions[bot]
d74bad9121
Changeset version bump (#10706)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: Matt Rubens <mrubens@users.noreply.github.com>
2026-01-13 18:35:32 -05:00
Matt Rubens
fdc6104031
chore: add changeset for v3.40.0 (#10705) 2026-01-13 18:24:15 -05:00
Daniel
78821a3951
fix: use placeholder for empty tool result content to fix Gemini API validation (#10672) 2026-01-13 01:39:25 -05:00
Daniel
2d4dba0286
fix: omit parallel_tool_calls when not explicitly enabled (COM-406) (#10671) 2026-01-13 01:37:41 -05:00
Daniel
b514996208
fix(path): return empty string from getReadablePath when path is empty - ROO-437 (#10638) 2026-01-12 18:49:37 -05:00
Daniel
621d9500de
fix: sanitize tool_use IDs to match API validation pattern (#10649) 2026-01-12 18:04:58 -05:00
Patrick Decat
a682908a25
fix: encode hyphens in MCP tool names before sanitization (#10644) 2026-01-12 17:06:40 -05:00
Daniel
f439496147
fix: correct Gemini 3 thought signature injection format via OpenRouter (#10640) 2026-01-12 17:05:00 -05:00
Archimedes
55b732485b
perf: optimize message block cloning in presentAssistantMessage (#10616) 2026-01-12 10:22:50 -08:00
Daniel
4c2d1f0c68
feat: display edit_file errors in UI after consecutive failures (#10581) 2026-01-12 10:35:43 -05:00
github-actions[bot]
611bb70166
Changeset version bump (#10609)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: Matt Rubens <mrubens@users.noreply.github.com>
2026-01-10 13:35:16 -05:00
github-actions[bot]
1e62b5ddf1
Changeset version bump (#10596)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: Matt Rubens <mrubens@users.noreply.github.com>
2026-01-09 21:49:20 -05:00
Hannes Rudolph
5a82c334ae
chore: disable edit_file tool for Gemini/Vertex (#10594) 2026-01-09 21:24:15 -05:00
roomote[bot]
d97e540ac6
fix(cerebras): ensure all tools have consistent strict mode values (#10589)
Co-authored-by: Roo Code <roomote@roocode.com>
2026-01-09 18:50:16 -07:00
Hannes Rudolph
e39abbffa1
fix: make edit_file matching more resilient (#10585) 2026-01-09 20:32:13 -05:00