Register Aside with agents and choose the external browser - #333
Merged
Conversation
…owser Adds programa aside <status|install-mcp|uninstall-mcp>, which registers Aside's MCP server (and, with --with-devtools, a chrome-devtools-mcp pointed at Aside's DevTools port) with Claude Code and Codex, plus a File menu entry that runs it. Adds Settings > Browser > Open External Links With and the matching browser.externalBrowser settings.json key so links that leave Programa can go to Aside instead of the system default. Documents the split between the embedded browser and Aside for agents.
…staller Only http(s) links go to the chosen external browser; mailto:, slack:// and other schemes keep their macOS handler. The popup-window insecure-HTTP alert uses the same opener. programa aside uninstall-mcp no longer needs the Aside binary, keeps going when one client fails and reports all failures at the end, and a closed stdin at the confirmation prompt aborts instead of proceeding.
Member
Author
|
Codex cross-model review: 4 medium, 3 low. Verified: scheme scoping, uninstall requiring the aside binary, fail-open confirmation on EOF, and the popup insecure-HTTP alert were real and are fixed in the follow-up commit, with a unit test for the scheme scoping. The launch completion error is now logged; the return value still means dispatched, which the doc comment says. Wrong or left as is: the -y flag is registered in the shared parser the same way as the existing installers; chrome-devtools-mcp@latest stays unpinned on purpose, matching how Codex's own config references it. |
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.
What this does
Makes Aside, a Chromium-based agent browser, a first-class partner for agents running in Programa.
programa aside install-mcpregisters Aside's MCP server with Claude Code and Codex in one step (and--with-devtoolsadds a DevTools Protocol bridge to Aside's live port 9223), so agents can hand logged-in web work to the browser that has the user's sessions. A new Settings > Browser picker sends links that leave Programa to Aside instead of the system default browser. Docs explain when an agent should use Programa's embedded browser versus Aside.Summary
CLI/CLI+Aside.swift: locator for theasidebinary, a report-only probe ofhttp://127.0.0.1:9223/json/version, a pure command-plan builder, andstatus/install-mcp/uninstall-mcpwith the same confirm-then-run flow as the Codex hooks installer. Registration shells out toclaude mcp addandcodex mcp add, so Programa never edits those config files itself. File menu gets "Install Aside Browser MCP…".BrowserLinkOpenSettings.openExternallyroutes every http(s) external open through the chosen browser (browserExternalBrowserBundleIdentifier,browser.externalBrowserin settings.json). Deep-link schemes (slack://,mailto:) still go to the system handler on purpose.docs/aside-browser.md, a Browser work section inSKILL.md, and pointers fromdocs/agent-skill.md,docs/settings-json.md, and the README. The reverse direction (Aside driving a Claude Code pane) is documented as waiting on Aside shipping an MCP client;programa-mcpalready has the tools it would need.Review order:
CLI/CLI+Aside.swift, thenSources/Panels/BrowserSettings.swift, thenSettingsView.swift; the rest is call-site fallout and docs. Pairs with the browser_* MCP tools PR but does not depend on it.Test plan
xcodebuild test -scheme programa-unit -only-testing:programaTests/BrowserLinkOpenSettingsTestspasses (17 tests, verified locally).programa aside statusprints the Aside path, the DevTools endpoint while Aside is running, and "not registered" for both clients.programa aside install-mcp --yeson a machine with Aside, thenclaude mcp listandcodex mcp listshowaside.