darwin: replace Chromium with Helium for Chrome-only tooling - #33
Merged
Conversation
zap cleanup uninstalls Chromium (app + data) on the next rebuild. Chrome-only tooling that probed for a Chromium/Chrome binary is re-pointed at Helium by the helium-chrome-shim module (next commit).
…ling launches Helium Puppeteer (chrome-devtools-mcp, Playwright channel:"chrome") resolves channel 'stable' on macOS by probing the literal path /Applications/Google Chrome.app/Contents/MacOS/Google Chrome with an existence-only accessSync — no env override, and the Claude Code plugin's MCP args aren't user-overridable. With the chromium cask gone that broke chrome-devtools-mcp on the Macs. Plant a 2-line exec wrapper at the probed path on every rebuild (postActivation, order 1700). exec keeps the PID, so puppeteer's launch/close semantics are unchanged — verified headful/headless × isolated/persistent-profile × SIGTERM/stdin-EOF close (no orphans) × --browserUrl attach (disconnects, browser survives). Guards: no-op and self-cleaning when Helium.app is absent; refuses to touch a real Google Chrome (Mach-O magic, not '#!'). Docs: dated learned-behaviour entry in docs/helium.md; knowledge bundle gains the module doc, a decision record (shim vs MCP-config rewiring), and an upgraded homebrew.md (zap-cleanup gotcha).
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Chromium is out; Helium is the browser. Two commits:
chromiumHomebrew cask —onActivation.cleanup = "zap"uninstalls Chromium (app + data) on the next rebuild.modules/darwin/helium-chrome-shim.nix— new universal darwin module that keeps Chrome-only tooling working: Puppeteer (chrome-devtools-mcp, Playwrightchannel: "chrome") resolves channelstableon macOS by probing the literal/Applications/Google Chrome.app/Contents/MacOS/Google Chromepath with an existence-onlyaccessSync, honors no env var, and the Claude Code plugin's MCP args aren't user-overridable. The module plants a 2-lineexecwrapper at that exact path each rebuild (postActivation, order 1700), forwarding to Helium's real binary.execpreserves the PID, so Puppeteer's launch and close semantics are unchanged.Guards
Helium.appis absent#!script check)~/.cache/chrome-devtools-mcp/), never the user'sVerification
Empirically tested through the real MCP server (stdio handshake + tool calls), all via the default Chrome-discovery path the unmodified plugin uses:
HeadlessChrome/150UA--browserUrlattach, server stopLive plugin tools drove Helium without a session restart. Host
ksystem builds;statix/deadnixclean;okf validateexits 0.Docs
docs/helium.md: dated learned-behaviour entry with the full matrixknowledge/: module doc, decision record (why a filesystem shim beats patching the plugin'splugin.jsonor replacing the MCP server), upgradedhomebrew.mdstub, log entry