Wire up request_connection's Plugins deep link - #449
Merged
TheGreatAxios merged 4 commits intoAug 29, 2026
Conversation
CL-7141: prove `/plugins?connect=<id>` opens that connector's panel and strips the param, ignores an unrecognized id, and confirm the MCP fallback message no longer promises a `/plugins?connect=mcp` link that lands on nothing.
The Plugins page never read `?connect=<id>` from request_connection's fallback link, so it landed on the gallery without opening the named connector. It now reads the param on mount, opens that connector's panel through the same path an in-app "Fix it" click uses, and strips the param so a reload can't replay it. The MCP-server fallback pointed at `/plugins?connect=mcp`, a card that was never built — there is no generic add-custom-MCP-server form by design. That copy now tells the human plainly to use the Plugins page's connector list instead of a link that goes nowhere. Fixes CL-7141.
Covers request_connection's fallback link for a curated MCP preset (/plugins?connect=mcp:<slug>), which the Plugins page's CONNECTOR_REGISTRY check can't match today, and the query-param-stripping bug where the connect handoff drops every other param on the URL.
The Plugins page's connect-param handler only checked CONNECTOR_REGISTRY, so request_connection's fallback link for a curated MCP preset (mcp:<slug>, no fixed registry id) never matched anything. It also replaced the URL with window.location.pathname, dropping every query param instead of just the one it consumed. The page now resolves an mcp:<slug> id against the preset catalog and focuses that preset's own connect button once it has loaded, and strips only the connect param, keeping the rest of the query string intact. Fixes CL-7141.
TheGreatAxios
changed the base branch from
main
to
cl-7138-plugins-page-can-show-the-previous-benchs-pluginsskills
August 28, 2026 18:54
TheGreatAxios
force-pushed
the
cl-7141-request_connections-fallback-link-pluginsconnectltidgt-is
branch
from
August 28, 2026 18:54
910b290 to
ff589e9
Compare
TheGreatAxios
added a commit
that referenced
this pull request
Aug 29, 2026
…allback-link-pluginsconnectltidgt-is Wire up request_connection's Plugins deep link
TheGreatAxios
deleted the
cl-7141-request_connections-fallback-link-pluginsconnectltidgt-is
branch
August 29, 2026 14:29
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.
Fixes CL-7141 — https://linear.app/abklabs/issue/CL-7141
Problem
request_connection's fallback link (packages/connections-tools/src/tool.ts) hands a human a/plugins?connect=<id>URL when it can't post a connect card into the room. For a fixedCONNECTOR_REGISTRYconnector that worked, but for a curated MCP preset (Exa, Granola, Linear, ...)presetDeepLinkemits/plugins?connect=mcp:<slug>— a preset has no fixed registry id — andapps/web/src/pages/plugins-page.tsxonly ever checkedCONNECTOR_REGISTRY[connectId], so that link matched nothing and silently no-opped. Separately, the page's connect-param handler replaced the URL with barewindow.location.pathnameon mount, dropping every other query param (e.g. an in-flightmcpOauthreturn) along with the one it consumed.Change
plugins-page.tsx: the?connect=<id>handler now recognizes anmcp:<slug>id, resolves it against theMCP_PRESETScatalog, and — once the presets section has loaded — focuses that preset's own Connect button, reusing the same curated-preset cards (packages/plugins-ui/src/mcp-preset-cards.tsx) a person would click themselves. A fixed connector id still opens its panel through the existingrequestPluginsConnectpath.connectkey viaURLSearchParams, rebuilding the rest of the query string instead of wiping it.plugins-gallery.tsx/mcp-preset-cards.tsx: threaded an optionalautoConnectPresetSlugprop down to the presets section so it can focus the matching card and report back once handled. Never auto-fires the connect action itself — connecting still takes a person's own click.Tests
apps/web/test/plugins-page.test.tsx: a?connect=mcp:<slug>URL naming a known preset focuses that preset's connect button; an unknown preset slug is ignored; a?connect=<id>URL keeps every other query param; the existing known/unknown fixed-connector cases still pass.bun run checkpassed in full from the worktree root, includingcheck:tool-package-pinsandcheck:tool-package-freshness.