Skip to content

Commit 40712f1

Browse files
mini2sroomote[bot]roomotemrubensdaniel-lxs
authored
Roo to main (#708)
* feat: add Google Tag Manager to marketing website (RooCodeInc#9148) * feat: add Google Tag Manager to marketing website using Next.js Script component * refactor: remove Google Ads implementation in favor of Tag Manager * fix: wrap GTM script in consent-checking client component for GDPR compliance --------- Co-authored-by: Roo Code <[email protected]> * IPC command for sending messages to the current task (RooCodeInc#9149) * fix: prevent command_output ask from blocking in cloud/headless environments (RooCodeInc#9152) * chore: add changeset for v3.31.1 (RooCodeInc#9153) * Release: v1.85.0 (RooCodeInc#9155) * Gate XML out when native tool protocol is ON (RooCodeInc#9107) * Add native tool definitions (RooCodeInc#9156) * feat: sync reviewer landing page copy - variant B to variant A (RooCodeInc#9158) - Updated variant A content to match variant B messaging - Both variants now show the same improved copy focused on catching meaningful bugs - Emphasizes depth over token-saving and repository-aware analysis Co-authored-by: Roo Code <[email protected]> * feat: sync reviewer landing page copy - variant B to variant A (RooCodeInc#9158) - Updated variant A content to match variant B messaging - Both variants now show the same improved copy focused on catching meaningful bugs - Emphasizes depth over token-saving and repository-aware analysis Co-authored-by: Roo Code <[email protected]> * Move auto-approval from `ChatView` to `Task` (RooCodeInc#9157) * feat(i18n): add internationalization for unexpected API response error message * fix(task): use consistent error message for API response failures and ensure message queue is never undefined * test: update vscode mock and improve test coverage * fix: Model switch re-applies selected profile (sync task.apiConfiguration) (RooCodeInc#9179) (RooCodeInc#9181) * Add custom Button component with variant system (RooCodeInc#9150) Co-authored-by: roomote[bot] <219738659+roomote[bot]@users.noreply.github.com> Co-authored-by: Roo Code <[email protected]> * Changeset version bump (RooCodeInc#9154) Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> Co-authored-by: Matt Rubens <[email protected]> * feat(core): detect API configuration changes for model switching * fix: include mcpServers in getState() for auto-approval (RooCodeInc#9199) * fix: replace rate-limited badges with badgen.net (RooCodeInc#9200) * Batch settings updates from the webview to the extension host (RooCodeInc#9165) Co-authored-by: Roo Code <[email protected]> * fix: Apply updated API profile settings when provider/model unchanged (RooCodeInc#9208) (RooCodeInc#9210) fix: apply updated API profile settings when provider/model unchanged (RooCodeInc#9208) * fix: migrate Issue Fixer to REST + ProjectsV2 (RooCodeInc#9207) * fix(issue-fixer): migrate to REST for issue/comments and add ProjectsV2; remove Projects Classic mentions * Update .roo/rules-issue-fixer/4_github_cli_usage.xml Co-authored-by: roomote[bot] <219738659+roomote[bot]@users.noreply.github.com> * Update .roo/rules-issue-fixer/4_github_cli_usage.xml Co-authored-by: roomote[bot] <219738659+roomote[bot]@users.noreply.github.com> --------- Co-authored-by: roomote[bot] <219738659+roomote[bot]@users.noreply.github.com> * Migrate conversation continuity to plugin-side encrypted reasoning items (Responses API) (RooCodeInc#9203) * Migrate conversation continuity to plugin-side encrypted reasoning items (Responses API) Summary We moved continuity off OpenAI servers and now maintain conversation state locally by persisting and replaying encrypted reasoning items. Requests are stateless (store=false) while retaining the performance/caching benefits of the Responses API. Why This aligns with how Roo manages context and simplifies our Responses API implementation while keeping all the benefits of continuity, caching, and latency improvements. What changed - All OpenAI models now use the Responses API; system instructions are passed via the top-level instructions field; requests include store=false and include=["reasoning.encrypted_content"]. - We persist encrypted reasoning items (type: "reasoning", encrypted_content, optional id) into API history and replay them on subsequent turns. - Reasoning summaries default to summary: "auto" when supported; text.verbosity only when supported. - Atomic persistence via safeWriteJson. Removed - previous_response_id flows, suppressPreviousResponseId/skipPrevResponseIdOnce, persistGpt5Metadata(), and GPT‑5 response ID metadata in UI messages. Kept - taskId and mode metadata for cross-provider features. Result - ZDR-friendly, stateless continuity with equal or better performance and a simpler codepath. * fix(webview): remove unused metadata prop from ReasoningBlock render * Responses API: retain response id for troubleshooting (not continuity) Continuity is stateless via encrypted reasoning items that we persist and replay. We now capture the top-level response id in OpenAiNativeHandler and persist the assistant message id into api_conversation_history.json solely for debugging/correlation with provider logs; it is not used for continuity or control flow. Also: silence request-body debug logging to avoid leaking prompts. * remove DEPRECATED tests * chore: remove unused Task types file to satisfy knip CI * fix(task): properly type cleanConversationHistory and createMessage args in Task to address Dan's review * chore: add changeset for v3.31.2 (RooCodeInc#9216) * Changeset version bump (RooCodeInc#9217) Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> Co-authored-by: Matt Rubens <[email protected]> * rename: sliding-window -> context-management; truncateConversationIfNeeded -> manageContext (RooCodeInc#9206) * Fix: Roo Anthropic input token normalization (avoid double-count) (RooCodeInc#9224) * OpenAI Native: gate encrypted_content include; remove gpt-5-chat-latest verbosity flag (fixes RooCodeInc#9225) (RooCodeInc#9231) openai-native: include reasoning.encrypted_content only when reasoningEffort is set; prevent Responses API error on non-reasoning models. types: remove supportsVerbosity from gpt-5-chat-latest to avoid invalid verbosity error. Fixes RooCodeInc#9225 * docs: remove Contributors section from README files (RooCodeInc#9198) Co-authored-by: Roo Code <[email protected]> * Release v3.31.3 (RooCodeInc#9232) * Changeset version bump (RooCodeInc#9233) Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> Co-authored-by: Matt Rubens <[email protected]> * Add native tool call support (RooCodeInc#9159) Co-authored-by: ellipsis-dev[bot] <65095814+ellipsis-dev[bot]@users.noreply.github.com> * Consistently use Package.name for better support of the nightly app (RooCodeInc#9240) * fix: resolve 400 error with native tools on OpenRouter (RooCodeInc#9238) * fix: change tool_choice from required to auto for native protocol (RooCodeInc#9242) * docs: include PR numbers in release guide (RooCodeInc#9236) * Add enum support to configuration schema (RooCodeInc#9247) * refactor(task): switch to <feedback> wrapper to prevent focus drift after context-management event (condense/truncate) (RooCodeInc#9237) * refactor(task): wrap initial user message in <feedback> instead of <task> to prevent focus drift after context-management Rationale: After a successful context-management event, framing the next user block as feedback reduces model focus drift. Mentions parsing already supports <feedback>, and tool flows (attemptCompletion, responses) are aligned. No change to loop/persistence. * refactor(mentions): drop <task> parsing; standardize on <feedback>; update tests * fix: Filter native tools by mode restrictions (RooCodeInc#9246) * fix: filter native tools by mode restrictions Native tools are now filtered based on mode restrictions before being sent to the API, matching the behavior of XML tools. Previously, all native tools were sent to the API regardless of mode, causing the model to attempt using disallowed tools. Changes: - Created filterNativeToolsForMode() and filterMcpToolsForMode() utility functions - Extracted filtering logic from Task.ts into dedicated module - Applied same filtering approach used for XML tools in system prompt - Added comprehensive test coverage (10 tests) Impact: - Model only sees tools allowed by current mode - No more failed tool attempts due to mode restrictions - Consistent behavior between XML and Native protocols - Better UX with appropriate tool suggestions per mode * refactor: eliminate repetitive tool checking using group-based approach - Add getAvailableToolsInGroup() helper to check tools by group instead of individually - Refactor filterNativeToolsForMode() to reuse getToolsForMode() instead of duplicating logic - Simplify capabilities.ts by using group-based checks (60% reduction) - Refactor rules.ts to use group helper (56% reduction) - Remove debug console.log statements - Update tests and snapshots Benefits: - Eliminates code duplication - Leverages existing TOOL_GROUPS structure - More maintainable - new tools in groups work automatically - All tests passing (26/26) * fix: add fallback to default mode when mode config not found Ensures the agent always has functional tools even if: - A custom mode is deleted while tasks still reference it - Mode configuration becomes corrupted - An invalid mode slug is provided Without this fallback, the agent would have zero tools (not even ask_followup_question or attempt_completion), completely breaking it. * Fix broken share button (RooCodeInc#9253) fix(webview-ui): make Share button popover work by forwarding ref in LucideIconButton - Convert LucideIconButton to forwardRef so Radix PopoverTrigger(asChild) receives a focusable element - Enables Share popover and shareCurrentTask flow - Verified with ShareButton/TaskActions Vitest suites * Add GPT-5.1 models and clean up reasoning effort logic (RooCodeInc#9252) * Reasoning effort: capability-driven; add disable/none/minimal; remove GPT-5 minimal special-casing; document UI semantics; remove temporary logs * Remove Unused supportsReasoningNone * Roo reasoning: omit field on 'disable'; UI: do not flip enableReasoningEffort when selecting 'disable' * Update packages/types/src/model.ts Co-authored-by: roomote[bot] <219738659+roomote[bot]@users.noreply.github.com> * Update webview-ui/src/components/settings/SimpleThinkingBudget.tsx Co-authored-by: roomote[bot] <219738659+roomote[bot]@users.noreply.github.com> --------- Co-authored-by: roomote[bot] <219738659+roomote[bot]@users.noreply.github.com> * fix: make line_ranges optional in read_file tool schema (RooCodeInc#9254) The OpenAI tool schema required both 'path' and 'line_ranges' in FileEntry, but the TypeScript type definition marks lineRanges as optional. This caused the AI to fail when trying to read files without specifying line_ranges. Changes: - Updated read_file tool schema to only require 'path' parameter - line_ranges remains available but optional, matching TypeScript types - Aligns with implementation which treats lineRanges as optional throughout Fixes issue where read_file tool kept failing with missing parameters. * fix: prevent consecutive user messages on streaming retry (RooCodeInc#9249) * feat(openai): OpenAI Responses: model-driven prompt caching and generic reasoning options refactor (RooCodeInc#9259) * revert out of scope changes from RooCodeInc#9252 (RooCodeInc#9258) * Revert "refactor(task): switch to <feedback> wrapper to prevent focus drift after context-management event (condense/truncate)" (RooCodeInc#9261) * Release v3.32.0 (RooCodeInc#9264) * Changeset version bump (RooCodeInc#9265) Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> Co-authored-by: Matt Rubens <[email protected]> * [FIX] Fix OpenAI Native handling of encrypted reasoning blocks to prevent error when condensing (RooCodeInc#9263) * fix: prevent duplicate tool_result blocks in native protocol mode for read_file (RooCodeInc#9272) When read_file encountered errors (e.g., file not found), it would call handleError() which internally calls pushToolResult(), then continue to call pushToolResult() again with the final XML. In native protocol mode, this created two tool_result blocks with the same tool_call_id, causing 400 errors on subsequent API calls. This fix replaces handleError() with task.say() for error notifications. The agent still receives error details through the XML in the single final pushToolResult() call. This change works for both protocols: - Native: Only one tool_result per tool_call_id (fixes duplicate issue) - XML: Only one text block with complete XML (cleaner than before) Agent visibility preserved: Errors are included in the XML response sent to the agent via pushToolResult(). Tests: All 44 tests passing. Updated test to verify say() is called. * Fix duplicate tool blocks causing 'tool has already been used' error (RooCodeInc#9275) * feat(openai-native): add abort controller for request cancellation (RooCodeInc#9276) * Disable XML parser for native tool protocol (RooCodeInc#9277) * Release v3.32.1 (RooCodeInc#9278) * Changeset version bump (RooCodeInc#9280) Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> Co-authored-by: Matt Rubens <[email protected]> * refactor: centralize toolProtocol configuration checks (RooCodeInc#9279) * refactor: centralize toolProtocol configuration checks - Created src/utils/toolProtocol.ts with getToolProtocolFromSettings() utility - Replaced all direct vscode.workspace.getConfiguration() calls with centralized utility - Updated 6 files to use the new utility function - All tests pass and TypeScript compilation succeeds * refactor: use isNativeProtocol function from types package * fix: format tool responses for native protocol (RooCodeInc#9270) * fix: format tool responses for native protocol - Add toolResultFormatting utilities for protocol detection - ReadFileTool now builds both XML and native formats - Native format returns clean, readable text without XML tags - Legacy conversation history conversion is protocol-aware - All tests passing (55 total) * refactor: use isNativeProtocol from @roo-code/types Remove duplicate implementation and import from types package instead * fix: prevent duplicate tool_result blocks in native tool protocol (RooCodeInc#9248) * Merge remote-tracking branch 'upstream/main' into roo-to-main * Fix duplicate import (RooCodeInc#9281) * chore(core): remove unused TelemetryEventName import * feat: implement dynamic tool protocol resolution with proper precedence hierarchy (RooCodeInc#9286) Co-authored-by: Roo Code <[email protected]> * web: Roo Code Cloud Provider pricing page and changes elsewhere (RooCodeInc#9195) Co-authored-by: roomote[bot] <219738659+roomote[bot]@users.noreply.github.com> Co-authored-by: ellipsis-dev[bot] <65095814+ellipsis-dev[bot]@users.noreply.github.com> Co-authored-by: Matt Rubens <[email protected]> * feat(zgsm): add abort signal handling for streaming responses * Move the native tool call toggle to experimental settings (RooCodeInc#9297) Co-authored-by: ellipsis-dev[bot] <65095814+ellipsis-dev[bot]@users.noreply.github.com> Co-authored-by: daniel-lxs <[email protected]> * fix: Replace broken badgen.net badges with shields.io (RooCodeInc#9318) Co-authored-by: Roo Code <[email protected]> * fix: preserve tool blocks for native protocol in conversation history (RooCodeInc#9319) * feat: add git status to environment details (RooCodeInc#9310) * feat: Move Import/Export to Modes view toolbar (RooCodeInc#8686) Cleanup of Mode Edit view (RooCodeInc#9077) * Add max git status files to evals settings (RooCodeInc#9322) * Release: v1.86.0 (RooCodeInc#9323) * fix: prevent infinite loop when attempt_completion succeeds (RooCodeInc#9325) * feat: add tool protocol selector to advanced settings (RooCodeInc#9324) Co-authored-by: Roo Code <[email protected]> Co-authored-by: Matt Rubens <[email protected]> * Remove experimental setting for native tool calls (RooCodeInc#9333) * Fix the type of the list files recursive parameter (RooCodeInc#9337) * fix: use VSCode theme color for outline button borders (RooCodeInc#9336) Co-authored-by: Roo Code <[email protected]> Co-authored-by: Bruno Bergher <[email protected]> * feat: update cloud agent CTA to point to setup page (RooCodeInc#9338) Co-authored-by: Roo Code <[email protected]> * Improve Google Gemini defaults, temperature, and cost reporting (RooCodeInc#9327) * fix: sync parser state with profile/model changes (RooCodeInc#9355) * feat: enable native tool calling for openai-native provider (RooCodeInc#9348) Co-authored-by: daniel-lxs <[email protected]> * Add Gemini 3 Pro Preview model (RooCodeInc#9357) * fix: pass tool protocol parameter to lineCountTruncationError (RooCodeInc#9358) * Remove the Roo model defaults (RooCodeInc#9340) * chore: add changeset and announcement for v3.33.0 (RooCodeInc#9360) * Changeset version bump (RooCodeInc#9362) Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> Co-authored-by: Matt Rubens <[email protected]> * fix: resolve native tool protocol race condition causing 400 errors (RooCodeInc#9363) * Retry eval tasks if API instability detected (RooCodeInc#9365) * fix: exclude XML tool examples from MODES section when native protocol enabled (RooCodeInc#9367) * Add native tool calling support to OpenAI-compatible (RooCodeInc#9369) * Add native tool calling support to OpenAI-compatible * Fix OpenAI strict mode schema validation by adding converter methods to BaseProvider - Add convertToolsForOpenAI() and convertToolSchemaForOpenAI() methods to BaseProvider - These methods ensure all properties are in required array and convert nullable types - Remove line_ranges from required array in read_file tool (converter handles it) - Update OpenAiHandler and BaseOpenAiCompatibleProvider to use helper methods - Eliminates code duplication across multiple tool usage sites - Fixes: OpenAI completion error: 400 Invalid schema for function 'read_file' --------- Co-authored-by: daniel-lxs <[email protected]> * fix: ensure no XML parsing when protocol is native (RooCodeInc#9371) * fix: ensure no XML parsing when protocol is native * refactor: remove redundant non-null assertions * fix: gemini maxOutputTokens and reasoning config (RooCodeInc#9375) * fix: gemini maxOutputTokens and reasoning config * test: tighten gemini reasoning typings * fix: Update tools to return structured JSON for native protocol (RooCodeInc#9373) * feat: add toolProtocol property to PostHog tool usage telemetry (RooCodeInc#9374) Co-authored-by: Roo Code <[email protected]> Co-authored-by: Matt Rubens <[email protected]> Co-authored-by: daniel-lxs <[email protected]> * fix: Include nativeArgs in tool repetition detection (RooCodeInc#9377) * fix: Include nativeArgs in tool repetition detection Fixes false positive 'stuck in a loop' error for native protocol tools like read_file that store parameters in nativeArgs instead of params. Previously, the ToolRepetitionDetector only compared the params object, which was empty for native protocol tools. This caused all read_file calls to appear identical, triggering false loop detection even when reading different files. Changes: - Updated serializeToolUse() to include nativeArgs in comparison - Added comprehensive tests for native protocol scenarios - Maintains backward compatibility with XML protocol tools Closes: Issue reported in Discord about read_file loop detection * Try to use safe-stable-stringify in the tool repetition detector --------- Co-authored-by: Matt Rubens <[email protected]> * Fix Gemini thought signature validation and token counting errors (RooCodeInc#9380) Co-authored-by: Matt Rubens <[email protected]> * Release v3.33.1 (RooCodeInc#9383) * Changeset version bump (RooCodeInc#9384) Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> Co-authored-by: Matt Rubens <[email protected]> * fix: preserve user images in native tool call results (RooCodeInc#9401) * feat: migrate PostHog client to ph.roocode.com (RooCodeInc#9402) Co-authored-by: Roo Code <[email protected]> Co-authored-by: Matt Rubens <[email protected]> * feat: enable native tool calling for gemini provider (RooCodeInc#9343) Co-authored-by: daniel-lxs <[email protected]> * Add a RCC credit balance display (RooCodeInc#9386) * Add a RCC credit balance display * Replace the provider docs with the balance when logged in * PR feedback --------- Co-authored-by: Matt Rubens <[email protected]> * perf: reduce excessive getModel() calls & implement disk cache fallback (RooCodeInc#9410) * Show zero price for free models (RooCodeInc#9419) * Release v3.33.2 (RooCodeInc#9420) * Changeset version bump (RooCodeInc#9421) Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> Co-authored-by: Matt Rubens <[email protected]> * Improve read_file tool description with examples (RooCodeInc#9422) * Improve read_file tool description with examples - Add explicit JSON structure documentation - Include three concrete examples (single file, with line ranges, multiple files) - Clarify that 'path' is required and 'line_ranges' is optional - Better explain line range format (1-based inclusive) This addresses agent confusion by providing clear examples similar to the XML tool definition. * Make read_file tool dynamic based on partialReadsEnabled setting - Convert read_file from static export to createReadFileTool() factory function - Add getNativeTools() function that accepts partialReadsEnabled parameter - Create buildNativeToolsArray() helper to encapsulate tool building logic - Update Task.ts to build native tools dynamically using maxReadFileLine setting - When partialReadsEnabled is false, line_ranges parameter is excluded from schema - Examples and descriptions adjust based on whether line ranges are supported This matches the behavior of the XML tool definition which dynamically adjusts its documentation based on settings, reducing confusion for agents. * Fix Marketplace crash by removing wildcard activation event (RooCodeInc#9423) * Revert "Fix Marketplace crash by removing wildcard activation event" (RooCodeInc#9432) * Fix OpenAI Native parallel tool calls for native protocol (RooCodeInc#9433) Fixes an issue where using the OpenAI Native provider together with Native Tool Calling could cause OpenAI’s Responses API to fail with errors like: * feat: add Google Gemini 3 Pro Image Preview to image generation models (RooCodeInc#9440) Co-authored-by: Roo Code <[email protected]> Co-authored-by: Matt Rubens <[email protected]> * fix: prevent duplicate environment_details when resuming cancelled tasks (RooCodeInc#9442) - Filter out complete environment_details blocks before appending fresh ones - Check for both opening and closing tags to ensure we're matching complete blocks - Prevents stale environment data from being kept during task resume - Add tests to verify deduplication logic and edge cases * Update glob to ^11.1.0 (RooCodeInc#9449) * chore: update tar-fs to 3.1.1 via pnpm override (RooCodeInc#9450) Co-authored-by: Roo Code <[email protected]> * Store reasoning in conversation history for all providers (RooCodeInc#9451) * Fix preserveReasoning flag to control API reasoning inclusion (RooCodeInc#9453) * feat: store reasoning in conversation history for all providers * refactor: address review feedback - Move comments inside else block - Combine reasoning checks into single if block - Make comments more concise * refactor: make comments more concise * Fix preserveReasoning flag to control API reasoning inclusion Changes: 1. Removed hardcoded <think> tag logic in streaming - Previously hardcoded reasoning into assistant message text - Now passes reasoning to addToApiConversationHistory as parameter 2. Updated buildCleanConversationHistory to respect preserveReasoning flag - When preserveReasoning: true → reasoning block included in API requests - When preserveReasoning: false/undefined → reasoning stripped from API - Reasoning stored in history for all cases 3. Added temporary debug logs to base-openai-compatible-provider.ts - Shows preserveReasoning flag value - Logs reasoning blocks in incoming messages - Logs <think> tags in converted messages sent to API * Fix: Use api.getModel() directly instead of cachedStreamingModel Addresses review comment: cachedStreamingModel is set during streaming but buildCleanConversationHistory is called before streaming starts. Using the cached value could cause stale model info when switching models between requests. Now directly uses this.api.getModel().info.preserveReasoning to ensure we always check the current model's flag, not a potentially stale cached value. * Clean up comments in Task.ts Removed outdated comment regarding model's preserveReasoning flag. * fix: remove unnecessary reasoningBlock variable in task reasoning logic * fix: send tool_result blocks for skipped tools in native protocol (RooCodeInc#9457) * fix: improve markdown formatting and add reasoning support (RooCodeInc#9458) * feat: implement Minimax as Anthropic-compatible provider (RooCodeInc#9455) * fix: improve search and replace symbol parsing (RooCodeInc#9456) * chore: add changeset for v3.33.3 (RooCodeInc#9459) * Changeset version bump (RooCodeInc#9460) Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> Co-authored-by: Matt Rubens <[email protected]> * feat(terminal): add inline shell integration with user input support * Release: v1.87.0 (RooCodeInc#9477) * refactor(terminal): remove inline shell integration callback and improve terminal process handling * fix: add fallback to yield tool calls regardless of finish_reason (RooCodeInc#9476) * Improvements to base openai compatible (RooCodeInc#9462) Co-authored-by: Roo Code <[email protected]> * Browser Use 2.0 (RooCodeInc#8941) Co-authored-by: roomote[bot] <219738659+roomote[bot]@users.noreply.github.com> Co-authored-by: daniel-lxs <[email protected]> * fix: resolve apply_diff performance regression from PR RooCodeInc#9456 (RooCodeInc#9474) * fix: implement model cache refresh to prevent stale disk cache (RooCodeInc#9478) * fix: Make cancel button immediately responsive during streaming (RooCodeInc#9448) * Test a provider-oriented welcome screen (RooCodeInc#9484) Co-authored-by: roomote[bot] <219738659+roomote[bot]@users.noreply.github.com> * (feat): Add Baseten Provider (RooCodeInc#9461) Co-authored-by: roomote[bot] <219738659+roomote[bot]@users.noreply.github.com> Co-authored-by: AlexKer <[email protected]> Co-authored-by: Matt Rubens <[email protected]> * fix: copy model-level capabilities to OpenRouter endpoint models (RooCodeInc#9483) * Pin the Roo provider to the top of the list (RooCodeInc#9485) * Wait to experiment until state is hydrated (RooCodeInc#9488) * Change baseten default model to glm for now (RooCodeInc#9489) * Revert "Wait to experiment until state is hydrated" (RooCodeInc#9491) * Try to fix build (RooCodeInc#9490) * Update webview-ui Vite config (RooCodeInc#9493) * Enhance native tool descriptions with examples and clarifications (RooCodeInc#9486) * Revert "Revert "Wait to experiment until state is hydrated"" (RooCodeInc#9494) * chore: add changeset and announcement for v3.34.0 (RooCodeInc#9495) * Changeset version bump (RooCodeInc#9496) Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> Co-authored-by: Matt Rubens <[email protected]> * Enable the Roo Code Cloud provider in evals (RooCodeInc#9492) * Show the prompt for image gen (RooCodeInc#9505) * feat(chat): conditionally render UpdateTodoListToolBlock based on alwaysAllowUpdateTodoList flag * fix(web-evals): update checkbox handler in new-run component * Remove double todo list (RooCodeInc#9517) * Track cloud synced messages (RooCodeInc#9518) * 3.34.1 (RooCodeInc#9522) * Changeset version bump (RooCodeInc#9523) Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> Co-authored-by: Matt Rubens <[email protected]> * fix: support reasoning_details format for Gemini 3 models (RooCodeInc#9506) * feat: update Cerebras models (RooCodeInc#9527) Co-authored-by: Roo Code <[email protected]> * fix: ensure XML parser state matches tool protocol on config update (RooCodeInc#9535) * fix: flush LiteLLM cache when credentials change on refresh (RooCodeInc#9536) * Add Roo Code Cloud as an imagegen provider (RooCodeInc#9528) * fix: gracefully skip unsupported content blocks in Gemini transformer (RooCodeInc#9537) Co-authored-by: Matt Rubens <[email protected]> * feat: add claude-opus-4.5 to OpenRouter prompt caching and reasoning budget models (RooCodeInc#9540) * feat: add claude-opus-4.5 to Anthropic and Vertex providers (RooCodeInc#9541) * Release v3.34.2 (RooCodeInc#9545) * Changeset version bump (RooCodeInc#9546) Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> Co-authored-by: Matt Rubens <[email protected]> * Add support for Roo Code Cloud as an embeddings provider (RooCodeInc#9543) * Switch from asdf to mise-en-place in bare-metal evals setup script (RooCodeInc#9548) * feat: implement streaming for native tool calls (RooCodeInc#9542) * Add Opus 4.5 to Claude Code provider (RooCodeInc#9560) * Fix ask_followup_question streaming issue and add missing tool cases (RooCodeInc#9561) * feat(auth): enhance login status logging and use dynamic plugin version * refactor: remove disable provider and add client id headers * test(webview): remove disable provider tests across multiple test files * fix: enable caching for Opus 4.5 model (RooCodeInc#9568) Added claude-opus-4-5-20251101 to the cache control switch statements to enable prompt caching, matching the behavior of other Claude models. Fixes RooCodeInc#9567 Co-authored-by: Roo Code <[email protected]> * feat: Add contact links to About Roo Code settings page (RooCodeInc#9570) * feat: add contact links to About settings page * Tweaks * i18n * Update webview-ui/src/components/settings/__tests__/About.spec.tsx Co-authored-by: roomote[bot] <219738659+roomote[bot]@users.noreply.github.com> --------- Co-authored-by: Roo Code <[email protected]> Co-authored-by: Bruno Bergher <[email protected]> Co-authored-by: roomote[bot] <219738659+roomote[bot]@users.noreply.github.com> * feat: add Claude Opus 4.5 model to Bedrock provider (RooCodeInc#9572) Co-authored-by: Roo Code <[email protected]> Co-authored-by: Matt Rubens <[email protected]> * chore: add changeset for v3.34.3 (RooCodeInc#9578) * Changeset version bump (RooCodeInc#9579) Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> Co-authored-by: Matt Rubens <[email protected]> * fix: preserve dynamic MCP tool names in native mode API history (RooCodeInc#9559) * fix: preserve tool_use blocks in summary message during condensing with native tools (RooCodeInc#9582) * Add support for images api (RooCodeInc#9587) * Make it clear that BFL Flux 2 is free (RooCodeInc#9588) * Add BFL models to openrouter (RooCodeInc#9589) * chore: add changeset for v3.34.4 (RooCodeInc#9590) * Changeset version bump (RooCodeInc#9591) Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> Co-authored-by: Matt Rubens <[email protected]> * feat: set native tools as default for minimax-m2 and claude-haiku-4.5 (RooCodeInc#9586) * feat: enable multiple native tool calls per turn with failure guardrails (RooCodeInc#9273) * feat: add Bedrock Opus 4.5 to global inference model list (RooCodeInc#9595) Co-authored-by: Roo Code <[email protected]> * fix: update API handler when toolProtocol changes (RooCodeInc#9599) * Make single file read only apply to xml tools (RooCodeInc#9600) * Revert "Add support for Roo Code Cloud as an embeddings provider" (RooCodeInc#9602) * feat(web-evals): enhance dashboard with dynamic tool columns and UX improvements (RooCodeInc#9592) Co-authored-by: Roo Code <[email protected]> * fix(webview): pass taskId to finishSubTask when canceling or deleting tasks * chore: add changeset for v3.34.5 (RooCodeInc#9603) * Changeset version bump (RooCodeInc#9604) Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> Co-authored-by: Matt Rubens <[email protected]> * Feature/bedrock embeddings support (RooCodeInc#9475) * feat: add AWS Bedrock support for codebase indexing - Add bedrock as a new EmbedderProvider type - Add AWS Bedrock embedding model profiles (titan-embed-text models) - Create BedrockEmbedder class with support for Titan and Cohere models - Add Bedrock configuration support to config manager and interfaces - Update service factory to create BedrockEmbedder instances - Add comprehensive tests for BedrockEmbedder - Add localization strings for Bedrock support Closes RooCodeInc#8658 * fix: add missing bedrockOptions to loadConfiguration return type * Fix various issues that the original PR missed. * Remove debug logs * Rename AWS Bedrock -> Amazon Bedrock * Remove some 'as any's * Revert README changes * Add translations * More translations * Remove leftover code from a debugging session. * fix: add bedrock to codebaseIndexModelsSchema and update brace-expansion override - Add bedrock provider to codebaseIndexModelsSchema type definition to fix empty model dropdown in UI - Update pnpm override for brace-expansion from '>=2.0.2' to '^2.0.2' to resolve ESM/CommonJS compatibility issues * Improvements to AWS Bedrock embeddings support - Enhanced bedrock.ts embedder implementation - Added comprehensive test coverage in bedrock.spec.ts - Updated config-manager.ts for better Bedrock configuration handling - Improved service-factory.ts integration - Updated embeddingModels.ts with Bedrock models - Enhanced CodeIndexPopover.tsx UI for Bedrock options - Added auto-populate test for CodeIndexPopover - Updated pnpm-lock.yaml dependencies * Restore openrouter config * Remove debug log * Fix config-manager.spec.ts unit test. * Add translations for "optional" * Revert unnecessary change related to open ia embedder --------- Co-authored-by: Roo Code <[email protected]> Co-authored-by: Matt Rubens <[email protected]> Co-authored-by: Smartsheet-JB-Brown <[email protected]> --------- Co-authored-by: roomote[bot] <219738659+roomote[bot]@users.noreply.github.com> Co-authored-by: Roo Code <[email protected]> Co-authored-by: Matt Rubens <[email protected]> Co-authored-by: Daniel <[email protected]> Co-authored-by: Chris Estreich <[email protected]> Co-authored-by: Hannes Rudolph <[email protected]> Co-authored-by: Bruno Bergher <[email protected]> Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> Co-authored-by: ellipsis-dev[bot] <65095814+ellipsis-dev[bot]@users.noreply.github.com> Co-authored-by: daniel-lxs <[email protected]> Co-authored-by: John Richmond <[email protected]> Co-authored-by: Alex Ker <[email protected]> Co-authored-by: AlexKer <[email protected]> Co-authored-by: Seb Duerr <[email protected]> Co-authored-by: George Goranov <[email protected]> Co-authored-by: Smartsheet-JB-Brown <[email protected]>
1 parent a4bcd1d commit 40712f1

File tree

27 files changed

+1608
-55
lines changed

27 files changed

+1608
-55
lines changed

.github/ISSUE_TEMPLATE/bug_report.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -77,7 +77,7 @@ body:
7777
options:
7878
- CoStrict
7979
- Anthropic
80-
- AWS Bedrock
80+
- Amazon Bedrock
8181
- Chutes AI
8282
- DeepSeek
8383
- Featherless AI

.roo/rules-translate/instructions-zh-cn.md

Lines changed: 1 addition & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -31,27 +31,23 @@
3131
## Formatting Rules
3232

3333
1. **中英文混排**
34-
3534
- 添加空格:在中文和英文/数字之间添加空格,如"API 费用"(不是"API费用")
3635
- 单位格式:时间单位统一为"15秒"、"1分钟"(不是"15 seconds"、"1 minute")
3736
- 数字范围:"已使用: {{used}} / {{total}}"
3837
- 技术符号保留原样:"{{amount}} tokens"→"{{amount}}"
3938

4039
2. **标点符号**
41-
4240
- 使用中文全角标点
4341
- 列表项使用中文顿号:"创建、编辑文件"
4442

4543
3. **UI文本优化**
46-
4744
- 按钮文本:使用简洁动词,如"展开"优于"查看更多"
4845
- 操作说明:使用步骤式说明(1. 2. 3.)替代长段落
4946
- 错误提示:使用"确认删除?此操作不可逆"替代"Are you sure...?"
5047
- 操作说明要简洁:"Shift+拖拽文件"优于长描述
5148
- 按钮文本控制在2-4个汉字:"展开"优于"查看更多"
5249

5350
4. **技术描述**
54-
5551
- 保留英文缩写:如"MCP"不翻译
5652
- 统一术语:整个系统中相同概念使用相同译法
5753
- 长句拆分为短句
@@ -66,26 +62,22 @@
6662
## UI Element Translation Standards
6763

6864
1. **按钮(Buttons)**
69-
7065
- 确认类:确定/取消/应用/保存
7166
- 操作类:添加/删除/编辑/导出
7267
- 状态类:启用/禁用/展开/收起
7368
- 长度限制:2-4个汉字
7469

7570
2. **菜单(Menus)**
76-
7771
- 主菜单:文件/编辑/视图/帮助
7872
- 子菜单:使用">"连接,如"文件>打开"
7973
- 快捷键:保留英文,如"Ctrl+S"
8074

8175
3. **标签(Labels)**
82-
8376
- 设置项:描述功能,如"自动保存间隔"
8477
- 状态提示:简洁明确,如"正在处理..."
8578
- 单位说明:放在括号内,如"超时时间(秒)"
8679

8780
4. **工具提示(Tooltips)**
88-
8981
- 功能说明:简洁描述,如"复制选中内容"
9082
- 操作指引:步骤明确,如"双击编辑单元格"
9183
- 长度限制:不超过50个汉字
@@ -98,24 +90,21 @@
9890
## Contextual Translation Principles
9991

10092
1. **根据UI位置调整**
101-
10293
- 按钮文本:简洁动词 (如"展开", "收起")
10394
- 设置项:描述性 (如"自动批准写入操作")
10495
- 帮助文本:完整说明 (如"开启后自动创建任务存档点,方便回溯修改")
10596

10697
2. **技术文档风格**
107-
10898
- 使用主动语态:如"自动创建和编辑文件"
10999
- 避免口语化表达
110100
- 复杂功能使用分点说明
111101
- 说明操作结果:如"无需二次确认"
112102
- 参数说明清晰:如"延迟一段时间再自动批准写入"
113103

114104
3. **品牌/产品名称**
115-
116105
- 保留英文品牌名
117106
- 技术术语保持一致性
118-
- 保留英文专有名词:如"AWS Bedrock ARN"
107+
- 保留英文专有名词:如"Amazon Bedrock ARN"
119108

120109
4. **用户操作**
121110
- 操作动词统一:
@@ -129,13 +118,11 @@
129118
## Technical Documentation Guidelines
130119

131120
1. **技术术语**
132-
133121
- 统一使用"Token"而非"令牌"
134122
- 保留英文专有名词:如"Model Context Protocol"
135123
- 功能名称统一:如"计算机功能调用"优于"计算机使用"
136124

137125
2. **API文档**
138-
139126
- 端点(Endpoint):保留原始路径
140127
- 参数说明:表格形式展示
141128
- 示例:保留代码格式
@@ -144,7 +131,6 @@
144131
- 范围说明完整:如"模型可以处理的总 Token 数"
145132

146133
3. **代码相关翻译**
147-
148134
- 代码注释:
149135
- 保留技术术语:如"// Initialize MCP client"
150136
- 简短说明:如"检查文件是否存在"
@@ -206,27 +192,22 @@
206192
## Common Pitfalls
207193

208194
1. 避免过度直译导致生硬
209-
210195
- ✗ "Do more with Boomerang Tasks" → "使用回旋镖任务完成更多工作"
211196
- ✓ "Do more with Boomerang Tasks" → "允许任务拆分"
212197

213198
2. 保持功能描述准确
214-
215199
- ✗ "Enhance prompt with additional context" → "使用附加上下文增强提示"
216200
- ✓ "Enhance prompt with additional context" → "增强提示词"
217201

218202
3. 操作指引清晰
219-
220203
- ✗ "hold shift to drag in files" → "按住shift拖动文件"
221204
- ✓ "hold shift to drag in files" → "Shift+拖拽文件"
222205

223206
4. 确保术语一致性
224-
225207
- ✗ 同一文档中混用"Token"/"令牌"/"代币"
226208
- ✓ 统一使用"Token"作为技术术语
227209

228210
5. 注意文化适应性
229-
230211
- ✗ "Kill the process" → "杀死进程"(过于暴力)
231212
- ✓ "Kill the process" → "终止进程"
232213

@@ -241,21 +222,18 @@
241222
## Best Practices
242223

243224
1. **翻译工作流程**
244-
245225
- 通读全文理解上下文
246226
- 标记并统一技术术语
247227
- 分段翻译并检查一致性
248228
- 最终整体审校
249229

250230
2. **质量检查要点**
251-
252231
- 术语一致性
253232
- 功能描述准确性
254233
- UI元素长度适配性
255234
- 文化适应性
256235

257236
3. **工具使用建议**
258-
259237
- 建立项目术语库
260238
- 使用翻译记忆工具
261239
- 维护风格指南

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -58,7 +58,7 @@
5858
"tar-fs": ">=3.1.1",
5959
"esbuild": ">=0.25.0",
6060
"undici": ">=5.29.0",
61-
"brace-expansion": ">=2.0.2",
61+
"brace-expansion": "^2.0.2",
6262
"form-data": ">=4.0.4",
6363
"bluebird": ">=3.7.2",
6464
"glob": ">=11.1.0"

packages/types/src/codebase-index.ts

Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,16 @@ export const codebaseIndexConfigSchema = z.object({
2222
codebaseIndexEnabled: z.boolean().optional(),
2323
codebaseIndexQdrantUrl: z.string().optional(),
2424
codebaseIndexEmbedderProvider: z
25-
.enum(["openai", "ollama", "openai-compatible", "gemini", "mistral", "vercel-ai-gateway", "openrouter"])
25+
.enum([
26+
"openai",
27+
"ollama",
28+
"openai-compatible",
29+
"gemini",
30+
"mistral",
31+
"vercel-ai-gateway",
32+
"bedrock",
33+
"openrouter",
34+
])
2635
.optional(),
2736
codebaseIndexEmbedderBaseUrl: z.string().optional(),
2837
codebaseIndexEmbedderModelId: z.string().optional(),
@@ -36,6 +45,9 @@ export const codebaseIndexConfigSchema = z.object({
3645
// OpenAI Compatible specific fields
3746
codebaseIndexOpenAiCompatibleBaseUrl: z.string().optional(),
3847
codebaseIndexOpenAiCompatibleModelDimension: z.number().optional(),
48+
// Bedrock specific fields
49+
codebaseIndexBedrockRegion: z.string().optional(),
50+
codebaseIndexBedrockProfile: z.string().optional(),
3951
})
4052

4153
export type CodebaseIndexConfig = z.infer<typeof codebaseIndexConfigSchema>
@@ -52,6 +64,7 @@ export const codebaseIndexModelsSchema = z.object({
5264
mistral: z.record(z.string(), z.object({ dimension: z.number() })).optional(),
5365
"vercel-ai-gateway": z.record(z.string(), z.object({ dimension: z.number() })).optional(),
5466
openrouter: z.record(z.string(), z.object({ dimension: z.number() })).optional(),
67+
bedrock: z.record(z.string(), z.object({ dimension: z.number() })).optional(),
5568
})
5669

5770
export type CodebaseIndexModels = z.infer<typeof codebaseIndexModelsSchema>

pnpm-lock.yaml

Lines changed: 12 additions & 14 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

src/assets/costrict/wechat.png

-113 KB
Loading

src/core/webview/ClineProvider.ts

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2183,6 +2183,8 @@ export class ClineProvider
21832183
codebaseIndexOpenAiCompatibleBaseUrl: codebaseIndexConfig?.codebaseIndexOpenAiCompatibleBaseUrl,
21842184
codebaseIndexSearchMaxResults: codebaseIndexConfig?.codebaseIndexSearchMaxResults,
21852185
codebaseIndexSearchMinScore: codebaseIndexConfig?.codebaseIndexSearchMinScore,
2186+
codebaseIndexBedrockRegion: codebaseIndexConfig?.codebaseIndexBedrockRegion,
2187+
codebaseIndexBedrockProfile: codebaseIndexConfig?.codebaseIndexBedrockProfile,
21862188
},
21872189
// Only set mdmCompliant if there's an actual MDM policy
21882190
// undefined means no MDM policy, true means compliant, false means non-compliant
@@ -2418,6 +2420,8 @@ export class ClineProvider
24182420
stateValues.codebaseIndexConfig?.codebaseIndexOpenAiCompatibleBaseUrl,
24192421
codebaseIndexSearchMaxResults: stateValues.codebaseIndexConfig?.codebaseIndexSearchMaxResults,
24202422
codebaseIndexSearchMinScore: stateValues.codebaseIndexConfig?.codebaseIndexSearchMinScore,
2423+
codebaseIndexBedrockRegion: stateValues.codebaseIndexConfig?.codebaseIndexBedrockRegion,
2424+
codebaseIndexBedrockProfile: stateValues.codebaseIndexConfig?.codebaseIndexBedrockProfile,
24212425
},
24222426
profileThresholds: stateValues.profileThresholds ?? {},
24232427
includeDiagnosticMessages: stateValues.includeDiagnosticMessages ?? true,

src/core/webview/webviewMessageHandler.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2489,6 +2489,8 @@ export const webviewMessageHandler = async (
24892489
codebaseIndexEmbedderModelId: settings.codebaseIndexEmbedderModelId,
24902490
codebaseIndexEmbedderModelDimension: settings.codebaseIndexEmbedderModelDimension, // Generic dimension
24912491
codebaseIndexOpenAiCompatibleBaseUrl: settings.codebaseIndexOpenAiCompatibleBaseUrl,
2492+
codebaseIndexBedrockRegion: settings.codebaseIndexBedrockRegion,
2493+
codebaseIndexBedrockProfile: settings.codebaseIndexBedrockProfile,
24922494
codebaseIndexSearchMaxResults: settings.codebaseIndexSearchMaxResults,
24932495
codebaseIndexSearchMinScore: settings.codebaseIndexSearchMinScore,
24942496
}

src/i18n/locales/en/embeddings.json

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,12 @@
1717
"modelNotEmbeddingCapable": "Ollama model is not embedding capable: {{modelId}}",
1818
"hostNotFound": "Ollama host not found: {{baseUrl}}"
1919
},
20+
"bedrock": {
21+
"invalidResponseFormat": "Invalid response format from Amazon Bedrock",
22+
"invalidCredentials": "Invalid AWS credentials. Please check your AWS configuration.",
23+
"accessDenied": "Access denied to Amazon Bedrock service. Please check your IAM permissions.",
24+
"modelNotFound": "Model {{model}} not found in Amazon Bedrock"
25+
},
2026
"scanner": {
2127
"unknownErrorProcessingFile": "Unknown error processing file {{filePath}}",
2228
"unknownErrorDeletingPoints": "Unknown error deleting points for {{filePath}}",
@@ -49,6 +55,7 @@
4955
"mistralConfigMissing": "Mistral configuration missing for embedder creation",
5056
"openRouterConfigMissing": "OpenRouter configuration missing for embedder creation",
5157
"vercelAiGatewayConfigMissing": "Vercel AI Gateway configuration missing for embedder creation",
58+
"bedrockConfigMissing": "Amazon Bedrock configuration missing for embedder creation",
5259
"invalidEmbedderType": "Invalid embedder type configured: {{embedderProvider}}",
5360
"vectorDimensionNotDeterminedOpenAiCompatible": "Could not determine vector dimension for model '{{modelId}}' with provider '{{provider}}'. Please ensure the 'Embedding Dimension' is correctly set in the OpenAI-Compatible provider settings.",
5461
"vectorDimensionNotDetermined": "Could not determine vector dimension for model '{{modelId}}' with provider '{{provider}}'. Check model profiles or configuration.",

src/i18n/locales/zh-CN/embeddings.json

Lines changed: 7 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)