Skip to content

Proxy browser requests in remote workspaces#311568

Draft
kycutler wants to merge 7 commits intomainfrom
kycutler/remoteproxy
Draft

Proxy browser requests in remote workspaces#311568
kycutler wants to merge 7 commits intomainfrom
kycutler/remoteproxy

Conversation

@kycutler
Copy link
Copy Markdown
Contributor

No description provided.

Co-authored-by: Copilot <copilot@github.com>
Copilot AI review requested due to automatic review settings April 21, 2026 00:17
@kycutler kycutler self-assigned this Apr 21, 2026
@github-actions
Copy link
Copy Markdown
Contributor

github-actions Bot commented Apr 21, 2026

Screenshot Changes

Base: 498c4699 Current: b796e7bf

Changed (1)

editor/inlineCompletions/other/JumpToHint/Dark
Before After
before after

Copy link
Copy Markdown
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR enables Integrated Browser views to route network traffic through a remote workspace by introducing a shared-process SOCKS5 tunnel proxy, wiring proxy configuration into BrowserView session creation, and adding UI/context cues for remote sessions.

Changes:

  • Add a shared-process SOCKS5 TunnelProxy service and wire it into the desktop workbench + shared process IPC.
  • Extend BrowserView session creation to use IBrowserSessionOptions (scope/workspaceId/proxyUrl) and expose isRemoteSession in state/model.
  • Add a remote-session indicator in the BrowserView URL bar and adjust related UI/layout and localhost-link opening behavior for remote.
Show a summary per file
File Description
src/vs/workbench/workbench.desktop.main.ts Loads the electron-browser registration for the shared-process tunnel proxy service.
src/vs/workbench/contrib/browserView/electron-browser/media/browser.css Adjusts URL container alignment and adds styles for a remote-session indicator widget area.
src/vs/workbench/contrib/browserView/electron-browser/features/browserTabManagementFeatures.ts Updates localhost external opener to prefer sourceUri in remote sessions.
src/vs/workbench/contrib/browserView/electron-browser/features/browserRemoteIndicator.ts New contribution: URL-bar indicator + context key reflecting remote-session usage.
src/vs/workbench/contrib/browserView/electron-browser/features/browserDataStorageFeatures.ts Adds 'default' option for browser data storage setting with updated descriptions.
src/vs/workbench/contrib/browserView/electron-browser/browserViewWorkbenchService.ts Starts/stops tunnel proxy for remote authority and passes proxy URL into model initialization.
src/vs/workbench/contrib/browserView/electron-browser/browserView.contribution.ts Registers the new remote indicator contribution.
src/vs/workbench/contrib/browserView/electron-browser/browserEditor.ts Adds “pre-URL widgets” slot in the URL container and renders contributed widgets there.
src/vs/workbench/contrib/browserView/common/browserView.ts Plumbs proxyUrl + storage selection into initialization and adds isRemoteSession to the model.
src/vs/platform/tunnel/test/node/tunnelProxy.test.ts Adds unit tests for SOCKS5 greeting/CONNECT handling and basic lifecycle behavior.
src/vs/platform/tunnel/node/tunnelProxy.ts New SOCKS5 proxy implementation that tunnels TCP connections through the remote agent tunnel.
src/vs/platform/tunnel/node/sharedProcessTunnelProxyService.ts New shared-process service managing per-authority proxy instances with ref counting.
src/vs/platform/tunnel/electron-browser/sharedProcessTunnelProxyService.ts Registers the shared-process proxy service client-side (electron-browser).
src/vs/platform/tunnel/common/sharedProcessTunnelProxyService.ts Defines the shared-process proxy service interface + IPC channel name.
src/vs/platform/browserView/electron-main/browserViewMainService.ts Updates BrowserView creation to accept IBrowserSessionOptions.
src/vs/platform/browserView/electron-main/browserView.ts Adds isRemoteSession to BrowserView state returned to renderer.
src/vs/platform/browserView/electron-main/browserSession.ts Creates sessions based on IBrowserSessionOptions and applies session.setProxy() when proxying.
src/vs/platform/browserView/common/browserView.ts Adds IBrowserSessionOptions and updates IBrowserViewService API + state shape.
src/vs/code/electron-utility/sharedProcess/sharedProcessMain.ts Registers the proxy service in the shared process and exposes its IPC channel.

Copilot's findings

  • Files reviewed: 19/19 changed files
  • Comments generated: 4

Comment thread src/vs/platform/tunnel/node/tunnelProxy.ts
Comment thread src/vs/platform/tunnel/node/sharedProcessTunnelProxyService.ts
Comment thread src/vs/workbench/contrib/browserView/common/browserView.ts
kycutler and others added 6 commits April 21, 2026 07:50
Co-authored-by: Copilot <copilot@github.com>
Co-authored-by: Copilot <copilot@github.com>
Co-authored-by: Copilot <copilot@github.com>
Co-authored-by: Copilot <copilot@github.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants