- 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
- 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
* 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>
* feat: add debug mode toggle to settings
* Update About component with debug mode description
* i18n: add debug mode strings to settings locales
* Update debug mode description in all locales
* fix: post state to webview after debugSetting update
This addresses the review feedback that the debugSetting handler was not
posting updated state back to the webview, which could cause the UI to
stay stale until another state refresh occurred.
* fix: clarify debug mode description to specify task header location
Updated debugMode.description across all 18 locales to clarify that
debug buttons appear in the task header, per review feedback.
* fix: remove redundant postStateToWebview call after debug setting update
* Update src/core/webview/webviewMessageHandler.ts
Co-authored-by: roomote[bot] <219738659+roomote[bot]@users.noreply.github.com>
---------
Co-authored-by: roomote[bot] <219738659+roomote[bot]@users.noreply.github.com>
The kangaroo logo on the welcome screen had a visual glitch where it would instantly jump to the top position when hovering, instead of smoothly starting the bounce from its resting position.
Changes:
- Added custom smooth-bounce keyframe animation in index.css that explicitly starts from translateY(0)
- Updated RooHero component to use hover state tracking with the new animation
- Removed Tailwind's animate-bounce class which was causing the glitch
The animation now smoothly bounces from the resting position without any jarring visual jumps.
fix: add type check for lastMessage.text before calling startsWith
Fixes#10430
The TTS useEffect was calling .startsWith() on lastMessage.text after only
checking if it was truthy. If text was a non-string truthy value (array,
object, or number), this would crash with "Q.text.startsWith is not a function".
Changed the truthy check to an explicit type check: typeof lastMessage.text === "string"
Co-authored-by: Roo Code <roomote@roocode.com>
Implements grace retry error handling for 'no assistant messages' API
errors, following the same pattern as PR #10196 for 'no tools used'.
- Add consecutiveNoAssistantMessagesCount counter to Task.ts
- First failure: silent retry (grace retry)
- After 2+ consecutive failures: show MODEL_NO_ASSISTANT_MESSAGES error
- Add UI handling in ChatRow.tsx with ErrorRow component
- Add localized strings to all 18 locale files
- Add comprehensive tests for the grace retry behavior