Skip to content

feat(editors): open remote projects in JetBrains IDEs over SSH - #17271

Merged
juliusmarminge merged 1 commit into
mainfrom
feat/jetbrains-remote-open
Oct 8, 2026
Merged

juliusmarminge merged 1 commit into
mainfrom
feat/jetbrains-remote-open

Conversation

@juliusmarminge

@juliusmarminge juliusmarminge commented Oct 8, 2026 •

Copy link
Copy Markdown
Member

Remote open-in-editor only worked with VS Code, its forks, and Zed. A JetBrains user on a remote environment had no way to open the project in their IDE.

JetBrains IDEs now open remote projects through the Toolbox App's SSH link:

jetbrains://gateway/ssh/environment?h=<host>&launchIde=true&ideHint=<product code>&projectHint=<path>
  • packages/contracts/src/editor.ts: each JetBrains IDE gets a jetbrainsProductCode (IU, PY, GO, ...). Having one makes the IDE remote-capable under the jetbrains scheme. buildRemoteOpenUrl builds the Toolbox link for these IDEs.
  • apps/desktop/src/electron/ElectronShell.ts: the desktop app lets through only jetbrains://gateway/ssh/environment links with a non-empty h. Every other jetbrains:// action, every other Gateway plugin route, and any link with userinfo stays blocked.
  • The desktop probe for installed remote editors picks up JetBrains IDEs automatically. A plain browser still falls back to VS Code only.

Why not the older jetbrains-gateway://connect link: with deploy=true, Gateway rejects it unless it also carries idePath or both productCode and buildNumber (GTW-6264), and we don't know those for a remote host. Toolbox takes a bare product code and picks the build itself.

Like the VS Code and Zed links, this one omits user and port, so Toolbox has to read them from the host's SSH config entry.

Not yet tested against a real Toolbox install. Unit tests cover building the URL and the desktop allowlist.

Model: Claude Opus 5.5 via Claude Code in T3 Code.

🤖 Generated with Claude Code


Devin Review

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@github-actions github-actions Bot added vouch:trusted PR author is trusted by repo permissions or the VOUCHED list. size:L 100-499 changed lines (additions + deletions). labels Oct 8, 2026
@juliusmarminge juliusmarminge added the macroscope-review Opt PRs made by unvouched contributors in for Macroscope review. Vouched contributors auto-reviews label Oct 8, 2026
@macroscopeapp

macroscopeapp Bot commented Oct 8, 2026

Copy link
Copy Markdown
Contributor

Approvability

Verdict: Not approved

Macroscope's review found this PR not approvable — This PR adds a new JetBrains Toolbox SSH integration, including automatic JetBrains detection, new remote deep-link construction, and a broadened Electron protocol allowlist. The changes are narrowly tested and preserve existing local behavior, but the new user-facing external integration warrants human review.

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

@coderabbitai

coderabbitai Bot commented Oct 8, 2026

Copy link
Copy Markdown

Review in Change Stack →

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration
  • Configuration used: Path: .coderabbit.config.ts
  • Review profile: CHILL
  • Plan: Team
  • Run ID: 57a76e47-0f5b-4290-adb1-2db9e2f31e0c
📥 Commits

Reviewing files that changed from the base of the PR and between a0066d5 and 9b11b5b.

📒 Files selected for processing (4)
  • apps/desktop/src/electron/ElectronShell.test.ts
  • apps/desktop/src/electron/ElectronShell.ts
  • apps/web/src/remoteOpen.test.ts
  • packages/contracts/src/editor.ts

Included review availability: This review used your included allowance. Your plan provides up to 10 included reviews per hour; 8 remain after this review.


📝 Walkthrough

Walkthrough

JetBrains editors now generate Toolbox Gateway SSH URLs with IDE and project parameters. The desktop shell accepts matching Gateway SSH links and rejects unrelated or incomplete JetBrains URL shapes.

Changes

JetBrains Toolbox remote-open links

Layer / File(s) Summary
JetBrains remote URL generation
packages/contracts/src/editor.ts, apps/web/src/remoteOpen.test.ts
JetBrains editor definitions now include product codes. buildRemoteOpenUrl uses those codes to create Toolbox Gateway SSH URLs with host, IDE, and normalized project path parameters. Tests cover PyCharm and IDEA URLs.
Desktop Gateway URL validation
apps/desktop/src/electron/ElectronShell.ts, apps/desktop/src/electron/ElectronShell.test.ts
isRemoteEditorUrl accepts JetBrains URLs with the gateway host, /ssh/environment path, and a nonempty h parameter. Tests cover accepted and rejected URL shapes.

Priority: ⬇️ Low

Estimated code review effort: 2 (Simple) | ~15 minutes

Change: Feature

Suggested reviewers: maria-rcks

Merge Risk: ⚪ Minimal · up to 9b11b

The change adds JetBrains remote opening through Toolbox links, and the generated URL shape matches the desktop allowlist. No actionable merge-blocking risk is established; real Toolbox interoperability still needs normal feature validation.

🚥 Pre-merge checks | ✅ 3 | ❌ 1

❌ Failed checks (1 warning)

Check name Status Explanation Resolution
Description check ⚠️ Warning The description clearly explains the problem, implementation, limitations, and test coverage. However, it does not provide the required Scope and approval information, and the Verification section doe… Add a Scope and approval section with a triaged issue or explicit maintainer approval, or explain why an exemption applies. Add a Verification section that lists the focused test commands and observed results, and state that real Toolbox in…
✅ Passed checks (3 passed)
Check name Status Explanation
Title check ✅ Passed The title clearly and concisely describes the main change: enabling remote project opening in JetBrains IDEs over SSH.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.
Full details: Description check

Explanation

The description clearly explains the problem, implementation, limitations, and test coverage. However, it does not provide the required Scope and approval information, and the Verification section does not identify the specific tests or observed results.

Resolution

Add a Scope and approval section with a triaged issue or explicit maintainer approval, or explain why an exemption applies. Add a Verification section that lists the focused test commands and observed results, and state that real Toolbox installation testing remains incomplete.

  • Fix all pre-merge checks with AI
✨ Finishing Touches
📝 Generate docstrings
  • Commit to this branch
  • Create a new PR
🧪 Generate unit tests (beta)
  • Commit to this branch
  • Create a new PR
  • Autopilot · Keep fixing CodeRabbit findings and required CI, and resolving merge conflicts

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

@github-actions

github-actions Bot commented Oct 8, 2026

Copy link
Copy Markdown
Contributor

Thread transfer impact

✅ Thread transfer remains within every enforced ceiling.

Provider Metric Main baseline This PR Impact PR ceiling
Codex Total thread wire 5.0 KiB 5.0 KiB 0 B (0.0%) 6.8 KiB ✅
Codex Thread snapshot wire 3.8 KiB 3.8 KiB 0 B (0.0%) 4.9 KiB ✅
Codex Live turn WebSocket wire 1.2 KiB 1.2 KiB 0 B (0.0%) 2.0 KiB ✅
Codex Live turn WebSocket decoded 20.9 KiB 20.9 KiB 0 B (0.0%) 29.3 KiB ✅
Codex Live turn messages 2 2 0 (0.0%) 8 ✅
Claude Total thread wire 5.0 KiB 5.0 KiB 0 B (0.0%) 6.8 KiB ✅
Claude Thread snapshot wire 3.8 KiB 3.8 KiB 0 B (0.0%) 4.9 KiB ✅
Claude Live turn WebSocket wire 1.2 KiB 1.2 KiB 0 B (0.0%) 2.0 KiB ✅
Claude Live turn WebSocket decoded 21.2 KiB 21.2 KiB 0 B (0.0%) 29.3 KiB ✅
Claude Live turn messages 2 2 0 (0.0%) 8 ✅

Baseline: a0066d5 · PR result: 9b11b5b · Source CI: failure

Scenario and decoded snapshot size

10 historical turns, 5 command tools per turn, 878.9 KiB retained MCP result per historical turn, and a 1.05 MiB retained result in the measured turn.

  • Codex decoded thread snapshot: 108.5 KiB
  • Claude decoded thread snapshot: 108.8 KiB

Updated in place by a trusted workflow. PR artifacts are strictly validated and never executed.

@juliusmarminge
juliusmarminge merged commit df616cc into main Oct 8, 2026
30 of 33 checks passed
@juliusmarminge
juliusmarminge deleted the feat/jetbrains-remote-open branch October 8, 2026 19:30
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

macroscope-review Opt PRs made by unvouched contributors in for Macroscope review. Vouched contributors auto-reviews size:L 100-499 changed lines (additions + deletions). vouch:trusted PR author is trusted by repo permissions or the VOUCHED list.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant