Skip to content

Commit 99dd1d8

Browse files
committed
Add macOS-arm64 MCP binary, update Roopik
Add a macOS arm64 MCP binary and integrate related updates: make scripts/code.sh executable, update MCP installer and utility code to handle the new binary, and refresh built webview assets (componentView.js/html). Also apply package metadata changes and update dependency lockfiles for the Roopik extension and mcp-stdio-server.
1 parent acaa27b commit 99dd1d8

9 files changed

Lines changed: 1219 additions & 571 deletions

File tree

extensions/roopik-roo/package-lock.json

Lines changed: 2 additions & 2 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

extensions/roopik/webview/build/assets/componentView.js

Lines changed: 28 additions & 27 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.
Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,13 @@
1-
<!doctype html>
2-
<html lang="en">
3-
<head>
4-
<meta charset="UTF-8" />
5-
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
6-
<title>Roopik - Component View</title>
1+
<!doctype html>
2+
<html lang="en">
3+
<head>
4+
<meta charset="UTF-8" />
5+
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
6+
<title>Roopik - Component View</title>
77
<script type="module" crossorigin src="/assets/componentView.js"></script>
88
<link rel="stylesheet" crossorigin href="/assets/componentView.css">
9-
</head>
10-
<body>
11-
<div id="root"></div>
12-
</body>
13-
</html>
9+
</head>
10+
<body>
11+
<div id="root"></div>
12+
</body>
13+
</html>
60 MB
Binary file not shown.

scripts/code.sh

100644100755
File mode changed.

src/vs/workbench/contrib/roopik/electron-main/mcp/installer/mcpInstaller.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,7 @@ import {
4545
// CLI helpers
4646
isCommandAvailable,
4747
executeCommand,
48+
clearMacQuarantine,
4849
getClaudeCodeBinaryPath,
4950
getCodexBinaryPath,
5051
buildClaudeExtensionAddCommand,
@@ -103,6 +104,7 @@ export class McpInstaller extends Disposable {
103104
constructor() {
104105
super();
105106
this._binaryPath = getMcpBinaryPath();
107+
clearMacQuarantine(this._binaryPath);
106108
}
107109

108110
/**

src/vs/workbench/contrib/roopik/electron-main/mcp/installer/mcpInstallerUtils.ts

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -88,6 +88,29 @@ export function getMcpBinaryPath(): string {
8888
}
8989
}
9090

91+
/**
92+
* Strip com.apple.quarantine from the MCP binary on macOS.
93+
*
94+
* When users download Roopik via a browser, Chrome stamps quarantine on every
95+
* file inside the DMG — including this nested binary. Gatekeeper only clears
96+
* quarantine for the top-level .app on first launch; the helper binary keeps
97+
* its own quarantine attribute. External agents (Claude CLI, Cursor, Codex)
98+
* spawn the binary directly in a fresh process tree, so AMFI re-evaluates it
99+
* and kills it (SIGKILL, exit 137) before it can print a single byte.
100+
* Stripping quarantine here — before any registration — fixes that.
101+
*/
102+
export function clearMacQuarantine(binaryPath: string): void {
103+
if (!isMac || !fs.existsSync(binaryPath)) {
104+
return;
105+
}
106+
try {
107+
const { execSync } = require('child_process') as typeof import('child_process');
108+
execSync(`xattr -dr com.apple.quarantine "${binaryPath}"`, { stdio: 'ignore' });
109+
} catch {
110+
// Non-fatal: binary may not have quarantine, or xattr may not be available
111+
}
112+
}
113+
91114
/**
92115
* Get the resources path (where binaries are stored)
93116
*/

0 commit comments

Comments
 (0)