Skip to content

Wire up request_connection's Plugins deep link - #449

Merged
TheGreatAxios merged 4 commits into
cl-7138-plugins-page-can-show-the-previous-benchs-pluginsskillsfrom
cl-7141-request_connections-fallback-link-pluginsconnectltidgt-is
Aug 29, 2026
Merged

TheGreatAxios merged 4 commits into
cl-7138-plugins-page-can-show-the-previous-benchs-pluginsskillsfrom
cl-7141-request_connections-fallback-link-pluginsconnectltidgt-is

Conversation

@TheGreatAxios

@TheGreatAxios TheGreatAxios commented Aug 28, 2026 •

Copy link
Copy Markdown
Contributor

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 fixed CONNECTOR_REGISTRY connector that worked, but for a curated MCP preset (Exa, Granola, Linear, ...) presetDeepLink emits /plugins?connect=mcp:<slug> — a preset has no fixed registry id — and apps/web/src/pages/plugins-page.tsx only ever checked CONNECTOR_REGISTRY[connectId], so that link matched nothing and silently no-opped. Separately, the page's connect-param handler replaced the URL with bare window.location.pathname on mount, dropping every other query param (e.g. an in-flight mcpOauth return) along with the one it consumed.

Change

  • plugins-page.tsx: the ?connect=<id> handler now recognizes an mcp:<slug> id, resolves it against the MCP_PRESETS catalog, 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 existing requestPluginsConnect path.
  • The connect-param strip now removes only the connect key via URLSearchParams, rebuilding the rest of the query string instead of wiping it.
  • plugins-gallery.tsx / mcp-preset-cards.tsx: threaded an optional autoConnectPresetSlug prop 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 check passed in full from the worktree root, including check:tool-package-pins and check:tool-package-freshness.

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
TheGreatAxios changed the base branch from main to cl-7138-plugins-page-can-show-the-previous-benchs-pluginsskills August 28, 2026 18:54
@TheGreatAxios
TheGreatAxios force-pushed the cl-7141-request_connections-fallback-link-pluginsconnectltidgt-is branch from 910b290 to ff589e9 Compare August 28, 2026 18:54
@TheGreatAxios
TheGreatAxios merged commit 64ff65a into main Aug 29, 2026
5 checks passed
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
TheGreatAxios deleted the cl-7141-request_connections-fallback-link-pluginsconnectltidgt-is branch August 29, 2026 14:29
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.

1 participant