Commit graph

6914 commits

Author SHA1 Message Date
Roo Code
4c32fdae55 fix: refresh provider settings on profile switch in Settings view
When switching Configuration Profiles within the Settings/Providers tab,
provider settings were not refreshing because:

1. The cachedState update happened asynchronously (useEffect) after the
   render cycle, causing child components to mount with stale config
2. ApiOptions and provider components retained local state from the
   previous profile since they were not remounted

Three fixes applied:
- Changed profile-switch useEffect to synchronous render-time state
  update (React "adjusting state when a prop changes" pattern)
- Added key={currentApiConfigName} on ApiOptions to force full remount
  on profile switch, resetting all local state in provider components
- Added sync effects and write-back guards in OpenAICompatible.tsx to
  prevent stale header overwrites

Closes #11450
2026-02-13 15:29:12 +00:00
Hannes Rudolph
b4d9f92b4d
Revert "Fix provider 400s: strip reasoning_details from messages, $ref from tool schemas" (#11453) 2026-02-12 19:51:21 -07:00
Hannes Rudolph
3965cd9743
fix: stabilize token/cache accounting across providers and routed Roo metadata (#11448) 2026-02-12 16:10:43 -07:00
Hannes Rudolph
b7857bcd6a
fix: harden delegation lifecycle against race conditions with per-task metadata, mutual-exclusion guards, and multi-layer failure recovery (#11379)
* fix: race conditions in subtask delegation system

Comprehensive fix for race conditions and error handling gaps in the subtask
delegation system. Addresses multiple failure modes that could leave parent
tasks permanently stuck in 'delegated' status, causing nested subtasks to hang.

Key fixes:
- Remove initialStatus from taskMetadata rebuild (eliminates status overwrites)
- Persist delegation metadata to per-task files (resolves globalState eviction)
- Add delegationInProgress mutex guard (prevents concurrent delegation ops)
- TOCTOU race fixes with fresh re-reads before writes
- Abort-aware pWaitFor predicate (prevents false 60s timeout on user input)
- Remove silent .catch(() => {}) — all errors now logged unless task is aborting
- Single-attempt delegation with parent repair on failure (no retry band-aids)
- Cancel debouncedEmitTokenUsage in dispose() (prevents zombie callbacks)
- new_task isolation truncation for parallel tool calls

* fix: write all 6 delegation fields in every saveDelegationMeta call site

* fix: align delegation tests with single-attempt implementation (no retry)
2026-02-12 13:06:25 -05:00
0xMink
9e46d3e10c
Fix provider 400s: strip reasoning_details from messages, $ref from tool schemas (#11431)
Co-authored-by: daniel-lxs <ricciodaniel98@gmail.com>
2026-02-12 12:00:52 -05:00
SannidhyaSah
6c9ff49dd8
fix: cancel backend auto-approval timeout when auto-approve is toggled off mid-countdown (#11439)
Co-authored-by: Sannidhya <sann@Sannidhyas-MacBook-Pro.local>
2026-02-12 10:38:11 -05:00
roomote[bot]
cdf481c8f9
feat: add GLM-5 model support to Z.ai provider (#11440) 2026-02-12 09:14:52 -05:00
Hannes Rudolph
897c372d2d
refactor: unify cache control with centralized breakpoints and universal provider options (#11426) 2026-02-12 00:21:25 -07:00
Hannes Rudolph
fa9dff4a06
refactor: remove browser use functionality entirely (#11392) 2026-02-11 18:11:21 -07:00
Chris Estreich
f54f224a26
chore(cli): prepare release v0.0.53 (#11425) 2026-02-11 16:43:12 -08:00
Chris Estreich
6c8b9dfa26
Make CLI auto-approve by default with require-approval opt-in (#11424)
Co-authored-by: Roo Code <roomote@roocode.com>
2026-02-11 16:12:05 -08:00
Chris Estreich
bd4cd07e88
Release: v1.111.0 (#11421) 2026-02-11 15:55:31 -08:00
Chris Estreich
77b76a891f
Handle cancel/resume abort races without crashing (#11422) 2026-02-11 15:55:08 -08:00
Daniel
b51af98278
fix: make delegation reopen flow Roo v2-native (#11418) 2026-02-11 16:38:57 -05:00
Hannes Rudolph
b759b92f01
refactor: remove built-in skills and built-in skills mechanism (#11414) 2026-02-11 14:32:57 -07:00
Hannes Rudolph
d2c52c9e09
chore: clean up repo-facing mode rules (#11410) 2026-02-11 12:15:55 -07:00
Daniel
e6f0e79c38
feat: implement ModelMessage storage layer with AI SDK response messages (#11409)
Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-02-11 13:58:39 -05:00
Matt Rubens
dcb33c47ad
Revert "feat: wire RooMessage storage into Task.ts and all providers" (#11394) 2026-02-10 23:57:42 -05:00
Daniel
a7ba3b5af5
feat: wire RooMessage storage into Task.ts and all providers (#11386) 2026-02-10 21:25:48 -07:00
Hannes Rudolph
4e659b459d
refactor: remove footgun prompting (file-based system prompt override) (#11387) 2026-02-10 18:32:01 -07:00
Hannes Rudolph
5800363903
refactor: delete orphaned per-provider caching transform files (#11388) 2026-02-10 17:39:45 -07:00
Hannes Rudolph
8a69e9e04d
feat: rename search_and_replace tool to edit and unify edit-family UI (#11296) 2026-02-10 17:32:35 -07:00
Hannes Rudolph
097f648349
fix: resolve chat scroll anchoring and task-switch scroll race condit… (#11385) 2026-02-10 16:40:13 -07:00
Hannes Rudolph
8d57da8bc8
roofactor: Migrate Roo provider to AI SDK (#11383) 2026-02-10 16:16:32 -07:00
Hannes Rudolph
08a96af22c
fix: harden command auto-approval against inline JS false positives (#11382) 2026-02-10 14:44:10 -07:00
Daniel
50e5d98f5b
feat: RooMessage type system and storage layer for ModelMessage migration (#11380)
Co-authored-by: Roo Code <roomote@roocode.com>
2026-02-10 16:41:35 -05:00
Danger Mouse
4438fdadc6
Second Quick Fix for Azure Foundry (#11374) 2026-02-10 10:39:55 -07:00
roomote[bot]
b971fe1a63
fix: preserve pasted images in chatbox during chat activity (#11375)
Co-authored-by: Roo Code <roomote@roocode.com>
2026-02-10 12:37:41 -05:00
Daniel
cdd1a4dabf
refactor: migrate NativeOllamaHandler to AI SDK (#11355) 2026-02-10 10:36:28 -07:00
Hannes Rudolph
4272a69726
refactor: unify Gemini/Vertex error handling via handleAiSdkError() (#11364) 2026-02-10 11:19:37 -05:00
SannidhyaSah
ff89965f59
fix: prevent chat history loss during cloud/settings navigation (#11371) (#11372)
Co-authored-by: Sannidhya <sann@Sannidhyas-MacBook-Pro.local>
2026-02-10 10:41:53 -05:00
Hannes Rudolph
d4cf3211e7
fix: avoid zsh process-substitution false positives in assignments (#11365) 2026-02-10 10:01:48 -05:00
0xMink
7df1a18ccb
fix(editor): make tab close best-effort in DiffViewProvider.open (#11363) 2026-02-10 09:52:30 -05:00
0xMink
c1a8767adc
fix(checkpoints): canonicalize core.worktree comparison to prevent Windows path mismatch failures (#11346) 2026-02-10 09:51:38 -05:00
Chris Estreich
b02924530c
Fix task resumption in the API module (#11369) 2026-02-10 00:28:17 -08:00
Daniel
5773af8ddd
feat: Refactor OpenRouter provider to use Vercel AI SDK (#10778)
Co-authored-by: Hannes Rudolph <hrudolph@gmail.com>
2026-02-09 20:50:33 -07:00
Hannes Rudolph
2f9849071d
fix: surface actual API error messages instead of generic NoOutputGeneratedError (#11359) 2026-02-09 19:47:04 -07:00
Hannes Rudolph
938e6994a2
refactor: migrate Qwen Code provider to AI SDK (#11356)
Co-authored-by: daniel-lxs <ricciodaniel98@gmail.com>
2026-02-09 18:45:27 -07:00
Hannes Rudolph
b6bf829ad9
feat: migrate MiniMax provider to AI SDK (#11357) 2026-02-09 18:33:22 -07:00
Hannes Rudolph
b7d6e4933d
refactor: migrate OpenAI Codex to AI SDK and use Responses API instructions field (#11352) 2026-02-09 16:50:40 -07:00
Daniel
34a278e9a2
feat: migrate VercelAiGatewayHandler to AI SDK (#11353) 2026-02-09 18:50:21 -05:00
Daniel
a4914c438c
feat: migrate OpenAiHandler to AI SDK (#11351)
Co-authored-by: Roo Code <roomote@roocode.com>
2026-02-09 18:49:34 -05:00
Daniel
7a38b99232
feat: migrate Requesty provider to AI SDK (@requesty/ai-sdk) (#11350) 2026-02-09 16:29:32 -07:00
Hannes Rudolph
f51e91ac76
fix: prevent double notification sound playback (#11283) 2026-02-09 16:17:36 -07:00
Hannes Rudolph
7da429da19
Revert "feat: add task header highlight for visual status indication" (#11349)
Revert "feat: add task header highlight for visual status indication (#11305)"

This reverts commit 5313cb503a.
2026-02-09 15:29:10 -07:00
Daniel
c74acf36ef
feat: migrate LiteLLM provider to AI SDK (@ai-sdk/openai-compatible) (#11348)
* feat: migrate LiteLLM provider to AI SDK (@ai-sdk/openai-compatible)

- Replace raw OpenAI SDK (RouterProvider) with Vercel AI SDK's
  createOpenAICompatible via OpenAICompatibleHandler base class
- Retain dynamic model fetching from LiteLLM server via /v1/model/info
- Use centralized getModelMaxOutputTokens() to cap output tokens at 20%
  of context window, preventing overflow errors
- Remove LiteLLM-specific workarounds (Gemini thought signature injection,
  prompt cache control headers) now handled by the proxy or AI SDK
- Rewrite tests to mock AI SDK (streamText, generateText) instead of
  raw OpenAI SDK

* fix: call fetchModel() in completePrompt() before execution

Addresses review feedback - completePrompt() now fetches models
before executing to ensure correct model info for token limits,
matching the behavior of createMessage().
2026-02-09 15:20:42 -07:00
roomote[bot]
70775f0ec1
fix: make removeClineFromStack() delegation-aware to prevent orphaned parent tasks (#11302)
* fix: make removeClineFromStack() delegation-aware to prevent orphaned parent tasks

When a delegated child task is removed via removeClineFromStack() (e.g., Clear
Task, navigate to history, start new task), the parent task was left orphaned
in "delegated" status with a stale awaitingChildId. This made the parent
unresumable without manual history repair.

This fix captures parentTaskId and childTaskId before abort/dispose, then
repairs the parent metadata (status -> active, clear awaitingChildId) when
the popped task is a delegated child and awaitingChildId matches.

Parent lookup + updateTaskHistory are wrapped in try/catch so failures are
non-fatal (logged but do not block the pop).

Closes #11301

* fix: add skipDelegationRepair opt-out to removeClineFromStack() for nested delegation

---------

Co-authored-by: Roo Code <roomote@roocode.com>
2026-02-09 16:54:13 -05:00
Daniel
bb86eb8651
refactor: migrate LM Studio provider to Vercel AI SDK (#11347)
* refactor: migrate LM Studio provider to Vercel AI SDK

Migrate LmStudioHandler from raw OpenAI SDK to Vercel AI SDK via
OpenAICompatibleHandler base class.

Changes:
- Extend OpenAICompatibleHandler instead of BaseProvider
- Use createOpenAICompatible from @ai-sdk/openai-compatible
- Use streamText/generateText from ai package
- Add extractReasoningMiddleware for <think> tag extraction parity
- Pass draft_model via providerOptions for speculative decoding
- Remove unused getLmStudioModels function (active version in fetchers/)
- Update all tests to mock AI SDK instead of OpenAI SDK

* fix: wrap completePrompt with handleAiSdkError for consistent error handling

---------

Co-authored-by: Roo Code <roomote@roocode.com>
2026-02-09 16:47:49 -05:00
Daniel
24039c78b5
refactor: migrate AnthropicVertexHandler to AI SDK (#11345)
Replace @anthropic-ai/vertex-sdk with @ai-sdk/google-vertex/anthropic,
using streamText/generateText from the Vercel AI SDK for consistent
provider behavior.

Changes:
- Use createVertexAnthropic from @ai-sdk/google-vertex/anthropic
- Use streamText/generateText instead of direct Anthropic API calls
- Add AI SDK transform utilities for message/tool conversion
- Handle cache control via AI SDK providerOptions
- Handle thinking/reasoning via providerOptions.anthropic.thinking
- Add thought signature and redacted thinking block tracking
- Set isAiSdkProvider() to return true
- Remove unused deps: @anthropic-ai/vertex-sdk, google-auth-library
- Rewrite tests to mock AI SDK instead of @anthropic-ai/vertex-sdk
2026-02-09 16:11:42 -05:00
Danger Mouse
571be71005
Pr 11144 (#11315)
* Latest main branch snapshot from API

* feat: add dedicated Azure OpenAI provider using @ai-sdk/azure package

* feat: add Azure provider UI component and translations

* feat: add Azure provider translations for all locales

* chore: add missing Azure placeholder translations

* Delete .changeset/azure-ai-sdk-migration.md

* fix: add Azure provider validation for onboarding workflow

- Add azureApiKey to SECRET_STATE_KEYS for proper configuration detection
- Add Azure validation case in validateModelsAndKeysProvided
- Add validation translations for azureResourceName and azureDeploymentName across all 18 locales

This fixes the issue where the Finish button does nothing when setting up Azure provider in the onboarding workflow.

* feat(azure): add model metadata, model picker, rename to Azure AI Foundry

- Add static model metadata for 29 Azure models (from models.dev)
  with Roo-specific flags (reasoning, tools, verbosity) matching
  openAiNativeModels
- Add model picker dropdown to Azure provider settings for model
  capability detection (context window, max tokens, pricing)
- Rename provider label from 'Azure OpenAI' to 'Azure AI Foundry'
  across all 18 locales
- Make API key optional (supports Azure managed identity / Entra ID)
- Update default API version from 2024-08-01-preview to 2025-04-01-preview
- Fix maxOutputTokens validation (filter invalid values <= 0)
- Handler separates deployment name (API calls) from model ID
  (capability lookup) with azureDefaultModelInfo (gpt-4o) fallback
- Remove unhelpful 'Get Azure AI Foundry Access' button
- Prevent stale model IDs from other providers carrying over
- Suppress validation errors on fresh provider selection

* fix(azure): add missing isAiSdkProvider() override for reasoning block preservation

* Azure Fixes for Hannes

* Quick Fix for Respones API Only (for Hannes)

* fix: use explicit azureOpenAiDefaultApiVersion fallback when apiVersion is empty

Addresses review feedback: the UI placeholder shows '2025-04-01-preview' via
azureOpenAiDefaultApiVersion, so the handler should use the same constant as
fallback instead of silently deferring to the SDK's internal default.

* fix: remove stale Cerebras references (retired provider)

* fix: add missing retiredProviderMessage translations for all locales

* fix: do not map promptCacheMissTokens to cacheWriteTokens for Azure

Azure uses OpenAI-compatible caching which does not report cache write
tokens separately. promptCacheMissTokens represents tokens NOT found in
cache (processed from scratch), not tokens written to cache. This aligns
the Azure handler with the OpenAI native handler behavior.

---------

Co-authored-by: Hannes Rudolph <hrudolph@gmail.com>
Co-authored-by: Roo Code <roomote@roocode.com>
Co-authored-by: daniel-lxs <ricciodaniel98@gmail.com>
Co-authored-by: Matt Rubens <mrubens@users.noreply.github.com>
2026-02-09 14:11:12 -07:00