Skip to content

Commit c3d32bd

Browse files
mini2smrubensgithub-actions[bot]joshualipman123daniel-lxs
authored
Roo to main (#412)
* Follow symlinks in rooignore checks (RooCodeInc#7405) * Sonic -> Grok Code Fast (RooCodeInc#7426) * chore: add changeset for v3.26.0 (RooCodeInc#7428) * Changeset version bump (RooCodeInc#7429) Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> Co-authored-by: Matt Rubens <[email protected]> * feat: Add Vercel AI Gateway provider integration (RooCodeInc#7396) Co-authored-by: daniel-lxs <[email protected]> Co-authored-by: cte <[email protected]> * feat: Enable on-disk storage for Qdrant vectors and HNSW index (RooCodeInc#7182) * fix: use anthropic protocol for token counting when using anthropic models via Vercel AI Gateway (RooCodeInc#7433) - Added condition in getApiProtocol to return 'anthropic' for vercel-ai-gateway when modelId starts with 'anthropic/' - Added tests for Vercel AI Gateway provider protocol detection This ensures proper token counting for Anthropic models accessed through Vercel AI Gateway, as Anthropic and OpenAI count tokens differently (Anthropic excludes cache tokens from input count, OpenAI includes them). * fix: remove duplicate cache display in task header (RooCodeInc#7443) * Random chat text area cleanup (RooCodeInc#7436) * Update @roo-code/cloud to enable roomote control for cloud agents (RooCodeInc#7446) Co-authored-by: ellipsis-dev[bot] <65095814+ellipsis-dev[bot]@users.noreply.github.com> * Always set remoteControlEnabled to true for cloud agents (RooCodeInc#7448) * chore: add changeset for v3.26.1 (RooCodeInc#7459) * feat: show model ID in API configuration dropdown (RooCodeInc#7423) * feat: update tooltip component to match native VSCode tooltip shadow styling (RooCodeInc#7457) Co-authored-by: Roo Code <[email protected]> Co-authored-by: cte <[email protected]> * Add support for Vercel embeddings (RooCodeInc#7445) Co-authored-by: daniel-lxs <[email protected]> * Remove dot before model display (RooCodeInc#7461) * Update contributors list (RooCodeInc#7109) Co-authored-by: mrubens <[email protected]> * Update 3.26.1 changeset (RooCodeInc#7463) * Changeset version bump (RooCodeInc#7460) Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> Co-authored-by: Matt Rubens <[email protected]> * Add type for RooCodeEventName.TaskSpawned (RooCodeInc#7465) * fix: hide .rooignore'd files from environment details by default (RooCodeInc#7369) * fix: change default showRooIgnoredFiles to false to hide ignored files - Changed default value from true to false across all files - Updated tests to reflect the new default behavior - This prevents ignored files from appearing in environment details Fixes RooCodeInc#7368 * fix: update tests to match new showRooIgnoredFiles default * fix: update test expectation to match new showRooIgnoredFiles default value The PR changed the default value of showRooIgnoredFiles from true to false, so the test needs to expect false instead of true when calling formatFilesList. --------- Co-authored-by: Roo Code <[email protected]> Co-authored-by: daniel-lxs <[email protected]> * fix: exclude browser scroll actions from repetition detection (RooCodeInc#7471) - Modified ToolRepetitionDetector to skip repetition detection for browser_action scroll_down and scroll_up actions - Added isBrowserScrollAction() helper method to identify scroll actions - Added comprehensive tests for the new behavior - Fixes issue where multiple scroll actions were incorrectly flagged as being stuck in a loop Resolves: RooCodeInc#7470 Co-authored-by: Roo Code <[email protected]> * Fix GPT-5 Responses API issues with condensing and image support (RooCodeInc#7067) Co-authored-by: ellipsis-dev[bot] <65095814+ellipsis-dev[bot]@users.noreply.github.com> Co-authored-by: Roo Code <[email protected]> Co-authored-by: Hannes Rudolph <[email protected]> * Bump cloud to 0.25.0 (RooCodeInc#7475) * feat: add image generation tool with OpenRouter integration (RooCodeInc#7474) Co-authored-by: Matt Rubens <[email protected]> Co-authored-by: cte <[email protected]> * Make the default image filename more generic (RooCodeInc#7479) * Release v3.26.2 (RooCodeInc#7490) * Support free imagegen (RooCodeInc#7493) * feat: update OpenRouter API to support input/output modalities and filter image generation models (RooCodeInc#7492) * Add padding to image model picker (RooCodeInc#7494) * fix: prevent dirty state on initial mount in ImageGenerationSettings (RooCodeInc#7495) * Changeset version bump (RooCodeInc#7491) Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> Co-authored-by: Matt Rubens <[email protected]> * Show console logging in vitests when the --no-silent flag is set (RooCodeInc#7467) By default, all of the tests run in silent mode with monkey-patched the console logging so no console logging will ever appear in test output. This confuses the agent- sometimes it will add console logging to help it debug things, and it won't see the logs that it expects. Adds src/utils/vitest-verbosity.ts to handle verbosity resolution and console logging. Modifies src/vitest.config.ts and webview-ui/vitest.config.ts to integrate the new verbosity control. Removes manual console suppression from src/vitest.setup.ts and webview-ui/vitest.setup.ts as it's now handled dynamically. Co-authored-by: Chris Hasson <[email protected]> * Move @roo-code/cloud to the Roo-Code repo (RooCodeInc#7503) * Refactor the extension bridge (RooCodeInc#7515) * Implement deferred task subscriptions (RooCodeInc#7517) * feat: add optional input image parameter to image generation tool (RooCodeInc#7525) Co-authored-by: Roo Code <[email protected]> Co-authored-by: Daniel Riccio <[email protected]> * feat: sync extension bridge settings with cloud (RooCodeInc#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 <[email protected]> Co-authored-by: John Richmond <[email protected]> * refactor: flatten image generation settings structure (RooCodeInc#7536) * chore: add changeset for v3.26.3 (RooCodeInc#7541) * Changeset version bump (RooCodeInc#7542) Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> Co-authored-by: Matt Rubens <[email protected]> * Mode and provider profile selector (RooCodeInc#7545) * Putting the Roo in Roo-leases (RooCodeInc#7546) * Fix evals (RooCodeInc#7547) * fix: special tokens should not break task processing (RooCodeInc#7540) * docs: update PR template branding from Roo Code to Costrict * feat: optimize memory usage for image handling in webview (RooCodeInc#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 * feat: rename Account tab to Cloud tab (RooCodeInc#7558) Co-authored-by: Roo Code <[email protected]> Co-authored-by: Matt Rubens <[email protected]> * feat: add Ollama API key support for Turbo mode (RooCodeInc#7425) * feat: add Ollama API key support for Turbo mode - Add ollamaApiKey field to ProviderSettings schema - Add ollamaApiKey to SECRET_STATE_KEYS for secure storage - Update Ollama and NativeOllama providers to use API key for authentication - Add UI field for Ollama API key (shown when custom base URL is provided) - Add test coverage for API key functionality This enables users to use Ollama Turbo with datacenter-grade hardware by providing an API key for authenticated Ollama instances or cloud services. * fix: use VSCodeTextField for Ollama API key field Remove non-existent ApiKeyField import and use standard VSCodeTextField with password type, matching other provider implementations * Add missing translation keys for Ollama API key support - Add providers.ollama.apiKey and providers.ollama.apiKeyHelp to all 18 language files - Support for authenticated Ollama instances and cloud services - Relates to PR RooCodeInc#7425 * refactor: improve type safety for Ollama client configuration - Replace 'any' type with proper OllamaOptions (Config) type - Import Config type from ollama package for better type checking --------- Co-authored-by: Roo Code <[email protected]> Co-authored-by: Daniel Riccio <[email protected]> * Disconnect extension bridge on logout (RooCodeInc#7563) * Disconnect extension bridge on logout * Remove bad test * Cleanup * Fix claudeCode.notFound translation key (RooCodeInc#7571) I think I saw someone post a screenshot where "errors.claudeCode.notFound" was shown untranslated. * v3.26.4 (RooCodeInc#7579) * Update contributors list (RooCodeInc#7462) Co-authored-by: mrubens <[email protected]> * Changeset version bump (RooCodeInc#7580) Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> Co-authored-by: Matt Rubens <[email protected]> * feat: add configurable embedding batch size for code indexing (RooCodeInc#7464) Co-authored-by: Roo Code <[email protected]> Co-authored-by: Daniel Riccio <[email protected]> * Shows a pill with the base Roo Code Cloud URL when not pointing to pr… (RooCodeInc#7555) Co-authored-by: Roo Code <[email protected]> Co-authored-by: Matt Rubens <[email protected]> Co-authored-by: roomote[bot] <219738659+roomote[bot]@users.noreply.github.com> * Cloud: fix provider syncing (RooCodeInc#7603) ClineProvider creation was moved before CloudService which broke the old way of doing things. * fix: add cache reporting support for OpenAI-Native provider (RooCodeInc#7602) * fix: add cache reporting support for OpenAI-Native provider - Add normalizeUsage method to properly extract cache tokens from Responses API - Support both detailed token shapes (input_tokens_details) and legacy fields - Calculate cache read/write tokens with proper fallbacks - Include reasoning tokens when available in output_tokens_details - Ensure accurate cost calculation using uncached input tokens This fixes the issue where caching information was not being reported when using the OpenAI-Native provider with the Responses API. * fix: improve cache token normalization and add comprehensive tests - Add fallback to derive total input tokens from details when totals are missing - Remove unused convertToOpenAiMessages import - Add comment explaining cost calculation alignment with Gemini provider - Add comprehensive test coverage for normalizeUsage method covering: - Detailed token shapes with cached/miss tokens - Legacy field names and SSE-only events - Edge cases including missing totals with details-only - Cost calculation with uncached input tokens * fix: address PR review comments - Remove incorrect fallback to missFromDetails for cache write tokens - Fix cost calculation to pass total input tokens (calculateApiCostOpenAI handles subtraction) - Improve readability by extracting cache detail checks to intermediate variables - Remove redundant ?? undefined - Update tests to reflect correct behavior (miss tokens are not cache writes) - Add clarifying comments about cache miss vs cache write tokens * feat: add auto-approve support for MCP access_resource tool (RooCodeInc#7606) * Move message queue to the extension host (RooCodeInc#7604) Co-authored-by: roomote[bot] <219738659+roomote[bot]@users.noreply.github.com> * Send custom modes to the extension bridge (RooCodeInc#7612) * Never give up in socket transport (RooCodeInc#7616) * Fix socket-io client event handling (RooCodeInc#7618) * More socket-io client fixes from PR feedback (RooCodeInc#7619) * More socket-io client logging improvements (RooCodeInc#7620) * Publish subtask events (RooCodeInc#7626) * Update chutes.ts to add Qwen3 235B A22B Thinking 2507 model (RooCodeInc#7578) Co-authored-by: Matt Rubens <[email protected]> * chore: add changeset for v3.26.5 (RooCodeInc#7628) * Update contributors list (RooCodeInc#7629) Co-authored-by: mrubens <[email protected]> * Changeset version bump (RooCodeInc#7630) Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> Co-authored-by: Matt Rubens <[email protected]> * feat: add run_slash_command tool for executing slash commands (RooCodeInc#7473) Co-authored-by: Roo Code <[email protected]> Co-authored-by: Matt Rubens <[email protected]> Co-authored-by: Daniel Riccio <[email protected]> * Focus the extension when receiving bridge commands (RooCodeInc#7633) * Release: v1.73.0 (RooCodeInc#7636) * Cloud: remove extension_bridge_enabled for personal users (RooCodeInc#7638) * Publish token usage metrics (RooCodeInc#7637) * fix: preserve scroll position when switching tabs in settings (RooCodeInc#7587) * fix: preserve scroll position when switching tabs in settings * ui(settings): restore scroll synchronously to prevent flicker; dx(ui): name TabContent for clearer DevTools --------- Co-authored-by: Daniel Riccio <[email protected]> * feat: add Kimi K2 Turbo model configuration to moonshotModels (RooCodeInc#7593) * feat: add Kimi K2 Turbo model configuration to moonshotModels * feat: update Kimi K2 Turbo pricing and cache read prices * fix: use askApproval wrapper in insert_content and search_and_replace tools (RooCodeInc#7649) Fixes issue where isWriteProtected was incorrectly passed as the partial flag to task.ask(), causing "Current ask promise was ignored (#1)" error. Both tools now use the askApproval wrapper function which correctly handles the parameter ordering, passing undefined for progressStatus and isWriteProtected as the fourth parameter. Fixes RooCodeInc#7648 Co-authored-by: Roo Code <[email protected]> * Release v3.26.6 (RooCodeInc#7650) * Changeset version bump (RooCodeInc#7651) Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> Co-authored-by: Matt Rubens <[email protected]> * Delete .github/workflows/discord-pr-notify.yml * Remove unused slack notif (RooCodeInc#7655) * Handle zsh process substitution correctly (RooCodeInc#7658) * Handle zsh glob qualifiers correctly (RooCodeInc#7667) * Minor zh-TW Traditional Chinese locale typo fix (RooCodeInc#7672) * feat: Add DeepInfra as a model provider in Roo Code (RooCodeInc#7677) * fix: validate MCP tool exists before execution (RooCodeInc#7632) Co-authored-by: Roo Code <[email protected]> Co-authored-by: Daniel Riccio <[email protected]> * fix: add error transform to cryptic openAI SDK errors when API key is invalid (RooCodeInc#7586) Co-authored-by: Roo Code <[email protected]> Co-authored-by: Daniel Riccio <[email protected]> * feat: OpenAI Responses API service tiers (flex/priority) — UI selector, pricing, and tests (RooCodeInc#7646) Co-authored-by: Daniel Riccio <[email protected]> * fix: prevent countdown timer from showing in history for answered follow-up questions (RooCodeInc#7686) * fix: Fix the issue of Moonshot's maximum return token count being limited to 1024 (RooCodeInc#7673) Co-authored-by: ellipsis-dev[bot] <65095814+ellipsis-dev[bot]@users.noreply.github.com> Co-authored-by: roomote[bot] <219738659+roomote[bot]@users.noreply.github.com> * feat: update kimi-k2-0905-preview and kimi-k2-turbo-preview (RooCodeInc#7663) * Fix test * Release v3.26.7 (RooCodeInc#7691) * Delete .changeset/petite-rats-admire.md * feat: Add Kimi K2 0905 model to Groq, Moonshot, and Fireworks providers (RooCodeInc#7693) * Use an allowlist to keep the prompt default shell sane (RooCodeInc#7681) * Changeset version bump (RooCodeInc#7690) Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> Co-authored-by: Matt Rubens <[email protected]> * Fix: Improve WelcomeView styling and readability (RooCodeInc#7682) * fix: improve WelcomeView styling and readability - Reduced excessive padding from p-16 to p-6 - Removed excessive bold text throughout - Made provider cards more compact with smaller icons (32x32px) - Increased introduction text size from text-sm to text-base for better visibility - Centered the main greeting title - Improved visual hierarchy with proper text sizing and spacing - Added subtle borders and improved color contrast * fix: remove undefined color class from incentive text Removed the text-vscode-warningForeground class as it wasn't defined in index.css. The incentive text now uses default color which looks good. * feat: add Kimi K2-0905 model to Chutes provider (RooCodeInc#7701) Co-authored-by: Roo Code <[email protected]> * fix: handle array paths from VSCode terminal profiles (RooCodeInc#7697) * fix: handle array paths from VSCode terminal profiles - Updated terminal profile interfaces to support string | string[] for path property - Added normalizeShellPath helper to safely extract first element from array paths - Modified isShellAllowed to handle both string and array inputs - Updated getWindowsShellFromVSCode, getMacShellFromVSCode, and getLinuxShellFromVSCode to use normalizeShellPath - Added comprehensive tests for array path handling Fixes RooCodeInc#7695 * feat: add validateShellPath export for robust shell validation - Created validateShellPath as a public API for shell path validation - Refactored internal validation logic into isShellAllowedInternal - Added comprehensive test coverage for all edge cases - Maintains backward compatibility with deprecated isShellAllowed - Handles arrays, strings, null, undefined, and nested arrays gracefully * Simplify roomote's work a little --------- Co-authored-by: Roo Code <[email protected]> Co-authored-by: John Richmond <[email protected]> * Edit/Delete User Message (RooCodeInc#7447) * fix: prevent stack overflow in codebase indexing for large projects (RooCodeInc#7712) * fix: identify mcp and slash command config path in multiple folder workspace (RooCodeInc#6904) * fix: resolve CI e2e test ETIMEDOUT errors when downloading VS Code (RooCodeInc#7583) * fix: Tackling Race/State condition issue by Changing the Code Design for Gemini Grounding Sources (RooCodeInc#7434) Co-authored-by: daniel-lxs <[email protected]> Co-authored-by: Matt Rubens <[email protected]> * fix: preserve context by retrying with full conversation on invalid previous_response_id (RooCodeInc#7714) * chore: add changeset for v3.26.8 (RooCodeInc#7715) * feat(checkpoints): create checkpoint when user sends a message (RooCodeInc#7713) * feat(checkpoints): create checkpoint on user message send * fix(checkpoints): suppress implicit user-message checkpoint row; keep current checkpoint updated without a chat row * Fix checkpoint suppression for user messages - Propagate suppressMessage flag through event chain properly - Update ChatView to check checkpoint metadata for suppressMessage flag - Ensure checkpoint messages are created but not rendered when suppressed - Fix bug where checkpointSave(false) should have been checkpointSave(true) * fix: only create checkpoint on user message when files have changed - Changed allowEmpty from true to false in checkpointSave call - Checkpoints will now only be created when there are actual file changes - This avoids creating empty commits in the shadow git repository * test: update checkpoint test to include suppressMessage parameter - Fixed test expectation to match the new function signature - saveCheckpoint now expects both allowEmpty and suppressMessage parameters --------- Co-authored-by: Roo Code <[email protected]> Co-authored-by: Hannes Rudolph <[email protected]> Co-authored-by: Daniel Riccio <[email protected]> * Bump to 3.27.0 (RooCodeInc#7719) * Changeset version bump (RooCodeInc#7716) Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> Co-authored-by: Matt Rubens <[email protected]> * fix: update DeepSeek pricing to new unified rates effective Sept 5, 2025 (RooCodeInc#7687) - Updated deepseek-chat pricing: $0.56 input (cache miss), $0.07 (cache hit), $1.68 output - Updated deepseek-reasoner pricing: same unified rates as deepseek-chat - Both models now have identical pricing as per DeepSeek announcement - Pricing takes effect at 16:00 UTC, Sept 5th, 2025 Fixes RooCodeInc#7685 Co-authored-by: Roo Code <[email protected]> * feat: replace cloud waitlist ad with direct Cloud link in navigation (RooCodeInc#7742) Co-authored-by: Roo Code <[email protected]> * feat: show dash instead of zero for missing data on evals page (RooCodeInc#7748) Co-authored-by: Roo Code <[email protected]> * Feature/update vertex ai models and regions (RooCodeInc#7727) * Add model info to eval runs table (RooCodeInc#7749) * refactor(utils): simplify shell detection logic * Merge remote-tracking branch 'upstream/main' into roo-to-main * test: update shell detection test expectation and mocks * test: add mock cleanup in shell detection tests * test: update shell detection tests to prioritize PowerShell 7 --------- Co-authored-by: Matt Rubens <[email protected]> Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> Co-authored-by: Josh <[email protected]> Co-authored-by: daniel-lxs <[email protected]> Co-authored-by: cte <[email protected]> Co-authored-by: Daniel <[email protected]> Co-authored-by: ellipsis-dev[bot] <65095814+ellipsis-dev[bot]@users.noreply.github.com> Co-authored-by: roomote[bot] <219738659+roomote[bot]@users.noreply.github.com> Co-authored-by: Roo Code <[email protected]> Co-authored-by: mrubens <[email protected]> Co-authored-by: Hannes Rudolph <[email protected]> Co-authored-by: Chris Hasson <[email protected]> Co-authored-by: Chris Hasson <[email protected]> Co-authored-by: John Richmond <[email protected]> Co-authored-by: Piotr Wilkin (ilintar) <[email protected]> Co-authored-by: Christiaan Arnoldus <[email protected]> Co-authored-by: Bruno Bergher <[email protected]> Co-authored-by: Mohammad Danaee nia <[email protected]> Co-authored-by: 淡草 <[email protected]> Co-authored-by: WangXiaolong <[email protected]> Co-authored-by: Peter Dave Hello <[email protected]> Co-authored-by: Thach Nguyen <[email protected]> Co-authored-by: CellenLee <[email protected]> Co-authored-by: NaccOll <[email protected]> Co-authored-by: Ton Hoang Nguyen (Bill) <[email protected]> Co-authored-by: ssweens <[email protected]>
1 parent 90b35b1 commit c3d32bd

File tree

171 files changed

+7750
-1370
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

171 files changed

+7750
-1370
lines changed

.github/workflows/code-qa.yml

Lines changed: 32 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -90,22 +90,38 @@ jobs:
9090
# - name: Create .env.local file
9191
# working-directory: apps/vscode-e2e
9292
# run: echo "OPENROUTER_API_KEY=${{ secrets.OPENROUTER_API_KEY }}" > .env.local
93+
# - name: Set VS Code test version
94+
# run: echo "VSCODE_VERSION=1.101.2" >> $GITHUB_ENV
95+
# - name: Cache VS Code test runtime
96+
# uses: actions/cache@v4
97+
# with:
98+
# path: apps/vscode-e2e/.vscode-test
99+
# key: ${{ runner.os }}-vscode-test-${{ env.VSCODE_VERSION }}
100+
# - name: Pre-download VS Code test runtime with retry
101+
# working-directory: apps/vscode-e2e
102+
# run: |
103+
# for attempt in 1 2 3; do
104+
# echo "Download attempt $attempt of 3..."
105+
# node -e "
106+
# const { downloadAndUnzipVSCode } = require('@vscode/test-electron');
107+
# downloadAndUnzipVSCode({ version: process.env.VSCODE_VERSION || '1.101.2' })
108+
# .then(() => {
109+
# console.log('✅ VS Code test runtime downloaded successfully');
110+
# process.exit(0);
111+
# })
112+
# .catch(err => {
113+
# console.error('❌ Failed to download VS Code (attempt $attempt):', err);
114+
# process.exit(1);
115+
# });
116+
# " && break || {
117+
# if [ $attempt -eq 3 ]; then
118+
# echo "All download attempts failed"
119+
# exit 1
120+
# fi
121+
# echo "Retrying in 5 seconds..."
122+
# sleep 5
123+
# }
124+
# done
93125
# - name: Run integration tests
94126
# working-directory: apps/vscode-e2e
95127
# run: xvfb-run -a pnpm test:ci
96-
97-
# notify-slack-on-failure:
98-
# runs-on: ubuntu-latest
99-
# needs: [check-translations, knip, compile, unit-test, integration-test]
100-
# if: ${{ always() && github.event_name == 'push' && github.ref == 'refs/heads/main' && contains(needs.*.result, 'failure') }}
101-
# steps:
102-
# - name: Checkout code
103-
# uses: actions/checkout@v4
104-
105-
# - name: Send Slack notification on failure
106-
# uses: ./.github/actions/slack-notify
107-
# with:
108-
# webhook-url: ${{ secrets.SLACK_WEBHOOK_URL }}
109-
# channel: "#ci"
110-
# workflow-name: "Code QA"
111-
# failed-jobs: ${{ toJSON(needs) }}

.github/workflows/discord-pr-notify.yml

Lines changed: 0 additions & 26 deletions
This file was deleted.

apps/vscode-e2e/src/runTest.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,7 @@ async function main() {
3838
extensionTestsPath,
3939
launchArgs: [testWorkspace],
4040
extensionTestsEnv,
41+
version: process.env.VSCODE_VERSION || "1.101.2",
4142
})
4243

4344
// Clean up the temporary workspace

apps/web-roo-code/next.config.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ const nextConfig: NextConfig = {
2121
destination: "https://roocode.com/:path*",
2222
permanent: true,
2323
},
24-
// Redirect cloud waitlist to Notion page
24+
// Redirect cloud waitlist to Notion page (kept for extension compatibility)
2525
{
2626
source: "/cloud-waitlist",
2727
destination: "https://roo-code.notion.site/238fd1401b0a8087b858e1ad431507cf?pvs=105",
Lines changed: 24 additions & 101 deletions
Original file line numberDiff line numberDiff line change
@@ -1,59 +1,33 @@
11
"use client"
22

33
import { useMemo } from "react"
4-
import { ScatterChart, Scatter, XAxis, YAxis, Label, Customized, Cross } from "recharts"
5-
6-
import type { TaskMetrics, Run } from "@roo-code/evals"
74

85
import { formatTokens, formatCurrency, formatDuration, formatScore } from "@/lib"
96
import { useOpenRouterModels } from "@/lib/hooks"
10-
import {
11-
ChartContainer,
12-
ChartTooltip,
13-
ChartTooltipContent,
14-
ChartConfig,
15-
ChartLegend,
16-
ChartLegendContent,
17-
Table,
18-
TableBody,
19-
TableCaption,
20-
TableCell,
21-
TableHead,
22-
TableHeader,
23-
TableRow,
24-
} from "@/components/ui"
7+
import { Table, TableBody, TableCaption, TableCell, TableHead, TableHeader, TableRow } from "@/components/ui"
8+
9+
import type { EvalRun } from "./types"
10+
import { Plot } from "./plot"
2511

26-
export function Evals({
27-
runs,
28-
}: {
29-
runs: (Run & {
30-
label: string
31-
score: number
32-
languageScores?: Record<"go" | "java" | "javascript" | "python" | "rust", number>
33-
taskMetrics: TaskMetrics
34-
modelId?: string
35-
})[]
36-
}) {
12+
export function Evals({ runs }: { runs: EvalRun[] }) {
3713
const { data: openRouterModels } = useOpenRouterModels()
3814

39-
const tableData = useMemo(
15+
const tableData: (EvalRun & { label: string; cost: number })[] = useMemo(
4016
() =>
41-
runs.map((run) => ({
42-
...run,
43-
label: run.description || run.model,
44-
score: run.score,
45-
cost: run.taskMetrics.cost,
46-
model: openRouterModels?.[run.modelId ?? ""],
47-
modelInfo: openRouterModels?.[run.modelId ?? ""]?.modelInfo,
48-
})),
49-
[runs, openRouterModels],
50-
)
17+
runs.map((run) => {
18+
const openRouterModelInfo = openRouterModels?.[run.modelId ?? ""]?.modelInfo
5119

52-
const chartData = useMemo(() => tableData.filter(({ cost }) => cost < 100), [tableData])
53-
54-
const chartConfig = useMemo(
55-
() => chartData.reduce((acc, run) => ({ ...acc, [run.label]: run }), {} as ChartConfig),
56-
[chartData],
20+
return {
21+
...run,
22+
label: run.name || run.description || run.model,
23+
cost: run.taskMetrics.cost,
24+
description: run.description ?? openRouterModelInfo?.description ?? null,
25+
contextWindow: run.contextWindow ?? openRouterModelInfo?.contextWindow ?? null,
26+
inputPrice: run.inputPrice ?? openRouterModelInfo?.inputPrice ?? null,
27+
outputPrice: run.outputPrice ?? openRouterModelInfo?.outputPrice ?? null,
28+
}
29+
}),
30+
[runs, openRouterModels],
5731
)
5832

5933
return (
@@ -127,17 +101,15 @@ export function Evals({
127101
<TableBody className="font-mono">
128102
{tableData.map((run) => (
129103
<TableRow key={run.id}>
130-
<TableCell title={run.model?.description}>
104+
<TableCell title={run.description ?? undefined}>
131105
<div className="font-sans">{run.label}</div>
132-
<div className="text-xs opacity-50">
133-
{formatTokens(run.modelInfo?.contextWindow ?? 0)}
134-
</div>
106+
<div className="text-xs opacity-50">{formatTokens(run.contextWindow)}</div>
135107
</TableCell>
136108
<TableCell className="border-r">
137109
<div className="flex flex-row gap-2">
138-
<div>{formatCurrency(run.modelInfo?.inputPrice ?? 0)}</div>
110+
<div>{formatCurrency(run.inputPrice)}</div>
139111
<div className="opacity-25">/</div>
140-
<div>{formatCurrency(run.modelInfo?.outputPrice ?? 0)}</div>
112+
<div>{formatCurrency(run.outputPrice)}</div>
141113
</div>
142114
</TableCell>
143115
<TableCell className="font-mono">{formatDuration(run.taskMetrics.duration)}</TableCell>
@@ -169,58 +141,9 @@ export function Evals({
169141
))}
170142
</TableBody>
171143
<TableCaption>
172-
<div className="pb-4 font-medium">Cost Versus Score</div>
173-
<ChartContainer config={chartConfig} className="h-[500px] w-full">
174-
<ScatterChart margin={{ top: 0, right: 0, bottom: 0, left: 20 }}>
175-
<XAxis
176-
type="number"
177-
dataKey="cost"
178-
name="Cost"
179-
domain={[
180-
(dataMin: number) => Math.round((dataMin - 5) / 5) * 5,
181-
(dataMax: number) => Math.round((dataMax + 5) / 5) * 5,
182-
]}
183-
tickFormatter={(value) => formatCurrency(value)}>
184-
<Label value="Cost" position="bottom" offset={0} />
185-
</XAxis>
186-
<YAxis
187-
type="number"
188-
dataKey="score"
189-
name="Score"
190-
domain={[
191-
(dataMin: number) => Math.max(0, Math.round((dataMin - 5) / 5) * 5),
192-
(dataMax: number) => Math.min(100, Math.round((dataMax + 5) / 5) * 5),
193-
]}
194-
tickFormatter={(value) => `${value}%`}>
195-
<Label value="Score" angle={-90} position="left" dy={-15} />
196-
</YAxis>
197-
<ChartTooltip content={<ChartTooltipContent labelKey="label" hideIndicator />} />
198-
<Customized component={renderQuadrant} />
199-
{chartData.map((d, i) => (
200-
<Scatter key={d.label} name={d.label} data={[d]} fill={`hsl(var(--chart-${i + 1}))`} />
201-
))}
202-
<ChartLegend content={<ChartLegendContent />} />
203-
</ScatterChart>
204-
</ChartContainer>
205-
<div className="py-4 text-xs opacity-50">
206-
(Note: Very expensive models are excluded from the scatter plot.)
207-
</div>
144+
<Plot tableData={tableData} />
208145
</TableCaption>
209146
</Table>
210147
</div>
211148
)
212149
}
213-
214-
// eslint-disable-next-line @typescript-eslint/no-explicit-any
215-
const renderQuadrant = (props: any) => (
216-
<Cross
217-
width={props.width}
218-
height={props.height}
219-
x={props.width / 2 + 35}
220-
y={props.height / 2 - 15}
221-
top={0}
222-
left={0}
223-
stroke="currentColor"
224-
opacity={0.1}
225-
/>
226-
)

0 commit comments

Comments
 (0)