Commit graph

620 commits

Author SHA1 Message Date
daniel-lxs
f5cc227c09
Extract router models fetching logic into dedicated service
Refactor to improve separation of concerns:

- Create src/services/router-models/index.ts to handle provider model fetching
- Extract buildProviderFetchList() function for fetch options construction
- Extract fetchRouterModels() function for coordinated model fetching
- Move 150+ lines of provider-specific logic out of webviewMessageHandler
- Add comprehensive tests in router-models-service.spec.ts (11 test cases)

Benefits:
- Cleaner webviewMessageHandler with less business logic
- Reusable service for router model operations
- Better testability with isolated unit tests
- Clear separation between UI message handling and data fetching

Files changed:
- New: src/services/router-models/index.ts
- New: src/services/router-models/__tests__/router-models-service.spec.ts
- Modified: src/core/webview/webviewMessageHandler.ts (simplified)
2025-10-30 11:21:31 -05:00
daniel-lxs
97beb1366c
Remove coalescing, background refresh, and cache logging
Address review feedback by removing out-of-scope optimizations:

1. Remove in-flight coalescing infrastructure
   - Delete inFlightModelFetches and inFlightEndpointFetches maps
   - Eliminate promise sharing across concurrent requests

2. Remove background refresh on file cache hit
   - Simplify to synchronous flow: memory → file → network
   - No more fire-and-forget background updates

3. Remove cache performance logging
   - Delete console.log statements for cache_hit, file_hit, bg_refresh
   - Clean up debugging artifacts from development

4. Fix active-provider scoping gap
   - Include ollama/lmstudio/huggingface in requestRouterModels when active
   - Prevents empty response that breaks chat flows for local providers

Result: Simpler, more maintainable code focused on core goal of
reducing unnecessary network requests by scoping to active provider.
2025-10-30 11:00:30 -05:00
daniel-lxs
c4ddbf65d0
Propagate AbortSignal to all provider fetchers and use native timeout
- Remove inline withTimeout helper in favor of AbortSignal.timeout()
- Add optional AbortSignal parameter to all provider model fetchers:
  - openrouter, requesty, glama, unbound, litellm, ollama, lmstudio
  - deepinfra, io-intelligence, vercel-ai-gateway, huggingface, roo
- Standardize timeout handling across modelCache and modelEndpointCache
- Add useRouterModelsAll hook for settings UI to fetch all providers
- Update Unbound and ApiOptions to use requestRouterModelsAll

This ensures consistent cancellation behavior and prepares for better
request lifecycle management across the codebase.
2025-10-30 09:39:26 -05:00
Hannes Rudolph
632bbe77db Router models: coalesce fetches, file-cache pre-read, active-only scope + debounce
Implements Phase 1/2/3 from temp plan: 1) Coalesce in-flight per-provider fetches with timeouts in modelCache and modelEndpointCache; 2) Read file cache on memory miss (Option A) with background refresh; 3) Scope router-models to active provider by default and add requestRouterModelsAll for activation/settings; 4) Debounce requestRouterModels to reduce duplicates. Also removes immediate re-read after write and adds small logging for OpenRouter fetch counts. Test adjustments ensure deterministic behavior in CI by disabling debounce in NODE_ENV=test and fetching all providers in unit test paths.

Key changes: - src/api/providers/fetchers/modelCache.ts: add inFlightModelFetches and withTimeout; consult file cache on miss; remove immediate re-read after write; telemetry-style console logs - src/api/providers/fetchers/modelEndpointCache.ts: add inFlightEndpointFetches and withTimeout; consult file cache on miss - src/core/webview/webviewMessageHandler.ts: add requestRouterModelsAll; default requestRouterModels to active provider; debounce; warm caches on activation; NODE_ENV=test disables debounce and runs allFetches so tests remain stable - src/shared/WebviewMessage.ts: add 'requestRouterModelsAll' message type - src/shared/ExtensionMessage.ts: move includeCurrentTime/includeCurrentCost to optional fields - src/api/providers/openrouter.ts: log models/endpoints count after fetch - tests: update webviewMessageHandler.spec to use requestRouterModelsAll where full sweep is expected

Working directory summary: M src/api/providers/fetchers/modelCache.ts, M src/api/providers/fetchers/modelEndpointCache.ts, M src/api/providers/openrouter.ts, M src/core/webview/webviewMessageHandler.ts, M src/shared/ExtensionMessage.ts, M src/shared/WebviewMessage.ts, M src/core/webview/__tests__/webviewMessageHandler.spec.ts. Excluded: temp_plan.md (not committed).
2025-10-29 12:25:59 -06:00
Matt Rubens
0d3817505e
Focus textbox and add newlines after adding to context (#8877) 2025-10-27 23:26:34 -04:00
roomote[bot]
3cbdbc2af6
feat: add settings to configure time and cost in system prompt (#8451)
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: daniel-lxs <ricciodaniel98@gmail.com>
Co-authored-by: Daniel <57051444+daniel-lxs@users.noreply.github.com>
2025-10-27 18:40:16 -04:00
Matt Rubens
6428d099fa
chore: add changeset for v3.29.0 (#8806)
Co-authored-by: ellipsis-dev[bot] <65095814+ellipsis-dev[bot]@users.noreply.github.com>
2025-10-24 17:46:06 -04:00
roomote[bot]
ab9a48578c
feat: add dynamic model loading for Roo Code Cloud provider (#8728)
Co-authored-by: Roo Code <roomote@roocode.com>
Co-authored-by: Matt Rubens <mrubens@users.noreply.github.com>
2025-10-24 00:58:34 -04:00
NaccOll
f4121e2568
Add checkpoint initialization timeout settings and fix checkpoint timeout warnings (#8019)
Co-authored-by: daniel-lxs <ricciodaniel98@gmail.com>
Co-authored-by: Matt Rubens <mrubens@users.noreply.github.com>
2025-10-23 22:18:58 -04:00
Chris Estreich
ac88d66194
Remove a very verbose error for cloud agents (#8795) 2025-10-23 12:37:45 -07:00
roomote[bot]
d9ed33db67
Enable browser-use tool for all image-capable models (#8121)
Co-authored-by: ellipsis-dev[bot] <65095814+ellipsis-dev[bot]@users.noreply.github.com>
Co-authored-by: Hannes Rudolph <hrudolph@gmail.com>
Co-authored-by: Matt Rubens <mrubens@users.noreply.github.com>
2025-10-21 22:23:42 -04:00
Matt Rubens
236957b818
Revert cloud agents for now (#8713) 2025-10-17 16:59:16 -04:00
Bruno Bergher
0978ba3996
feat: Cloud agents in extension (#8470)
Co-authored-by: Matt Rubens <mrubens@users.noreply.github.com>
2025-10-17 00:18:16 -04:00
Chris Estreich
b011b63c93
Identify cloud tasks in the extension bridge (#8539) 2025-10-08 20:54:08 -07:00
Matt Rubens
eeaafef786
Revert "feat: Experiment: Show a bit of stats in Cloud tab to help users discover there's more in Cloud" (#8559) 2025-10-07 21:37:10 -04:00
Bruno Bergher
cd8036d2d8
feat: Experiment: Show a bit of stats in Cloud tab to help users discover there's more in Cloud (#8415)
Co-authored-by: Roo Code <roomote@roocode.com>
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: Matt Rubens <mrubens@users.noreply.github.com>
Co-authored-by: roomote[bot] <219738659+roomote[bot]@users.noreply.github.com>
Co-authored-by: SannidhyaSah <sah_sannidhya@outlook.com>
Co-authored-by: John Richmond <5629+jr@users.noreply.github.com>
2025-10-07 17:48:23 -04:00
Matt Rubens
28b642d28c
Add the parent task ID in telemetry (#8532) 2025-10-06 11:30:01 -04:00
Matt Rubens
b5c58b64aa
Track when telemetry settings change (#8339) 2025-09-26 22:48:33 -04:00
Matt Rubens
8a7d90e43b
Upgrade Supernova (#8330) 2025-09-26 15:37:36 -04:00
roomote[bot]
43c1de0d7e
feat: log out from cloud when resetting extension state (#8312)
Co-authored-by: Roo Code <roomote@roocode.com>
Co-authored-by: Matt Rubens <mrubens@users.noreply.github.com>
2025-09-25 12:24:46 -04:00
Bruno Bergher
d8dd19a6ed
ux: Collapse thinking blocks by default (but control all of them with a keyboard shortcut) (#8254)
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: Matt Rubens <mrubens@users.noreply.github.com>
2025-09-23 18:48:04 -04:00
Matt Rubens
0682629ac8
Cloud account switcher (#8223)
* Cloud account switcher

* Bare metal evals fixes (#8224)

Co-authored-by: Roo Code <roomote@roocode.com>

* Rounded icons in chat account switcher

* Visual tweaks to CloudView

* Remove hardcoded timeout

* Safer check

* PR feedback

* Fix test

* Check for org mismatches in handleCredentialsChange

* Cloud: use the existing auth event flow to handle org switching

* Cleanup: broadcast() might be confusingly named.

---------

Co-authored-by: Chris Estreich <cestreich@gmail.com>
Co-authored-by: Roo Code <roomote@roocode.com>
Co-authored-by: Bruno Bergher <bruno@roocode.com>
Co-authored-by: John Richmond <5629+jr@users.noreply.github.com>
2025-09-23 18:18:28 -04:00
Bruno Bergher
6c2aa63cfd
feat: Add keyboard shortcut for toggling auto-approve (Cmd/Ctrl+Alt+A) (#8214)
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: Matt Rubens <mrubens@users.noreply.github.com>
2025-09-22 11:26:29 -04:00
Matt Rubens
32d7e6f2ad
Add an announcement for Supernova (#8197)
* Add an announcement for Supernova

* Remove duplicate keys
2025-09-20 16:28:28 -04:00
Hannes Rudolph
d956cdb727
Fix duplicate rehydrate during reasoning; centralize rehydrate and preserve cancel metadata (#8171)
Co-authored-by: daniel-lxs <ricciodaniel98@gmail.com>
2025-09-20 00:34:21 -04:00
Chris Estreich
a255c95bd0
Get the model id property for a given provider (#8009) 2025-09-17 15:24:27 -07:00
roomote[bot]
94b4511053
feat: Move slash commands to Settings tab with gear icon for discoverability (#7988)
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: Bruno Bergher <me@brunobergher.com>
Co-authored-by: Mubeen Zulfiqar <mubeen_zulfiqar@yahoo.com>
Co-authored-by: Matt Rubens <mrubens@users.noreply.github.com>
2025-09-15 15:41:00 -04:00
Chris Estreich
b309a6ad8b
Disable Roomote Control on logout (#7976) 2025-09-14 10:47:16 -07:00
roomote[bot]
b576dd9008
fix: include API key in Ollama /api/tags requests (#7903)
Co-authored-by: Roo Code <roomote@roocode.com>
2025-09-13 22:55:49 -04:00
Matt Rubens
200d79e818
In-app announcement for Roo Code Cloud (#7914)
Co-authored-by: ellipsis-dev[bot] <65095814+ellipsis-dev[bot]@users.noreply.github.com>
2025-09-11 16:28:21 -04:00
Matt Rubens
33fe6fb9c6
Make Posthog telemetry the default (#7909)
Co-authored-by: ellipsis-dev[bot] <65095814+ellipsis-dev[bot]@users.noreply.github.com>
2025-09-11 15:50:40 -04:00
Bruno Bergher
469a70fe5d
feat: In-extension dismissible upsells for Roo Code Cloud (#7850)
* First pass at separate upsell dialog

* Revert PR #7188 - Restore temperature parameter to fix TabbyApi/ExLlamaV2 crashes (#7594)

* fix: reduce CodeBlock button z-index to prevent overlap with popovers (#7783)

Fixes #7703 - CodeBlock language dropdown and copy button were appearing above popovers due to z-index: 100. Reduced to z-index: 40 to maintain proper layering hierarchy while keeping buttons functional.

* Make ollama models info transport work like lmstudio (#7679)

* feat: add click-to-edit, ESC-to-cancel, and fix padding consistency for chat messages (#7790)

* feat: add click-to-edit, ESC-to-cancel, and fix padding consistency

- Enable click-to-edit for past messages by making message text clickable
- Add ESC key handler to cancel edit mode in ChatTextArea
- Fix padding consistency between past and queued message editors
- Adjust right padding for edit mode to accommodate cancel button

Fixes #7788

* fix: adjust padding and layout for ChatTextArea in edit mode

* refactor: replace hardcoded pr-[72px] with standard Tailwind pr-20 class

---------

Co-authored-by: Roo Code <roomote@roocode.com>
Co-authored-by: Hannes Rudolph <hrudolph@gmail.com>
Co-authored-by: daniel-lxs <ricciodaniel98@gmail.com>

* Let people paste in the auth redirect url (#7805)

Co-authored-by: roomote[bot] <219738659+roomote[bot]@users.noreply.github.com>
Co-authored-by: Bruno Bergher <me@brunobergher.com>

* fix: resolve chat message edit/delete duplication issues (#7793)

* fix: add GIT_EDITOR env var to merge-resolver mode for non-interactive rebase (#7819)

* UI: Render reasoning as plain italic (match <thinking>) (#7752)

Co-authored-by: Roo Code <roomote@roocode.com>
Co-authored-by: Hannes Rudolph <hrudolph@gmail.com>
Co-authored-by: daniel-lxs <ricciodaniel98@gmail.com>

* Add taskSyncEnabled to userSettingsConfigSchema (#7827)

feat: add taskSyncEnabled to userSettingsConfigSchema

Co-authored-by: Roo Code <roomote@roocode.com>

* Release: v1.75.0 (#7829)

chore: bump version to v1.75.0

* fix: prevent negative cost values and improve label visibility in evals chart (#7830)

Co-authored-by: Roo Code <roomote@roocode.com>

* Fix Groq context window display (#7839)

* feat: add DismissibleUpsell component for dismissible messages

- Created DismissibleUpsell component with variant support (banner/default)
- Added dismissedUpsells to GlobalState for persistence
- Implemented message handlers for dismissing and retrieving dismissed upsells
- Added comprehensive tests for the component
- Uses VSCode extension globalState for persistent storage

* fix: Apply PR feedback for DismissibleUpsell component

- Changed from className to separate 'id' and 'className' props for better semantics
- Added i18n support for accessibility labels (aria-label and title)
- Fixed memory leak by adding mounted flag to prevent state updates after unmount
- Fixed race condition by sending dismiss message before hiding component
- Fixed inefficient array operations in webviewMessageHandler
- Added comprehensive test coverage for edge cases including:
  - Multiple rapid dismissals
  - Component unmounting during async operations
  - Invalid/malformed message handling
  - Proper message sending before unmount
- Added null checks for message data to handle edge cases gracefully

* New Cloud upsell dialog in task share and cloud view, shared component

* Properly working DismissibleUpsell

* Working upsell for long-running tasks

* CTA in AutoApproveMenu

* Home page CTA

* Fixes the autoapprove upsell and some tests

* Visual and copy fixes

* Test fix

* Translations

* Stray className attribute

* Cloud view fixes in a left-aligned layout

* Removes unnecessary test

* Less flaky tests

* Fixes sharebutton behavior and updates associated tests

* Update webview-ui/src/i18n/locales/it/cloud.json

Co-authored-by: ellipsis-dev[bot] <65095814+ellipsis-dev[bot]@users.noreply.github.com>

* Fix dismissed flicker

* Fix long task upsell

---------

Co-authored-by: Daniel <57051444+daniel-lxs@users.noreply.github.com>
Co-authored-by: ItsOnlyBinary <ItsOnlyBinary@users.noreply.github.com>
Co-authored-by: roomote[bot] <219738659+roomote[bot]@users.noreply.github.com>
Co-authored-by: Roo Code <roomote@roocode.com>
Co-authored-by: Hannes Rudolph <hrudolph@gmail.com>
Co-authored-by: daniel-lxs <ricciodaniel98@gmail.com>
Co-authored-by: Matt Rubens <mrubens@users.noreply.github.com>
Co-authored-by: John Richmond <5629+jr@users.noreply.github.com>
Co-authored-by: ellipsis-dev[bot] <65095814+ellipsis-dev[bot]@users.noreply.github.com>
2025-09-10 13:06:13 -07:00
John Richmond
80af39dc74
separate task sync roomote control (#7799)
* feat: separate Task Sync and Roomote Control settings

- Add new taskSyncEnabled setting to control task content syncing
- Keep remoteControlEnabled for Roomote Control functionality
- Task Sync controls whether task content is sent to cloud
- Roomote Control controls whether cloud can send instructions back
- Roomote Control now depends on Task Sync being enabled
- Usage metrics (tokens, cost) always reported regardless of settings
- Update UI with two separate toggles and clear descriptions
- Add info text explaining usage metrics are always reported

* feat: add missing translations for Task Sync and Roomote Control settings

- Added taskSync, taskSyncDescription, remoteControlRequiresTaskSync, and usageMetricsAlwaysReported keys to all non-English cloud.json files
- Updated cloudBenefit keys to match English structure
- Ensured all languages have consistent translation keys for the new Task Sync and Roomote Control features

* Cloud: cleanup taskSyncEnabled additions

* fix: correct indentation localization files

---------

Co-authored-by: Roo Code <roomote@roocode.com>
2025-09-10 12:43:11 -07:00
Daniel
88b5d66cb8
fix: resolve chat message edit/delete duplication issues (#7793) 2025-09-09 12:26:44 -04:00
Matt Rubens
5780659ae5
Let people paste in the auth redirect url (#7805)
Co-authored-by: roomote[bot] <219738659+roomote[bot]@users.noreply.github.com>
Co-authored-by: Bruno Bergher <me@brunobergher.com>
2025-09-09 09:50:50 -04:00
ItsOnlyBinary
76c6745649
Make ollama models info transport work like lmstudio (#7679) 2025-09-08 22:48:22 -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
Thach Nguyen
72502d8f1a
feat: Add DeepInfra as a model provider in Roo Code (#7677) 2025-09-04 17:28:45 -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
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