Skip to content

chat: replace embedded MCP/plugin editors with compact detail widgets#312465

Merged
joshspicer merged 5 commits intomainfrom
agents/status-update-request
Apr 25, 2026
Merged

chat: replace embedded MCP/plugin editors with compact detail widgets#312465
joshspicer merged 5 commits intomainfrom
agents/status-update-request

Conversation

@joshspicer
Copy link
Copy Markdown
Member

What

Replaces the full-page McpServerEditor and AgentPluginEditor that were embedded inside the Chat Customizations management editor's split-pane detail host with two small dedicated widgets:

  • EmbeddedMcpServerDetail — icon + name + scope + description for an MCP server
  • EmbeddedAgentPluginDetail — icon + name + source + description for an agent plugin

Both are plain Disposable widgets (no EditorPane plumbing) that flow with their container.

Why

The two extension-style editors are designed for a wide standalone editor area. When embedded in the narrow split pane they rendered visually broken — overflowing headers, misaligned chrome, and stretched layouts — no matter how much CSS was layered on top. After repeated attempts to scope extensionEditor.css overrides failed, the cleaner fix is to render purpose-built compact components in the split pane.

Advanced actions (enable / disable / uninstall / configure, contributed items, README) remain accessible via the existing row context menu and from the standalone editors when opened directly. The compact widget intentionally surfaces only identity + description.

Notes for reviewers

  • ~160 lines of .extension-editor CSS overrides removed in favor of focused .ai-customization-embedded-detail styles.
  • An "Open in editor" link initially shipped with the widgets but was removed in a follow-up commit — the full-page editors are still visually broken in several flows, so linking out to them did more harm than good and the link looked out of place in an otherwise minimal header.
  • aiCustomizationManagementEditor.ts no longer calls .layout(Dimension) on the detail widgets during split-view layout (the new components don't need it).
  • 6 new standalone component-explorer fixtures cover the widgets in isolation (workspace/user/empty for MCP, installed/marketplace/empty for plugin), in addition to the existing McpServerDetail / PluginDetail host-editor fixtures.
  • Design doc updated: src/vs/sessions/AI_CUSTOMIZATIONS.md.

Validation

  • npm run compile-check-ts-native
  • npm run valid-layers-check
  • ✅ hygiene
  • ✅ code-review subagent (no significant issues)

Visual verification was blocked locally by an unrelated pre-existing Electron module load error.

joshspicer and others added 3 commits April 24, 2026 16:43
The Chat Customizations management editor previously embedded the full-page
McpServerEditor and AgentPluginEditor inside its split-pane detail host. Those
editors are designed for a wide standalone editor area and rendered visually
broken in the narrow split pane regardless of CSS overrides.

This change introduces two small dedicated detail components,
EmbeddedMcpServerDetail and EmbeddedAgentPluginDetail, which render compactly
in the split pane (icon, name, scope/source, description) and offer an
'Open in editor' link to launch the full standalone editor for advanced flows.

The previous '.extension-editor' host overrides are removed in favor of focused
'.ai-customization-embedded-detail' styles.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Adds six new component-explorer fixtures that render EmbeddedMcpServerDetail
and EmbeddedAgentPluginDetail in isolation (workspace/user/empty for MCP,
installed/marketplace/empty for plugin). These complement the existing host-
editor fixtures and catch regressions in the widgets themselves without
requiring the full management editor stack.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
The full-page McpServerEditor and AgentPluginEditor are visually broken in
several flows, so linking out to them from the compact detail widget did more
harm than  and the link looked out of place in an otherwise minimalgood
header. Drop the link, its handlers, and the now-unused services
(IHoverService, IEditorService, IInstantiationService) along with the related
CSS.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot AI review requested due to automatic review settings April 25, 2026 00:28
@github-actions
Copy link
Copy Markdown
Contributor

github-actions Bot commented Apr 25, 2026

Screenshot Changes

Base: 5886d860 Current: 986ec67a

Changed (62)

chat/aiCustomizations/aiCustomizationManagementEditor/WelcomePage/Dark
Before After
before after
chat/aiCustomizations/aiCustomizationManagementEditor/WelcomePage/Light
Before After
before after
chat/aiCustomizations/aiCustomizationManagementEditor/LocalHarness/Dark
Before After
before after
chat/aiCustomizations/aiCustomizationManagementEditor/LocalHarness/Light
Before After
before after
chat/aiCustomizations/aiCustomizationManagementEditor/CliHarness/Dark
Before After
before after
chat/aiCustomizations/aiCustomizationManagementEditor/CliHarness/Light
Before After
before after
chat/aiCustomizations/aiCustomizationManagementEditor/Sessions/Dark
Before After
before after
chat/aiCustomizations/aiCustomizationManagementEditor/Sessions/Light
Before After
before after
chat/aiCustomizations/aiCustomizationManagementEditor/SessionsSkillsTab/Dark
Before After
before after
chat/aiCustomizations/aiCustomizationManagementEditor/SessionsSkillsTab/Light
Before After
before after
chat/aiCustomizations/aiCustomizationManagementEditor/McpServersTab/Dark
Before After
before after
chat/aiCustomizations/aiCustomizationManagementEditor/McpServersTab/Light
Before After
before after
chat/aiCustomizations/aiCustomizationManagementEditor/AgentsTab/Dark
Before After
before after
chat/aiCustomizations/aiCustomizationManagementEditor/AgentsTab/Light
Before After
before after
chat/aiCustomizations/aiCustomizationManagementEditor/SkillsTab/Dark
Before After
before after
chat/aiCustomizations/aiCustomizationManagementEditor/SkillsTab/Light
Before After
before after
chat/aiCustomizations/aiCustomizationManagementEditor/InstructionsTab/Dark
Before After
before after
chat/aiCustomizations/aiCustomizationManagementEditor/InstructionsTab/Light
Before After
before after
chat/aiCustomizations/aiCustomizationManagementEditor/HooksTab/Dark
Before After
before after
chat/aiCustomizations/aiCustomizationManagementEditor/HooksTab/Light
Before After
before after
chat/aiCustomizations/aiCustomizationManagementEditor/PromptsTab/Dark
Before After
before after
chat/aiCustomizations/aiCustomizationManagementEditor/PromptsTab/Light
Before After
before after
chat/aiCustomizations/aiCustomizationManagementEditor/PluginsTab/Dark
Before After
before after
chat/aiCustomizations/aiCustomizationManagementEditor/PluginsTab/Light
Before After
before after
chat/aiCustomizations/aiCustomizationManagementEditor/PromptsTabScrolled/Dark
Before After
before after
chat/aiCustomizations/aiCustomizationManagementEditor/PromptsTabScrolled/Light
Before After
before after
chat/aiCustomizations/aiCustomizationManagementEditor/McpServersTabScrolled/Dark
Before After
before after
chat/aiCustomizations/aiCustomizationManagementEditor/McpServersTabScrolled/Light
Before After
before after
chat/aiCustomizations/aiCustomizationManagementEditor/PluginsTabScrolled/Dark
Before After
before after
chat/aiCustomizations/aiCustomizationManagementEditor/PluginsTabScrolled/Light
Before After
before after
chat/aiCustomizations/aiCustomizationManagementEditor/McpServersTabNarrow/Dark
Before After
before after
chat/aiCustomizations/aiCustomizationManagementEditor/McpServersTabNarrow/Light
Before After
before after
chat/aiCustomizations/aiCustomizationManagementEditor/AgentsTabNarrow/Dark
Before After
before after
chat/aiCustomizations/aiCustomizationManagementEditor/AgentsTabNarrow/Light
Before After
before after
chat/aiCustomizations/aiCustomizationManagementEditor/AgentsItemEditor/Dark
Before After
before after
chat/aiCustomizations/aiCustomizationManagementEditor/AgentsItemEditor/Light
Before After
before after
chat/aiCustomizations/aiCustomizationManagementEditor/McpServerDetail/Dark
Before After
before after
chat/aiCustomizations/aiCustomizationManagementEditor/McpServerDetail/Light
Before After
before after
chat/aiCustomizations/aiCustomizationManagementEditor/PluginDetail/Dark
Before After
before after
chat/aiCustomizations/aiCustomizationManagementEditor/PluginDetail/Light
Before After
before after
editor/inlineChatAffordance/InlineChatAffordance/Dark
Before After
before after
editor/inlineChatAffordance/InlineChatAffordance/Light
Before After
before after
editor/inlineCompletions/other/HintsToolbar/Dark
Before After
before after
editor/inlineCompletions/other/HintsToolbar/Light
Before After
before after
editor/inlineCompletions/other/HintsToolbarHovered/Dark
Before After
before after
editor/inlineCompletions/other/HintsToolbarHovered/Light
Before After
before after
editor/inlineCompletions/views/SideBySideViewSmall/Dark
Before After
before after
editor/inlineCompletions/views/SideBySideViewSmall/Light
Before After
before after
editor/inlineCompletions/views/SideBySideViewWide/Dark
Before After
before after
editor/inlineCompletions/views/SideBySideViewWide/Light
Before After
before after
editor/inlineCompletions/views/WordReplacementView/Dark
Before After
before after
editor/inlineCompletions/views/WordReplacementView/Light
Before After
before after
editor/inlineCompletions/views/DeletionView/Dark
Before After
before after
editor/inlineCompletions/views/DeletionView/Light
Before After
before after
editor/inlineCompletions/views/LineReplacementView/Dark
Before After
before after
editor/inlineCompletions/views/LineReplacementView/Light
Before After
before after
editor/multiDiffEditor/MultiDiffEditor/Dark
Before After
before after
editor/multiDiffEditor/MultiDiffEditor/Light
Before After
before after
editor/suggestWidget/MethodCompletions/Dark
Before After
before after
editor/suggestWidget/MethodCompletions/Light
Before After
before after
peekReference/PeekReferences/Dark
Before After
before after
peekReference/PeekReferences/Light
Before After
before after

Added (16)

chat/aiCustomizations/aiCustomizationManagementEditor/McpServerDetailNarrow/Dark

current

chat/aiCustomizations/aiCustomizationManagementEditor/McpServerDetailNarrow/Light

current

chat/aiCustomizations/aiCustomizationManagementEditor/PluginDetailNarrow/Dark

current

chat/aiCustomizations/aiCustomizationManagementEditor/PluginDetailNarrow/Light

current

chat/aiCustomizations/aiCustomizationManagementEditor/EmbeddedMcpDetailWorkspace/Dark

current

chat/aiCustomizations/aiCustomizationManagementEditor/EmbeddedMcpDetailWorkspace/Light

current

chat/aiCustomizations/aiCustomizationManagementEditor/EmbeddedMcpDetailUser/Dark

current

chat/aiCustomizations/aiCustomizationManagementEditor/EmbeddedMcpDetailUser/Light

current

chat/aiCustomizations/aiCustomizationManagementEditor/EmbeddedMcpDetailEmpty/Dark

current

chat/aiCustomizations/aiCustomizationManagementEditor/EmbeddedMcpDetailEmpty/Light

current

chat/aiCustomizations/aiCustomizationManagementEditor/EmbeddedPluginDetailInstalled/Dark

current

chat/aiCustomizations/aiCustomizationManagementEditor/EmbeddedPluginDetailInstalled/Light

current

chat/aiCustomizations/aiCustomizationManagementEditor/EmbeddedPluginDetailMarketplace/Dark

current

chat/aiCustomizations/aiCustomizationManagementEditor/EmbeddedPluginDetailMarketplace/Light

current

chat/aiCustomizations/aiCustomizationManagementEditor/EmbeddedPluginDetailEmpty/Dark

current

chat/aiCustomizations/aiCustomizationManagementEditor/EmbeddedPluginDetailEmpty/Light

current

Copy link
Copy Markdown
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR updates the AI Customizations management editor’s split-pane detail host to use purpose-built compact DOM widgets for MCP servers and agent plugins, replacing the previously embedded full-page editor panes that didn’t scale down well in narrow layouts.

Changes:

  • Replace embedded McpServerEditor / AgentPluginEditor usage with EmbeddedMcpServerDetail / EmbeddedAgentPluginDetail compact widgets.
  • Update management editor CSS to support scrolling + flex sizing for the new embedded detail widgets.
  • Add/adjust component explorer fixtures and update the Sessions design doc for the new embedded detail approach.
Show a summary per file
File Description
src/vs/workbench/contrib/chat/browser/aiCustomization/aiCustomizationManagementEditor.ts Swaps embedded editor panes for compact embedded detail widgets; removes layout calls for those panes.
src/vs/workbench/contrib/chat/browser/aiCustomization/embeddedMcpServerDetail.ts New compact MCP server identity/description widget for split-pane detail.
src/vs/workbench/contrib/chat/browser/aiCustomization/embeddedAgentPluginDetail.ts New compact agent plugin identity/description widget for split-pane detail.
src/vs/workbench/contrib/chat/browser/aiCustomization/media/aiCustomizationManagement.css Adds shared .ai-customization-embedded-detail styling and adjusts detail container overflow/min-height.
src/vs/workbench/test/browser/componentFixtures/sessions/aiCustomizationManagementEditor.fixture.ts Adds new standalone fixtures for the embedded widgets and improves first-row selection for MCP/plugin lists.
src/vs/sessions/AI_CUSTOMIZATIONS.md Documents the embedded detail widget approach in the Sessions design doc.

Copilot's findings

  • Files reviewed: 6/6 changed files
  • Comments generated: 2

Comment thread src/vs/workbench/contrib/chat/browser/aiCustomization/embeddedMcpServerDetail.ts Outdated
Comment thread src/vs/sessions/AI_CUSTOMIZATIONS.md Outdated
dmitrivMS
dmitrivMS previously approved these changes Apr 25, 2026
- EmbeddedMcpServerDetail: server.codicon already contains the full codicon
  class name (e.g. "codicon-foo"), matching the pattern in
  mcpServerWidgets.ts. The previous code prefixed it again and validated
  against the Codicon registry, so custom server icons never rendered. Mirror
  the existing pattern: `codicon ${server.codicon}` when set, otherwise the
  themed mcpServerIcon.
- AI_CUSTOMIZATIONS.md: drop stale mention of the "Open in editor" link, which
  was removed earlier in this branch.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
roblourens
roblourens previously approved these changes Apr 25, 2026
The AICustomizationManagementEditor constructor calls
harnessService.findHarnessById, which the fixture mock did not
implement. This caused all renderEditor-based fixtures (including
McpServerDetailNarrow and PluginDetailNarrow) to crash during
construction and produce blank screenshots in CI.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
@joshspicer joshspicer enabled auto-merge (squash) April 25, 2026 20:55
@joshspicer joshspicer merged commit 37eaefa into main Apr 25, 2026
39 of 41 checks passed
@joshspicer joshspicer deleted the agents/status-update-request branch April 25, 2026 21:11
@vs-code-engineering vs-code-engineering Bot added this to the 1.118.0 milestone Apr 25, 2026
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.

4 participants