console: redesign connect modal as MCP-first connect drawer - #38163
Draft
leedqin wants to merge 1 commit into
Draft
console: redesign connect modal as MCP-first connect drawer#38163leedqin wants to merge 1 commit into
leedqin wants to merge 1 commit into
Conversation
Replaces the connect modal with a side drawer implementing the new connect designs (Linear: Improved Connect Modal, CNS-124). The drawer has three method tabs: MCP Server (default), External tools, and Terminal. The MCP tab walks through choosing the Developer or Agent server, connecting a client (Claude Code, Cursor, Claude Desktop, VS Code, Windsurf, Codex CLI, or other) with per-client config snippets and one-click install deep links for Cursor and VS Code, and installing agent skills. The External tools tab shows copyable connection details with inline app password creation and DBeaver, dbt, and .env snippets. The Terminal tab shows the psql command. The three previous modal variants (cloud, self-managed OIDC, self-managed password) and the unused McpConnectModal are replaced by one ConnectDrawer driven by appConfig.mode, OIDC availability, and the existing 26.30.0 OAuth environment gate. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
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.
Motivation
Implements the Improved Connect Modal Linear project (CNS-124, with CNS-125, CNS-126, CNS-127, CNS-128, CNS-129): make it easier for customers to get connection instructions through the console. Follows the design prototype at https://connect-modal-eight.vercel.app/.
What changes
The connect modal becomes a right-side drawer ("Connect to Materialize") with three method tabs:
mcpServersJSON with the config file path, or TOML for Codex). Cursor and VS Code additionally get one-click install buttons via theircursor://andvscode:mcp/installURL handlers. OAuth is the default flow where the environment supports it (existing 26.30.0 gate), with a "Use a token instead" toggle that injects a Basic auth header into the snippets. Install links are only generated for the OAuth flow so tokens never end up in URLs.The three previous modal variants (cloud
ConnectModal,OidcConnectModal,PasswordConnectModal) and the unreferencedMcpConnectModalare deleted and replaced by oneConnectDrawerdriven byappConfig.mode, OIDC availability, and the environment gate. Self-managed OIDC surfaces the ID token as the password. Pure snippet and deep link builders live inconnectOptions.ts.The App Passwords page per-row Connect button opens the same drawer pinned to the service account user, with password creation hidden.
Deviations from the design mock
environmentdScheme) instead of hardcodingrequire.Testing
connectOptions.test.ts) and for drawer behavior across tabs, client switching, server switching, and app password creation with MSW (ConnectDrawer.test.tsx).connectRegionPostgreskeeps working: theconnect-menu-buttontest id, the "External tools" button name, and the Host, Port, and Database aria-labels are all preserved.🤖 Generated with Claude Code