feat(desktop,web): support Zed remote project deep links - #8866

Open
alextac98 wants to merge 1 commit into
pingdotgg:mainfrom
alextac98:feature/feat/zed-remote-deep-links
Open

feat(desktop,web): support Zed remote project deep links#8866
alextac98 wants to merge 1 commit into
pingdotgg:mainfrom
alextac98:feature/feat/zed-remote-deep-links

Conversation

@alextac98

@alextac98alextac98 commented Aug 31, 2026

Copy link
Copy Markdown

Implements the Zed remote-open use case tracked in Discussion #6801 (previously #7899). This uses the generalized remote-editor architecture rather than the dedicated Zed launcher approach from #4362.

What Changed

  • Add Zed editor as an option for opening code on a remote computer
  • As a part of this cahnge, also refactored slightly to make it easier to add new editors in the future with remote editor capabilities

Why

It is nice to have T3 Code open in your editor of choice, given that the editor supports remote editing.

UI Changes

Before:
image

After:
image

Video:

Screen.Recording.2026-08-30.at.11.56.07.PM-compressed.mp4

Checklist

  • This PR is small and focused
  • I explained what changed and why
  • I included before/after screenshots for any UI changes
  • I included a video for animation/interaction changes

Devin Review

Note

Medium Risk
Changes URL allowlisting and external-open security rules for custom protocol handlers; mistakes could block legitimate editor links or allow unsafe schemes.

Overview
Adds Open in Zed for remote SSH environments alongside VS Code, using zed://ssh/<host><path> deep links while VS Code forks keep the existing vscode-remote shape.

Editor contracts now use a shared RemoteEditorOpenDefinition (scheme, urlHost, sshPathPrefix) instead of a bare remoteScheme, so buildRemoteOpenUrl and Electron’s openExternal allowlist validate each editor’s URL pattern generically (including blocking credentials and malformed Zed links).

On desktop, hasProtocolHandler probes the OS via Electron so probeRemoteEditors can detect Zed/VS Code when the CLI is missing from PATH (e.g. Finder launches). Browser clients fall back to offering VS Code and Zed and rely on the OS handler. User docs describe remote editor opening behavior.

Reviewed by Cursor Bugbot for commit 0104f84. Bugbot is set up for automated code reviews on this repo. Configure here.

Note

Add Zed zed://ssh remote project deep link support across desktop and web

  • Replaces EditorDefinition.remoteScheme with a new RemoteEditorOpenDefinition type (scheme, urlHost, sshPathPrefix) in editor.ts, and adds a remoteOpen definition for Zed using zed://ssh/<host>/<path>
  • Generalizes buildRemoteOpenUrl to construct editor-specific deep links from the definition instead of hardcoded VS Code-style URLs
  • Adds ElectronShell.hasProtocolHandler in ElectronShell.ts using Electron.app.getApplicationNameForProtocol; probeRemoteEditors now includes editors with a registered OS protocol handler even when their CLI is absent from PATH
  • Updates isRemoteEditorUrl to validate URLs against per-editor definitions (scheme, host, path prefix, SSH target + project path) and reject malformed or non-SSH links
  • Expands the browser fallback editor list in remoteOpen.ts to include both vscode and zed
  • Behavioral Change: EditorDefinition.remoteScheme field is removed; any out-of-tree code referencing it must migrate to editor.remoteOpen. remoteSchemeForEditor is replaced by remoteOpenDefinitionForEditor

Macroscope summarized 0104f84.

- Detect installed editor protocol handlers on desktop
- Generate and validate editor-specific SSH links for Zed
- Document remote editor opening behavior
@coderabbitai

Copy link
Copy Markdown

Important

Review skipped

Auto reviews are disabled on this repository. Please check the settings in the CodeRabbit UI or the .coderabbit.yaml file in this repository. To trigger a single review, invoke the @coderabbitai review command.

⚙️ Run configuration

Configuration used: Repository UI

Review profile: CHILL

Plan: Pro Plus

Run ID: 4809c39d-a419-482e-84e4-87e812653c07

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review

Warning

Your free Security trial is over. An organization admin can activate Security or dismiss this notice.


Comment @coderabbitai help to get the list of available commands.

@github-actionsgithub-actionsBot added vouch:unvouched PR author is not yet trusted in the VOUCHED list. size:L 100-499 changed lines (additions + deletions). labels Aug 31, 2026
@macroscopeapp

Copy link
Copy Markdown
Contributor

Approvability

Verdict: Not approved

Macroscope's review found this PR not approvable — This cross-cutting feature adds Zed remote-editor deep links, expands desktop custom-protocol handling, and changes the browser’s default remote-editor choices. The product-default change and security-sensitive external launching warrant human review.

You can add or adjust custom eligibility rules. Learn more.

@juliusmarminge

Copy link
Copy Markdown
Member

Related implementation: #7900 covers the same Zed SSH links and notes that Zed Preview may need to register the shared zed:// protocol before remote links open correctly. Please retain that setup guidance in this implementation.

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

size:L100-499 changed lines (additions + deletions).vouch:unvouchedPR author is not yet trusted in the VOUCHED list.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants

@alextac98@juliusmarminge
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Add copy buttons to all
 blocks\n(function() {\n function addCopyButtons() {\n document.querySelectorAll('pre code').forEach(function(codeBlock) {\n if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;\n codeBlock.parentElement.setAttribute('data-copy-added', 'true');\n \n var btn = document.createElement('button');\n btn.textContent = 'Copy';\n btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';\n btn.onmouseover = function() { this.style.opacity = '1'; };\n btn.onmouseout = function() { this.style.opacity = '0.7'; };\n btn.onclick = function() {\n navigator.clipboard.writeText(codeBlock.textContent).then(function() {\n btn.textContent = 'Copied!';\n setTimeout(function() { btn.textContent = 'Copy'; }, 1500);\n });\n };\n codeBlock.parentElement.style.position = 'relative';\n codeBlock.parentElement.appendChild(btn);\n });\n }\n \n addCopyButtons();\n \n // Re-run on dynamic content\n var observer = new MutationObserver(addCopyButtons);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Add Copy Buttons to Code Blocks");
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
Skip to content

feat(desktop,web): support Zed remote project deep links - #8866

Open
alextac98 wants to merge 1 commit into
pingdotgg:mainfrom
alextac98:feature/feat/zed-remote-deep-links
Open

feat(desktop,web): support Zed remote project deep links#8866
alextac98 wants to merge 1 commit into
pingdotgg:mainfrom
alextac98:feature/feat/zed-remote-deep-links

Conversation

@alextac98

@alextac98alextac98 commented Aug 31, 2026

Copy link
Copy Markdown

Implements the Zed remote-open use case tracked in Discussion #6801 (previously #7899). This uses the generalized remote-editor architecture rather than the dedicated Zed launcher approach from #4362.

What Changed

  • Add Zed editor as an option for opening code on a remote computer
  • As a part of this cahnge, also refactored slightly to make it easier to add new editors in the future with remote editor capabilities

Why

It is nice to have T3 Code open in your editor of choice, given that the editor supports remote editing.

UI Changes

Before:
image

After:
image

Video:

Screen.Recording.2026-08-30.at.11.56.07.PM-compressed.mp4

Checklist

  • This PR is small and focused
  • I explained what changed and why
  • I included before/after screenshots for any UI changes
  • I included a video for animation/interaction changes

Devin Review

Note

Medium Risk
Changes URL allowlisting and external-open security rules for custom protocol handlers; mistakes could block legitimate editor links or allow unsafe schemes.

Overview
Adds Open in Zed for remote SSH environments alongside VS Code, using zed://ssh/<host><path> deep links while VS Code forks keep the existing vscode-remote shape.

Editor contracts now use a shared RemoteEditorOpenDefinition (scheme, urlHost, sshPathPrefix) instead of a bare remoteScheme, so buildRemoteOpenUrl and Electron’s openExternal allowlist validate each editor’s URL pattern generically (including blocking credentials and malformed Zed links).

On desktop, hasProtocolHandler probes the OS via Electron so probeRemoteEditors can detect Zed/VS Code when the CLI is missing from PATH (e.g. Finder launches). Browser clients fall back to offering VS Code and Zed and rely on the OS handler. User docs describe remote editor opening behavior.

Reviewed by Cursor Bugbot for commit 0104f84. Bugbot is set up for automated code reviews on this repo. Configure here.

Note

Add Zed zed://ssh remote project deep link support across desktop and web

  • Replaces EditorDefinition.remoteScheme with a new RemoteEditorOpenDefinition type (scheme, urlHost, sshPathPrefix) in editor.ts, and adds a remoteOpen definition for Zed using zed://ssh/<host>/<path>
  • Generalizes buildRemoteOpenUrl to construct editor-specific deep links from the definition instead of hardcoded VS Code-style URLs
  • Adds ElectronShell.hasProtocolHandler in ElectronShell.ts using Electron.app.getApplicationNameForProtocol; probeRemoteEditors now includes editors with a registered OS protocol handler even when their CLI is absent from PATH
  • Updates isRemoteEditorUrl to validate URLs against per-editor definitions (scheme, host, path prefix, SSH target + project path) and reject malformed or non-SSH links
  • Expands the browser fallback editor list in remoteOpen.ts to include both vscode and zed
  • Behavioral Change: EditorDefinition.remoteScheme field is removed; any out-of-tree code referencing it must migrate to editor.remoteOpen. remoteSchemeForEditor is replaced by remoteOpenDefinitionForEditor

Macroscope summarized 0104f84.

- Detect installed editor protocol handlers on desktop
- Generate and validate editor-specific SSH links for Zed
- Document remote editor opening behavior
@coderabbitai

Copy link
Copy Markdown

Important

Review skipped

Auto reviews are disabled on this repository. Please check the settings in the CodeRabbit UI or the .coderabbit.yaml file in this repository. To trigger a single review, invoke the @coderabbitai review command.

⚙️ Run configuration

Configuration used: Repository UI

Review profile: CHILL

Plan: Pro Plus

Run ID: 4809c39d-a419-482e-84e4-87e812653c07

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review

Warning

Your free Security trial is over. An organization admin can activate Security or dismiss this notice.


Comment @coderabbitai help to get the list of available commands.

@github-actionsgithub-actionsBot added vouch:unvouched PR author is not yet trusted in the VOUCHED list. size:L 100-499 changed lines (additions + deletions). labels Aug 31, 2026
@macroscopeapp

Copy link
Copy Markdown
Contributor

Approvability

Verdict: Not approved

Macroscope's review found this PR not approvable — This cross-cutting feature adds Zed remote-editor deep links, expands desktop custom-protocol handling, and changes the browser’s default remote-editor choices. The product-default change and security-sensitive external launching warrant human review.

You can add or adjust custom eligibility rules. Learn more.

@juliusmarminge

Copy link
Copy Markdown
Member

Related implementation: #7900 covers the same Zed SSH links and notes that Zed Preview may need to register the shared zed:// protocol before remote links open correctly. Please retain that setup guidance in this implementation.

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

size:L100-499 changed lines (additions + deletions).vouch:unvouchedPR author is not yet trusted in the VOUCHED list.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants

@alextac98@juliusmarminge
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Force GitHub README to respect dark mode\n(function() {\n var style = document.createElement('style');\n style.textContent = '\n .markdown-body {\n color-scheme: dark light;\n }\n .markdown-body pre { background: #161b22 !important; }\n .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; }\n .markdown-body table th, .markdown-body table td { border-color: #30363d !important; }\n .markdown-body img { background: #0d1117; }\n .markdown-body blockquote { border-left-color: #8b949e; }\n .markdown-body hr { border-color: #30363d; }\n ';\n document.head.appendChild(style);\n})();", "GitHub Dark Mode README Fix"); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

feat(desktop,web): support Zed remote project deep links - #8866

Open
alextac98 wants to merge 1 commit into
pingdotgg:mainfrom
alextac98:feature/feat/zed-remote-deep-links
Open

feat(desktop,web): support Zed remote project deep links#8866
alextac98 wants to merge 1 commit into
pingdotgg:mainfrom
alextac98:feature/feat/zed-remote-deep-links

Conversation

@alextac98

@alextac98alextac98 commented Aug 31, 2026

Copy link
Copy Markdown

Implements the Zed remote-open use case tracked in Discussion #6801 (previously #7899). This uses the generalized remote-editor architecture rather than the dedicated Zed launcher approach from #4362.

What Changed

  • Add Zed editor as an option for opening code on a remote computer
  • As a part of this cahnge, also refactored slightly to make it easier to add new editors in the future with remote editor capabilities

Why

It is nice to have T3 Code open in your editor of choice, given that the editor supports remote editing.

UI Changes

Before:
image

After:
image

Video:

Screen.Recording.2026-08-30.at.11.56.07.PM-compressed.mp4

Checklist

  • This PR is small and focused
  • I explained what changed and why
  • I included before/after screenshots for any UI changes
  • I included a video for animation/interaction changes

Devin Review

Note

Medium Risk
Changes URL allowlisting and external-open security rules for custom protocol handlers; mistakes could block legitimate editor links or allow unsafe schemes.

Overview
Adds Open in Zed for remote SSH environments alongside VS Code, using zed://ssh/<host><path> deep links while VS Code forks keep the existing vscode-remote shape.

Editor contracts now use a shared RemoteEditorOpenDefinition (scheme, urlHost, sshPathPrefix) instead of a bare remoteScheme, so buildRemoteOpenUrl and Electron’s openExternal allowlist validate each editor’s URL pattern generically (including blocking credentials and malformed Zed links).

On desktop, hasProtocolHandler probes the OS via Electron so probeRemoteEditors can detect Zed/VS Code when the CLI is missing from PATH (e.g. Finder launches). Browser clients fall back to offering VS Code and Zed and rely on the OS handler. User docs describe remote editor opening behavior.

Reviewed by Cursor Bugbot for commit 0104f84. Bugbot is set up for automated code reviews on this repo. Configure here.

Note

Add Zed zed://ssh remote project deep link support across desktop and web

  • Replaces EditorDefinition.remoteScheme with a new RemoteEditorOpenDefinition type (scheme, urlHost, sshPathPrefix) in editor.ts, and adds a remoteOpen definition for Zed using zed://ssh/<host>/<path>
  • Generalizes buildRemoteOpenUrl to construct editor-specific deep links from the definition instead of hardcoded VS Code-style URLs
  • Adds ElectronShell.hasProtocolHandler in ElectronShell.ts using Electron.app.getApplicationNameForProtocol; probeRemoteEditors now includes editors with a registered OS protocol handler even when their CLI is absent from PATH
  • Updates isRemoteEditorUrl to validate URLs against per-editor definitions (scheme, host, path prefix, SSH target + project path) and reject malformed or non-SSH links
  • Expands the browser fallback editor list in remoteOpen.ts to include both vscode and zed
  • Behavioral Change: EditorDefinition.remoteScheme field is removed; any out-of-tree code referencing it must migrate to editor.remoteOpen. remoteSchemeForEditor is replaced by remoteOpenDefinitionForEditor

Macroscope summarized 0104f84.

- Detect installed editor protocol handlers on desktop
- Generate and validate editor-specific SSH links for Zed
- Document remote editor opening behavior
@coderabbitai

Copy link
Copy Markdown

Important

Review skipped

Auto reviews are disabled on this repository. Please check the settings in the CodeRabbit UI or the .coderabbit.yaml file in this repository. To trigger a single review, invoke the @coderabbitai review command.

⚙️ Run configuration

Configuration used: Repository UI

Review profile: CHILL

Plan: Pro Plus

Run ID: 4809c39d-a419-482e-84e4-87e812653c07

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review

Warning

Your free Security trial is over. An organization admin can activate Security or dismiss this notice.


Comment @coderabbitai help to get the list of available commands.

@github-actionsgithub-actionsBot added vouch:unvouched PR author is not yet trusted in the VOUCHED list. size:L 100-499 changed lines (additions + deletions). labels Aug 31, 2026
@macroscopeapp

Copy link
Copy Markdown
Contributor

Approvability

Verdict: Not approved

Macroscope's review found this PR not approvable — This cross-cutting feature adds Zed remote-editor deep links, expands desktop custom-protocol handling, and changes the browser’s default remote-editor choices. The product-default change and security-sensitive external launching warrant human review.

You can add or adjust custom eligibility rules. Learn more.

@juliusmarminge

Copy link
Copy Markdown
Member

Related implementation: #7900 covers the same Zed SSH links and notes that Zed Preview may need to register the shared zed:// protocol before remote links open correctly. Please retain that setup guidance in this implementation.

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

size:L100-499 changed lines (additions + deletions).vouch:unvouchedPR author is not yet trusted in the VOUCHED list.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants

@alextac98@juliusmarminge
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Highlight search terms from Google/DuckDuckGo/Bing referrer\n(function() {\n var ref = document.referrer;\n var terms = [];\n \n if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) {\n var url = new URL(ref);\n var q = url.searchParams.get('q') || url.searchParams.get('p');\n if (q) {\n terms = q.split(/\\s+/).filter(function(t) { return t.length > 2; });\n }\n }\n \n if (terms.length === 0) return;\n \n var style = document.createElement('style');\n style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }';\n document.head.appendChild(style);\n \n function highlight(node) {\n if (node.nodeType === 3) { // text node\n var text = node.textContent;\n var found = false;\n terms.forEach(function(term) {\n var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\') + ')', 'gi');\n if (regex.test(text)) {\n found = true;\n var frag = document.createDocumentFragment();\n var parts = text.split(regex);\n parts.forEach(function(part, i) {\n if (i % 2 === 0) {\n frag.appendChild(document.createTextNode(part));\n } else {\n var span = document.createElement('span');\n span.className = 'userscript-highlight';\n span.textContent = part;\n frag.appendChild(span);\n }\n });\n node.parentNode.replaceChild(frag, node);\n }\n });\n } else if (node.nodeType === 1 && node.childNodes) { // element\n var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT'];\n if (!skipTags.includes(node.tagName)) {\n Array.from(node.childNodes).forEach(highlight);\n }\n }\n }\n \n highlight(document.body);\n \n // Re-highlight on dynamic content\n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1 || node.nodeType === 3) highlight(node);\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Highlight Search Terms"); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

feat(desktop,web): support Zed remote project deep links - #8866

Open
alextac98 wants to merge 1 commit into
pingdotgg:mainfrom
alextac98:feature/feat/zed-remote-deep-links
Open

feat(desktop,web): support Zed remote project deep links#8866
alextac98 wants to merge 1 commit into
pingdotgg:mainfrom
alextac98:feature/feat/zed-remote-deep-links

Conversation

@alextac98

@alextac98alextac98 commented Aug 31, 2026

Copy link
Copy Markdown

Implements the Zed remote-open use case tracked in Discussion #6801 (previously #7899). This uses the generalized remote-editor architecture rather than the dedicated Zed launcher approach from #4362.

What Changed

  • Add Zed editor as an option for opening code on a remote computer
  • As a part of this cahnge, also refactored slightly to make it easier to add new editors in the future with remote editor capabilities

Why

It is nice to have T3 Code open in your editor of choice, given that the editor supports remote editing.

UI Changes

Before:
image

After:
image

Video:

Screen.Recording.2026-08-30.at.11.56.07.PM-compressed.mp4

Checklist

  • This PR is small and focused
  • I explained what changed and why
  • I included before/after screenshots for any UI changes
  • I included a video for animation/interaction changes

Devin Review

Note

Medium Risk
Changes URL allowlisting and external-open security rules for custom protocol handlers; mistakes could block legitimate editor links or allow unsafe schemes.

Overview
Adds Open in Zed for remote SSH environments alongside VS Code, using zed://ssh/<host><path> deep links while VS Code forks keep the existing vscode-remote shape.

Editor contracts now use a shared RemoteEditorOpenDefinition (scheme, urlHost, sshPathPrefix) instead of a bare remoteScheme, so buildRemoteOpenUrl and Electron’s openExternal allowlist validate each editor’s URL pattern generically (including blocking credentials and malformed Zed links).

On desktop, hasProtocolHandler probes the OS via Electron so probeRemoteEditors can detect Zed/VS Code when the CLI is missing from PATH (e.g. Finder launches). Browser clients fall back to offering VS Code and Zed and rely on the OS handler. User docs describe remote editor opening behavior.

Reviewed by Cursor Bugbot for commit 0104f84. Bugbot is set up for automated code reviews on this repo. Configure here.

Note

Add Zed zed://ssh remote project deep link support across desktop and web

  • Replaces EditorDefinition.remoteScheme with a new RemoteEditorOpenDefinition type (scheme, urlHost, sshPathPrefix) in editor.ts, and adds a remoteOpen definition for Zed using zed://ssh/<host>/<path>
  • Generalizes buildRemoteOpenUrl to construct editor-specific deep links from the definition instead of hardcoded VS Code-style URLs
  • Adds ElectronShell.hasProtocolHandler in ElectronShell.ts using Electron.app.getApplicationNameForProtocol; probeRemoteEditors now includes editors with a registered OS protocol handler even when their CLI is absent from PATH
  • Updates isRemoteEditorUrl to validate URLs against per-editor definitions (scheme, host, path prefix, SSH target + project path) and reject malformed or non-SSH links
  • Expands the browser fallback editor list in remoteOpen.ts to include both vscode and zed
  • Behavioral Change: EditorDefinition.remoteScheme field is removed; any out-of-tree code referencing it must migrate to editor.remoteOpen. remoteSchemeForEditor is replaced by remoteOpenDefinitionForEditor

Macroscope summarized 0104f84.

- Detect installed editor protocol handlers on desktop
- Generate and validate editor-specific SSH links for Zed
- Document remote editor opening behavior
@coderabbitai

Copy link
Copy Markdown

Important

Review skipped

Auto reviews are disabled on this repository. Please check the settings in the CodeRabbit UI or the .coderabbit.yaml file in this repository. To trigger a single review, invoke the @coderabbitai review command.

⚙️ Run configuration

Configuration used: Repository UI

Review profile: CHILL

Plan: Pro Plus

Run ID: 4809c39d-a419-482e-84e4-87e812653c07

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review

Warning

Your free Security trial is over. An organization admin can activate Security or dismiss this notice.


Comment @coderabbitai help to get the list of available commands.

@github-actionsgithub-actionsBot added vouch:unvouched PR author is not yet trusted in the VOUCHED list. size:L 100-499 changed lines (additions + deletions). labels Aug 31, 2026
@macroscopeapp

Copy link
Copy Markdown
Contributor

Approvability

Verdict: Not approved

Macroscope's review found this PR not approvable — This cross-cutting feature adds Zed remote-editor deep links, expands desktop custom-protocol handling, and changes the browser’s default remote-editor choices. The product-default change and security-sensitive external launching warrant human review.

You can add or adjust custom eligibility rules. Learn more.

@juliusmarminge

Copy link
Copy Markdown
Member

Related implementation: #7900 covers the same Zed SSH links and notes that Zed Preview may need to register the shared zed:// protocol before remote links open correctly. Please retain that setup guidance in this implementation.

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

size:L100-499 changed lines (additions + deletions).vouch:unvouchedPR author is not yet trusted in the VOUCHED list.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants

@alextac98@juliusmarminge
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Strip utm_, fbclid, gclid, etc. from all links on page\n(function() {\n var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content',\n 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid',\n 'ref', 'ref_src', 'source', 'medium', 'campaign'];\n \n function cleanUrl(url) {\n try {\n var u = new URL(url, window.location.origin);\n var changed = false;\n trackingParams.forEach(function(p) {\n if (u.searchParams.has(p)) {\n u.searchParams.delete(p);\n changed = true;\n }\n });\n return changed ? u.toString() : url;\n } catch (e) {\n return url;\n }\n }\n \n function cleanLinks() {\n document.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n \n cleanLinks();\n \n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1) {\n if (node.tagName === 'A') cleanLinks();\n node.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Remove Tracking Parameters from Links"); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + '
Skip to content

feat(desktop,web): support Zed remote project deep links - #8866

Open
alextac98 wants to merge 1 commit into
pingdotgg:mainfrom
alextac98:feature/feat/zed-remote-deep-links
Open

feat(desktop,web): support Zed remote project deep links#8866
alextac98 wants to merge 1 commit into
pingdotgg:mainfrom
alextac98:feature/feat/zed-remote-deep-links

Conversation

@alextac98

@alextac98alextac98 commented Aug 31, 2026

Copy link
Copy Markdown

Implements the Zed remote-open use case tracked in Discussion #6801 (previously #7899). This uses the generalized remote-editor architecture rather than the dedicated Zed launcher approach from #4362.

What Changed

  • Add Zed editor as an option for opening code on a remote computer
  • As a part of this cahnge, also refactored slightly to make it easier to add new editors in the future with remote editor capabilities

Why

It is nice to have T3 Code open in your editor of choice, given that the editor supports remote editing.

UI Changes

Before:
image

After:
image

Video:

Screen.Recording.2026-08-30.at.11.56.07.PM-compressed.mp4

Checklist

  • This PR is small and focused
  • I explained what changed and why
  • I included before/after screenshots for any UI changes
  • I included a video for animation/interaction changes

Devin Review

Note

Medium Risk
Changes URL allowlisting and external-open security rules for custom protocol handlers; mistakes could block legitimate editor links or allow unsafe schemes.

Overview
Adds Open in Zed for remote SSH environments alongside VS Code, using zed://ssh/<host><path> deep links while VS Code forks keep the existing vscode-remote shape.

Editor contracts now use a shared RemoteEditorOpenDefinition (scheme, urlHost, sshPathPrefix) instead of a bare remoteScheme, so buildRemoteOpenUrl and Electron’s openExternal allowlist validate each editor’s URL pattern generically (including blocking credentials and malformed Zed links).

On desktop, hasProtocolHandler probes the OS via Electron so probeRemoteEditors can detect Zed/VS Code when the CLI is missing from PATH (e.g. Finder launches). Browser clients fall back to offering VS Code and Zed and rely on the OS handler. User docs describe remote editor opening behavior.

Reviewed by Cursor Bugbot for commit 0104f84. Bugbot is set up for automated code reviews on this repo. Configure here.

Note

Add Zed zed://ssh remote project deep link support across desktop and web

  • Replaces EditorDefinition.remoteScheme with a new RemoteEditorOpenDefinition type (scheme, urlHost, sshPathPrefix) in editor.ts, and adds a remoteOpen definition for Zed using zed://ssh/<host>/<path>
  • Generalizes buildRemoteOpenUrl to construct editor-specific deep links from the definition instead of hardcoded VS Code-style URLs
  • Adds ElectronShell.hasProtocolHandler in ElectronShell.ts using Electron.app.getApplicationNameForProtocol; probeRemoteEditors now includes editors with a registered OS protocol handler even when their CLI is absent from PATH
  • Updates isRemoteEditorUrl to validate URLs against per-editor definitions (scheme, host, path prefix, SSH target + project path) and reject malformed or non-SSH links
  • Expands the browser fallback editor list in remoteOpen.ts to include both vscode and zed
  • Behavioral Change: EditorDefinition.remoteScheme field is removed; any out-of-tree code referencing it must migrate to editor.remoteOpen. remoteSchemeForEditor is replaced by remoteOpenDefinitionForEditor

Macroscope summarized 0104f84.

- Detect installed editor protocol handlers on desktop
- Generate and validate editor-specific SSH links for Zed
- Document remote editor opening behavior
@coderabbitai

Copy link
Copy Markdown

Important

Review skipped

Auto reviews are disabled on this repository. Please check the settings in the CodeRabbit UI or the .coderabbit.yaml file in this repository. To trigger a single review, invoke the @coderabbitai review command.

⚙️ Run configuration

Configuration used: Repository UI

Review profile: CHILL

Plan: Pro Plus

Run ID: 4809c39d-a419-482e-84e4-87e812653c07

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review

Warning

Your free Security trial is over. An organization admin can activate Security or dismiss this notice.


Comment @coderabbitai help to get the list of available commands.

@github-actionsgithub-actionsBot added vouch:unvouched PR author is not yet trusted in the VOUCHED list. size:L 100-499 changed lines (additions + deletions). labels Aug 31, 2026
@macroscopeapp

Copy link
Copy Markdown
Contributor

Approvability

Verdict: Not approved

Macroscope's review found this PR not approvable — This cross-cutting feature adds Zed remote-editor deep links, expands desktop custom-protocol handling, and changes the browser’s default remote-editor choices. The product-default change and security-sensitive external launching warrant human review.

You can add or adjust custom eligibility rules. Learn more.

@juliusmarminge

Copy link
Copy Markdown
Member

Related implementation: #7900 covers the same Zed SSH links and notes that Zed Preview may need to register the shared zed:// protocol before remote links open correctly. Please retain that setup guidance in this implementation.

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

size:L100-499 changed lines (additions + deletions).vouch:unvouchedPR author is not yet trusted in the VOUCHED list.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants

@alextac98@juliusmarminge
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Auto-enable theater mode on YouTube\n(function() {\n function tryTheater() {\n var btn = document.querySelector('button[aria-label=\"Theater mode\"], ytd-player #player button[title=\"Theater mode\"]');\n if (btn && !btn.classList.contains('activated')) {\n btn.click();\n }\n }\n \n // Try immediately\n tryTheater();\n \n // Try after navigation (SPA)\n var lastUrl = location.href;\n setInterval(function() {\n if (location.href !== lastUrl) {\n lastUrl = location.href;\n setTimeout(tryTheater, 500);\n }\n }, 1000);\n \n // Also try on player load\n var observer = new MutationObserver(tryTheater);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "YouTube Theater Mode Default"); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

feat(desktop,web): support Zed remote project deep links - #8866

Open
alextac98 wants to merge 1 commit into
pingdotgg:mainfrom
alextac98:feature/feat/zed-remote-deep-links
Open

feat(desktop,web): support Zed remote project deep links#8866
alextac98 wants to merge 1 commit into
pingdotgg:mainfrom
alextac98:feature/feat/zed-remote-deep-links

Conversation

@alextac98

@alextac98alextac98 commented Aug 31, 2026

Copy link
Copy Markdown

Implements the Zed remote-open use case tracked in Discussion #6801 (previously #7899). This uses the generalized remote-editor architecture rather than the dedicated Zed launcher approach from #4362.

What Changed

  • Add Zed editor as an option for opening code on a remote computer
  • As a part of this cahnge, also refactored slightly to make it easier to add new editors in the future with remote editor capabilities

Why

It is nice to have T3 Code open in your editor of choice, given that the editor supports remote editing.

UI Changes

Before:
image

After:
image

Video:

Screen.Recording.2026-08-30.at.11.56.07.PM-compressed.mp4

Checklist

  • This PR is small and focused
  • I explained what changed and why
  • I included before/after screenshots for any UI changes
  • I included a video for animation/interaction changes

Devin Review

Note

Medium Risk
Changes URL allowlisting and external-open security rules for custom protocol handlers; mistakes could block legitimate editor links or allow unsafe schemes.

Overview
Adds Open in Zed for remote SSH environments alongside VS Code, using zed://ssh/<host><path> deep links while VS Code forks keep the existing vscode-remote shape.

Editor contracts now use a shared RemoteEditorOpenDefinition (scheme, urlHost, sshPathPrefix) instead of a bare remoteScheme, so buildRemoteOpenUrl and Electron’s openExternal allowlist validate each editor’s URL pattern generically (including blocking credentials and malformed Zed links).

On desktop, hasProtocolHandler probes the OS via Electron so probeRemoteEditors can detect Zed/VS Code when the CLI is missing from PATH (e.g. Finder launches). Browser clients fall back to offering VS Code and Zed and rely on the OS handler. User docs describe remote editor opening behavior.

Reviewed by Cursor Bugbot for commit 0104f84. Bugbot is set up for automated code reviews on this repo. Configure here.

Note

Add Zed zed://ssh remote project deep link support across desktop and web

  • Replaces EditorDefinition.remoteScheme with a new RemoteEditorOpenDefinition type (scheme, urlHost, sshPathPrefix) in editor.ts, and adds a remoteOpen definition for Zed using zed://ssh/<host>/<path>
  • Generalizes buildRemoteOpenUrl to construct editor-specific deep links from the definition instead of hardcoded VS Code-style URLs
  • Adds ElectronShell.hasProtocolHandler in ElectronShell.ts using Electron.app.getApplicationNameForProtocol; probeRemoteEditors now includes editors with a registered OS protocol handler even when their CLI is absent from PATH
  • Updates isRemoteEditorUrl to validate URLs against per-editor definitions (scheme, host, path prefix, SSH target + project path) and reject malformed or non-SSH links
  • Expands the browser fallback editor list in remoteOpen.ts to include both vscode and zed
  • Behavioral Change: EditorDefinition.remoteScheme field is removed; any out-of-tree code referencing it must migrate to editor.remoteOpen. remoteSchemeForEditor is replaced by remoteOpenDefinitionForEditor

Macroscope summarized 0104f84.

- Detect installed editor protocol handlers on desktop
- Generate and validate editor-specific SSH links for Zed
- Document remote editor opening behavior
@coderabbitai

Copy link
Copy Markdown

Important

Review skipped

Auto reviews are disabled on this repository. Please check the settings in the CodeRabbit UI or the .coderabbit.yaml file in this repository. To trigger a single review, invoke the @coderabbitai review command.

⚙️ Run configuration

Configuration used: Repository UI

Review profile: CHILL

Plan: Pro Plus

Run ID: 4809c39d-a419-482e-84e4-87e812653c07

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review

Warning

Your free Security trial is over. An organization admin can activate Security or dismiss this notice.


Comment @coderabbitai help to get the list of available commands.

@github-actionsgithub-actionsBot added vouch:unvouched PR author is not yet trusted in the VOUCHED list. size:L 100-499 changed lines (additions + deletions). labels Aug 31, 2026
@macroscopeapp

Copy link
Copy Markdown
Contributor

Approvability

Verdict: Not approved

Macroscope's review found this PR not approvable — This cross-cutting feature adds Zed remote-editor deep links, expands desktop custom-protocol handling, and changes the browser’s default remote-editor choices. The product-default change and security-sensitive external launching warrant human review.

You can add or adjust custom eligibility rules. Learn more.

@juliusmarminge

Copy link
Copy Markdown
Member

Related implementation: #7900 covers the same Zed SSH links and notes that Zed Preview may need to register the shared zed:// protocol before remote links open correctly. Please retain that setup guidance in this implementation.

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

size:L100-499 changed lines (additions + deletions).vouch:unvouchedPR author is not yet trusted in the VOUCHED list.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants

@alextac98@juliusmarminge
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Remove or un-stick sticky/fixed headers that block content\n(function() {\n function unstick() {\n document.querySelectorAll('header, nav, [role=\"banner\"], .header, .navbar, .sticky, .fixed-top, [style*=\"position: fixed\"], [style*=\"position:sticky\"]').forEach(function(el) {\n if (el.style.position === 'fixed' || el.style.position === 'sticky' || \n getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') {\n el.style.position = 'static';\n el.style.top = 'auto';\n el.style.zIndex = 'auto';\n }\n });\n }\n \n unstick();\n \n var observer = new MutationObserver(unstick);\n observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] });\n})();", "Kill Sticky Headers"); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

feat(desktop,web): support Zed remote project deep links - #8866

Open
alextac98 wants to merge 1 commit into
pingdotgg:mainfrom
alextac98:feature/feat/zed-remote-deep-links
Open

feat(desktop,web): support Zed remote project deep links#8866
alextac98 wants to merge 1 commit into
pingdotgg:mainfrom
alextac98:feature/feat/zed-remote-deep-links

Conversation

@alextac98

@alextac98alextac98 commented Aug 31, 2026

Copy link
Copy Markdown

Implements the Zed remote-open use case tracked in Discussion #6801 (previously #7899). This uses the generalized remote-editor architecture rather than the dedicated Zed launcher approach from #4362.

What Changed

  • Add Zed editor as an option for opening code on a remote computer
  • As a part of this cahnge, also refactored slightly to make it easier to add new editors in the future with remote editor capabilities

Why

It is nice to have T3 Code open in your editor of choice, given that the editor supports remote editing.

UI Changes

Before:
image

After:
image

Video:

Screen.Recording.2026-08-30.at.11.56.07.PM-compressed.mp4

Checklist

  • This PR is small and focused
  • I explained what changed and why
  • I included before/after screenshots for any UI changes
  • I included a video for animation/interaction changes

Devin Review

Note

Medium Risk
Changes URL allowlisting and external-open security rules for custom protocol handlers; mistakes could block legitimate editor links or allow unsafe schemes.

Overview
Adds Open in Zed for remote SSH environments alongside VS Code, using zed://ssh/<host><path> deep links while VS Code forks keep the existing vscode-remote shape.

Editor contracts now use a shared RemoteEditorOpenDefinition (scheme, urlHost, sshPathPrefix) instead of a bare remoteScheme, so buildRemoteOpenUrl and Electron’s openExternal allowlist validate each editor’s URL pattern generically (including blocking credentials and malformed Zed links).

On desktop, hasProtocolHandler probes the OS via Electron so probeRemoteEditors can detect Zed/VS Code when the CLI is missing from PATH (e.g. Finder launches). Browser clients fall back to offering VS Code and Zed and rely on the OS handler. User docs describe remote editor opening behavior.

Reviewed by Cursor Bugbot for commit 0104f84. Bugbot is set up for automated code reviews on this repo. Configure here.

Note

Add Zed zed://ssh remote project deep link support across desktop and web

  • Replaces EditorDefinition.remoteScheme with a new RemoteEditorOpenDefinition type (scheme, urlHost, sshPathPrefix) in editor.ts, and adds a remoteOpen definition for Zed using zed://ssh/<host>/<path>
  • Generalizes buildRemoteOpenUrl to construct editor-specific deep links from the definition instead of hardcoded VS Code-style URLs
  • Adds ElectronShell.hasProtocolHandler in ElectronShell.ts using Electron.app.getApplicationNameForProtocol; probeRemoteEditors now includes editors with a registered OS protocol handler even when their CLI is absent from PATH
  • Updates isRemoteEditorUrl to validate URLs against per-editor definitions (scheme, host, path prefix, SSH target + project path) and reject malformed or non-SSH links
  • Expands the browser fallback editor list in remoteOpen.ts to include both vscode and zed
  • Behavioral Change: EditorDefinition.remoteScheme field is removed; any out-of-tree code referencing it must migrate to editor.remoteOpen. remoteSchemeForEditor is replaced by remoteOpenDefinitionForEditor

Macroscope summarized 0104f84.

- Detect installed editor protocol handlers on desktop
- Generate and validate editor-specific SSH links for Zed
- Document remote editor opening behavior
@coderabbitai

Copy link
Copy Markdown

Important

Review skipped

Auto reviews are disabled on this repository. Please check the settings in the CodeRabbit UI or the .coderabbit.yaml file in this repository. To trigger a single review, invoke the @coderabbitai review command.

⚙️ Run configuration

Configuration used: Repository UI

Review profile: CHILL

Plan: Pro Plus

Run ID: 4809c39d-a419-482e-84e4-87e812653c07

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review

Warning

Your free Security trial is over. An organization admin can activate Security or dismiss this notice.


Comment @coderabbitai help to get the list of available commands.

@github-actionsgithub-actionsBot added vouch:unvouched PR author is not yet trusted in the VOUCHED list. size:L 100-499 changed lines (additions + deletions). labels Aug 31, 2026
@macroscopeapp

Copy link
Copy Markdown
Contributor

Approvability

Verdict: Not approved

Macroscope's review found this PR not approvable — This cross-cutting feature adds Zed remote-editor deep links, expands desktop custom-protocol handling, and changes the browser’s default remote-editor choices. The product-default change and security-sensitive external launching warrant human review.

You can add or adjust custom eligibility rules. Learn more.

@juliusmarminge

Copy link
Copy Markdown
Member

Related implementation: #7900 covers the same Zed SSH links and notes that Zed Preview may need to register the shared zed:// protocol before remote links open correctly. Please retain that setup guidance in this implementation.

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

size:L100-499 changed lines (additions + deletions).vouch:unvouchedPR author is not yet trusted in the VOUCHED list.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants

@alextac98@juliusmarminge
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Universal Dark Mode - works on any site\n(function() {\n var enabled = true;\n \n function applyDarkMode() {\n if (!enabled) return;\n \n // Create style element if it doesn't exist\n var style = document.getElementById('universal-dark-mode-style');\n if (!style) {\n style = document.createElement('style');\n style.id = 'universal-dark-mode-style';\n document.head.appendChild(style);\n }\n \n // Dark mode CSS - inverts colors but preserves images/video\n style.textContent = '\n /* Invert everything except media */\n html {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #1a1a2e !important;\n }\n \n /* Restore images, videos, iframes, canvas */\n img, video, iframe, canvas, svg, picture, [style*=\"background-image\"] {\n filter: invert(1) hue-rotate(180deg) !important;\n }\n \n /* Preserve specific elements that should not be inverted */\n .no-dark-mode, .no-dark-mode *,\n [data-theme=\"light\"], [data-theme=\"light\"],\n .ace_editor, .ace_editor *,\n .CodeMirror, .CodeMirror *,\n .monaco-editor, .monaco-editor *,\n .markdown-body pre, .markdown-body pre *,\n .highlight, .highlight *,\n pre code, pre code * {\n filter: none !important;\n }\n \n /* Fix common UI elements */\n .modal, .popup, .dropdown-menu, .tooltip, .popover {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #2d2d44 !important;\n border-color: #444 !important;\n }\n \n /* Scrollbars */\n ::-webkit-scrollbar { background: #1a1a2e !important; }\n ::-webkit-scrollbar-thumb { background: #444 !important; }\n ::-webkit-scrollbar-thumb:hover { background: #555 !important; }\n \n /* Selection */\n ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ';\n }\n \n function removeDarkMode() {\n var style = document.getElementById('universal-dark-mode-style');\n if (style) style.remove();\n }\n \n // Toggle with Alt+Shift+D\n document.addEventListener('keydown', function(e) {\n if (e.altKey && e.shiftKey && e.key === 'D') {\n e.preventDefault();\n enabled = !enabled;\n if (enabled) {\n applyDarkMode();\n console.log('[Universal Dark Mode] Enabled');\n } else {\n removeDarkMode();\n console.log('[Universal Dark Mode] Disabled');\n }\n }\n });\n \n // Apply on load\n applyDarkMode();\n \n // Re-apply on dynamic content\n var observer = new MutationObserver(function(mutations) {\n if (enabled && !document.getElementById('universal-dark-mode-style')) {\n applyDarkMode();\n }\n });\n observer.observe(document.head, { childList: true });\n \n console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle');\n})();", "Universal Dark Mode"); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })();
Skip to content

feat(desktop,web): support Zed remote project deep links - #8866

Open
alextac98 wants to merge 1 commit into
pingdotgg:mainfrom
alextac98:feature/feat/zed-remote-deep-links
Open

feat(desktop,web): support Zed remote project deep links#8866
alextac98 wants to merge 1 commit into
pingdotgg:mainfrom
alextac98:feature/feat/zed-remote-deep-links

Conversation

@alextac98

@alextac98alextac98 commented Aug 31, 2026

Copy link
Copy Markdown

Implements the Zed remote-open use case tracked in Discussion #6801 (previously #7899). This uses the generalized remote-editor architecture rather than the dedicated Zed launcher approach from #4362.

What Changed

  • Add Zed editor as an option for opening code on a remote computer
  • As a part of this cahnge, also refactored slightly to make it easier to add new editors in the future with remote editor capabilities

Why

It is nice to have T3 Code open in your editor of choice, given that the editor supports remote editing.

UI Changes

Before:
image

After:
image

Video:

Screen.Recording.2026-08-30.at.11.56.07.PM-compressed.mp4

Checklist

  • This PR is small and focused
  • I explained what changed and why
  • I included before/after screenshots for any UI changes
  • I included a video for animation/interaction changes

Devin Review

Note

Medium Risk
Changes URL allowlisting and external-open security rules for custom protocol handlers; mistakes could block legitimate editor links or allow unsafe schemes.

Overview
Adds Open in Zed for remote SSH environments alongside VS Code, using zed://ssh/<host><path> deep links while VS Code forks keep the existing vscode-remote shape.

Editor contracts now use a shared RemoteEditorOpenDefinition (scheme, urlHost, sshPathPrefix) instead of a bare remoteScheme, so buildRemoteOpenUrl and Electron’s openExternal allowlist validate each editor’s URL pattern generically (including blocking credentials and malformed Zed links).

On desktop, hasProtocolHandler probes the OS via Electron so probeRemoteEditors can detect Zed/VS Code when the CLI is missing from PATH (e.g. Finder launches). Browser clients fall back to offering VS Code and Zed and rely on the OS handler. User docs describe remote editor opening behavior.

Reviewed by Cursor Bugbot for commit 0104f84. Bugbot is set up for automated code reviews on this repo. Configure here.

Note

Add Zed zed://ssh remote project deep link support across desktop and web

  • Replaces EditorDefinition.remoteScheme with a new RemoteEditorOpenDefinition type (scheme, urlHost, sshPathPrefix) in editor.ts, and adds a remoteOpen definition for Zed using zed://ssh/<host>/<path>
  • Generalizes buildRemoteOpenUrl to construct editor-specific deep links from the definition instead of hardcoded VS Code-style URLs
  • Adds ElectronShell.hasProtocolHandler in ElectronShell.ts using Electron.app.getApplicationNameForProtocol; probeRemoteEditors now includes editors with a registered OS protocol handler even when their CLI is absent from PATH
  • Updates isRemoteEditorUrl to validate URLs against per-editor definitions (scheme, host, path prefix, SSH target + project path) and reject malformed or non-SSH links
  • Expands the browser fallback editor list in remoteOpen.ts to include both vscode and zed
  • Behavioral Change: EditorDefinition.remoteScheme field is removed; any out-of-tree code referencing it must migrate to editor.remoteOpen. remoteSchemeForEditor is replaced by remoteOpenDefinitionForEditor

Macroscope summarized 0104f84.

- Detect installed editor protocol handlers on desktop
- Generate and validate editor-specific SSH links for Zed
- Document remote editor opening behavior
@coderabbitai

Copy link
Copy Markdown

Important

Review skipped

Auto reviews are disabled on this repository. Please check the settings in the CodeRabbit UI or the .coderabbit.yaml file in this repository. To trigger a single review, invoke the @coderabbitai review command.

⚙️ Run configuration

Configuration used: Repository UI

Review profile: CHILL

Plan: Pro Plus

Run ID: 4809c39d-a419-482e-84e4-87e812653c07

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review

Warning

Your free Security trial is over. An organization admin can activate Security or dismiss this notice.


Comment @coderabbitai help to get the list of available commands.

@github-actionsgithub-actionsBot added vouch:unvouched PR author is not yet trusted in the VOUCHED list. size:L 100-499 changed lines (additions + deletions). labels Aug 31, 2026
@macroscopeapp

Copy link
Copy Markdown
Contributor

Approvability

Verdict: Not approved

Macroscope's review found this PR not approvable — This cross-cutting feature adds Zed remote-editor deep links, expands desktop custom-protocol handling, and changes the browser’s default remote-editor choices. The product-default change and security-sensitive external launching warrant human review.

You can add or adjust custom eligibility rules. Learn more.

@juliusmarminge

Copy link
Copy Markdown
Member

Related implementation: #7900 covers the same Zed SSH links and notes that Zed Preview may need to register the shared zed:// protocol before remote links open correctly. Please retain that setup guidance in this implementation.

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

size:L100-499 changed lines (additions + deletions).vouch:unvouchedPR author is not yet trusted in the VOUCHED list.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants

@alextac98@juliusmarminge