Skip to content

Conversation

@hannesrudolph
Copy link
Collaborator

@hannesrudolph hannesrudolph commented Feb 11, 2026

Summary

Complete removal of Roo Code's built-in Puppeteer-based browser automation (browser-use) functionality. Dedicated tools like Playwright MCP have surpassed what our built-in integration could offer, and maintaining it added significant surface area to the codebase. By removing it, we narrow our focus to what Roo Code does best and enable faster iteration on a smaller, more focused codebase. This is part of a broader cleanup initiative to reduce complexity and sharpen our development focus.

Users who need browser automation can integrate Playwright MCP or similar tools via the MCP server ecosystem — a more powerful and maintainable approach than our previous built-in solution.

Changes

Deleted subsystems (~28 files):

  • src/services/browser/ — BrowserSession, UrlContentFetcher, browserDiscovery + tests
  • src/core/tools/BrowserActionTool.ts + coordinate scaling and screenshot tests
  • src/core/prompts/tools/native-tools/browser_action.ts — prompt template
  • src/core/webview/BrowserSessionPanelManager.ts — panel management
  • webview-ui/src/components/browser-session/ — browser session panel UI
  • webview-ui/src/components/settings/BrowserSettings.tsx — settings panel
  • webview-ui/src/components/chat/BrowserActionRow.tsx, BrowserSessionRow.tsx, BrowserSessionStatusRow.tsx + tests
  • webview-ui/src/browser-panel.tsx, webview-ui/browser-panel.html
  • apps/cli/src/ui/components/tools/BrowserTool.tsx
  • src/shared/browserUtils.ts

Type removals (packages/types):

  • Removed "browser" from toolGroups, "browser_action" from tool names
  • Removed BrowserAction, browserActions, BrowserActionParams, ClineSayBrowserAction
  • Removed browser_action_launch, browser_action, browser_action_result, browser_session_status message types
  • Removed alwaysAllowBrowser, browserToolEnabled, browserViewportSize, remoteBrowserEnabled, remoteBrowserHost, isBrowserSessionActive from state/settings
  • Removed all browser-related webview message types

Dependencies removed:

  • puppeteer-chromium-resolver and puppeteer-core from src/package.json and apps/vscode-nightly/build/package.json

i18n cleanup:

  • Removed browser-related keys from chat.json, settings.json, prompts.json across all 18 locales (54 files)

Test updates (~40 files):

  • Removed browser-specific test cases, fixtures, and assertions while preserving all non-browser test coverage

Stats: 165 files changed, 84 insertions, 8302 deletions

Verification

  • TypeScript: tsc --noEmit passes across src/, webview-ui/, packages/types/, apps/cli/
  • Lint: All 14 packages pass
  • Tests: All test suites pass
  • Grep: Zero browser-use references remain in source

@dosubot dosubot bot added the size:L This PR changes 100-499 lines, ignoring generated files. label Feb 11, 2026
@ellipsis-dev
Copy link
Contributor

ellipsis-dev bot commented Feb 11, 2026

⚠️ This PR is too big for Ellipsis, but support for larger PRs is coming soon. If you want us to prioritize this feature, let us know at help@ellipsis.dev


Generated with ❤️ by ellipsis.dev

@roomote
Copy link
Contributor

roomote bot commented Feb 11, 2026

Rooviewer Clock   See task

All previously flagged issues remain resolved. The latest commit (4a24523) adds a type assertion to groupEntryArraySchema to fix zodResolver generic inference broken by z.preprocess -- reviewed with no new issues found.

  • isStealthModel accidentally dropped from generateSystemPrompt.ts -- restored via temporary API handler with proper error handling
  • Residual browser settings screenshotQuality and cachedChromeHostUrl remain in GlobalSettings / ExtensionState with no consumers -- fully removed
  • containsXmlToolMarkup in presentAssistantMessage.ts is dead code -- removed
Previous reviews

Mention @roomote in a comment to request specific changes to this pull request or fix all unresolved issues.

@dosubot dosubot bot added the lgtm This PR has been approved by a maintainer label Feb 11, 2026
@dosubot dosubot bot added size:XL This PR changes 500-999 lines, ignoring generated files. and removed size:L This PR changes 100-499 lines, ignoring generated files. labels Feb 11, 2026
@hannesrudolph hannesrudolph force-pushed the bye-bye-browser branch 2 times, most recently from 4e4b63d to ced265e Compare February 11, 2026 19:48
@dosubot dosubot bot added size:L This PR changes 100-499 lines, ignoring generated files. and removed size:XL This PR changes 500-999 lines, ignoring generated files. labels Feb 11, 2026
Remove all Puppeteer-based browser automation (browser_action tool, BrowserSession,
BrowserSessionPanelManager, browser settings, browser panel) from the codebase.

- Delete src/services/browser/ (BrowserSession, UrlContentFetcher, browserDiscovery)
- Delete BrowserActionTool and browser_action prompt template
- Delete BrowserSessionPanelManager and browser panel webview
- Delete BrowserSettings, BrowserActionRow, BrowserSessionRow UI components
- Remove browser from packages/types (tool groups, message types, state, settings)
- Remove browser from CLI agent and tool display
- Remove puppeteer-core and puppeteer-chromium-resolver dependencies
- Remove browser-related i18n keys across all 18 locales
- Update all test files to remove browser fixtures and assertions

165 files changed, 84 insertions(+), 8256 deletions(-)
… residuals and dead code

- Restore isStealthModel lookup in generateSystemPrompt.ts that was
  accidentally removed with the browser modelInfo fetch
- Remove residual screenshotQuality and cachedChromeHostUrl from
  GlobalSettings, ExtensionState, ClineProvider, and ExtensionStateContext
- Remove unused containsXmlToolMarkup function from presentAssistantMessage.ts
… validation

Add z.preprocess() to groupEntryArraySchema that filters out deprecated tool
groups (currently 'browser') before Zod schema validation runs. This ensures
users with older custom_modes.yaml or .roomodes files that include 'browser'
in their groups arrays don't get schema validation errors.

The fix is at the schema level, so it automatically protects all validation
entry points: CustomModesManager (load, watch, update, import), ContextProxy
(global settings), and ModesView (UI).

Adds 6 new test cases covering string groups, tuple groups, and edge cases.
@dosubot dosubot bot added size:XL This PR changes 500-999 lines, ignoring generated files. and removed size:L This PR changes 100-499 lines, ignoring generated files. labels Feb 12, 2026
…pile

z.preprocess erases the input type to `unknown`, which propagates
through modeConfigSchema → rooCodeSettingsSchema → createRunSchema
and breaks zodResolver generic inference in web-evals new-run form.

The assertion to `z.ZodType<GroupEntry[], z.ZodTypeDef, GroupEntry[]>`
restores proper input/output type alignment.
@hannesrudolph hannesrudolph merged commit fa9dff4 into main Feb 12, 2026
10 checks passed
@hannesrudolph hannesrudolph deleted the bye-bye-browser branch February 12, 2026 01:11
@github-project-automation github-project-automation bot moved this from New to Done in Roo Code Roadmap Feb 12, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

lgtm This PR has been approved by a maintainer size:XL This PR changes 500-999 lines, ignoring generated files.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants