Skip to content

feat: add VS Code Insiders as a separate Open In app#1460

Merged
arnestrickmann merged 3 commits intogeneralaction:mainfrom
millar:millar/vscode-insiders-yel
Mar 13, 2026
Merged

feat: add VS Code Insiders as a separate Open In app#1460
arnestrickmann merged 3 commits intogeneralaction:mainfrom
millar:millar/vscode-insiders-yel

Conversation

@millar
Copy link
Contributor

@millar millar commented Mar 13, 2026

Summary

  • Adds VS Code Insiders as its own entry in the "Open In" app list, reusing the existing VS Code icon
  • Removes Insiders-specific references (code-insiders CLI, com.microsoft.VSCodeInsiders bundle ID) from the regular VS Code entry so they don't conflict
  • Uses hideIfUnavailable: true so it only appears when VS Code Insiders is installed
  • Supports all three platforms (macOS, Windows, Linux) with appropriate CLI commands and bundle IDs

Test plan

  • Verify VS Code Insiders appears in "Open In" list when installed
  • Verify it does not appear when VS Code Insiders is not installed
  • Verify regular VS Code entry still works independently
  • Verify opening a worktree in VS Code Insiders works on macOS/Windows/Linux

🤖 Generated with Claude Code

Splits VS Code Insiders out of the regular VS Code entry into its own
app with dedicated icon, bundle ID, and CLI commands. Hidden when
not installed.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
@vercel
Copy link

vercel bot commented Mar 13, 2026

@millar is attempting to deploy a commit to the General Action Team on Vercel.

A member of the Team first needs to authorize it.

@greptile-apps
Copy link
Contributor

greptile-apps bot commented Mar 13, 2026

Greptile Summary

This PR adds VS Code Insiders as a dedicated entry in the "Open In" app list, separating it from the regular VS Code entry which previously bundled both stable and Insiders identifiers together. The icon, platform configs, and hideIfUnavailable guard are all implemented correctly and follow established patterns in the file.

Key changes:

  • New vscode-insiders entry with a green-themed SVG icon, covering macOS (CLI + bundle ID + app name fallbacks), Windows, and Linux
  • Regular vscode entry is cleaned up — com.microsoft.VSCodeInsiders bundle ID and code-insiders CLI references are removed
  • hideIfUnavailable: true ensures the entry only renders when VS Code Insiders is actually detected

Issue found:

  • supportsRemote: true is set on the new entry, but appIpc.ts has no appId === 'vscode-insiders' branch in the remote SSH dispatch. Attempting to open a remote worktree in VS Code Insiders will hit the generic fallback and return an error ("Remote SSH not yet implemented for VS Code Insiders"). VS Code Insiders uses the vscode-insiders:// deep-link scheme and buildRemoteEditorUrl in remoteOpenIn.ts already parameterises the scheme — it just needs to be wired up (and RemoteEditorScheme widened to include 'vscode-insiders').

Confidence Score: 3/5

  • Safe to merge for local opens, but remote SSH support is wired up incorrectly and will silently fail for users who rely on it.
  • The core feature (local open, detection, icon) is correct and well-structured. The single issue — supportsRemote: true without a corresponding handler — will cause a user-visible runtime error whenever VS Code Insiders is used as a remote SSH editor, which is a meaningful regression relative to what the flag implies.
  • src/shared/openInApps.ts (line 122) and the unmodified src/main/ipc/appIpc.ts / src/main/utils/remoteOpenIn.ts need to be updated together to complete the remote SSH support.

Important Files Changed

Filename Overview
src/shared/openInApps.ts Adds VS Code Insiders as a separate Open In entry and cleans up the stable VS Code entry. The entry structure and platform configs are correct, but supportsRemote: true is set without a corresponding handler in appIpc.ts, which will cause remote SSH opens to fail with a "not yet implemented" error.
src/assets/images/vscode-insiders.svg New SVG icon using VS Code Insiders' characteristic green colour palette (#2CA24B, #1E7D34, #3EBF63). Well-formed SVG with mask, filter, and correct viewBox. No issues.

Flowchart

%%{init: {'theme': 'neutral'}}%%
flowchart TD
    A[User clicks Open In VS Code Insiders] --> B{isRemote?}
    B -- No --> C[Build shell open command]
    C --> D[exec: code-insiders path\nor open -b com.microsoft.VSCodeInsiders\nor open -a 'VS Code - Insiders']
    D --> E[✅ Success]

    B -- Yes --> F{appId switch in appIpc.ts}
    F -- appId === 'vscode' --> G[buildRemoteEditorUrl vscode://...]
    F -- appId === 'cursor' --> H[buildRemoteEditorUrl cursor://...]
    F -- appId === 'vscode-insiders' --> I[❌ No handler — falls to catch-all]
    I --> J[return error: 'Remote SSH not yet implemented']

    style I fill:#f55,color:#fff
    style J fill:#f55,color:#fff
Loading

Last reviewed commit: eef4268

label: 'VS Code Insiders',
iconPath: ICON_PATHS['vscode-insiders'],
autoInstall: true,
supportsRemote: true,
Copy link
Contributor

Choose a reason for hiding this comment

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

supportsRemote: true has no handler in appIpc.ts

Setting supportsRemote: true here causes VS Code Insiders to appear as a valid remote SSH target, but the remote-handling dispatch in appIpc.ts has no appId === 'vscode-insiders' branch. When a user tries to open a remote worktree in VS Code Insiders it will always fall through to the generic catch-all and return:

{ success: false, error: 'Remote SSH not yet implemented for VS Code Insiders' }

VS Code Insiders registers its own deep-link scheme (vscode-insiders://) and the existing buildRemoteEditorUrl helper already parametrises the scheme — so it just needs to be wired up. The RemoteEditorScheme type in remoteOpenIn.ts is currently 'vscode' | 'cursor' and would also need to be widened.

Until the handler is added you should either:

  1. Remove supportsRemote: true to avoid surfacing a broken feature, or
  2. Add the handler alongside this PR:
// in appIpc.ts, after the 'cursor' branch
} else if (appId === 'vscode-insiders') {
  const remoteUrl = buildRemoteEditorUrl(
    'vscode-insiders',
    connection.host,
    connection.username,
    target
  );
  await shell.openExternal(remoteUrl);
  return { success: true };
}

And in remoteOpenIn.ts:

type RemoteEditorScheme = 'vscode' | 'cursor' | 'vscode-insiders';

millar and others added 2 commits March 13, 2026 16:49
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
No remote SSH handler exists for vscode-insiders yet, so remove the
flag to avoid surfacing a broken feature.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
@arnestrickmann
Copy link
Contributor

Thanks for opening this PR @millar - this addition makes sense.
LGTM, merging.

@arnestrickmann arnestrickmann merged commit 31bbfed into generalaction:main Mar 13, 2026
2 of 3 checks passed
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