From 30358006581bbf3a35d4c4a17234d0b9bb593e58 Mon Sep 17 00:00:00 2001
From: Imzl-zl <69853158+Imzl-zl@users.noreply.github.com>
Date: Fri, 24 Jul 2026 06:11:17 -0700
Subject: [PATCH] fix(settings): keep MCP client tabs scrollable without
overlap
---
.../components/editor/EditorSettingsDialog.vue | 18 +++++++++---------
.../__tests__/mcp/mcpPolicySelection.spec.ts | 17 +++++++++++++++++
2 files changed, 26 insertions(+), 9 deletions(-)
diff --git a/apps/desktop/src/components/editor/EditorSettingsDialog.vue b/apps/desktop/src/components/editor/EditorSettingsDialog.vue
index 8ebe5d891..306447576 100644
--- a/apps/desktop/src/components/editor/EditorSettingsDialog.vue
+++ b/apps/desktop/src/components/editor/EditorSettingsDialog.vue
@@ -5395,15 +5395,15 @@ onUnmounted(cleanupPreviewEditor);
-
- Claude Code
- Cursor
- TRAE
- VS Code
- Windsurf
- Codex
- OpenCode
- Cherry Studio
+
+ Claude Code
+ Cursor
+ TRAE
+ VS Code
+ Windsurf
+ Codex
+ OpenCode
+ Cherry Studio
diff --git a/apps/desktop/src/lib/__tests__/mcp/mcpPolicySelection.spec.ts b/apps/desktop/src/lib/__tests__/mcp/mcpPolicySelection.spec.ts
index cac05360f..15a8eddd1 100644
--- a/apps/desktop/src/lib/__tests__/mcp/mcpPolicySelection.spec.ts
+++ b/apps/desktop/src/lib/__tests__/mcp/mcpPolicySelection.spec.ts
@@ -109,6 +109,23 @@ describe("MCP policy settings state", () => {
expect(settingsDialogSource).toContain(":aria-checked=\"mcpExecutionMode === 'safe_write'\"");
expect(settingsDialogSource).toContain("onMcpExecutionModeKeydown($event, 'safe_write')");
});
+
+ it("keeps MCP client config tabs on a single scrollable row", () => {
+ const tabsStart = settingsDialogSource.indexOf('", tabsStart);
+ const tabsSource = settingsDialogSource.slice(tabsStart, tabsEnd);
+
+ expect(tabsStart).toBeGreaterThan(-1);
+ expect(tabsEnd).toBeGreaterThan(tabsStart);
+ expect(tabsSource).toContain("overflow-x-auto");
+ expect(tabsSource).toContain("min-w-0");
+ expect(tabsSource).toContain("max-w-full");
+ expect(tabsSource).toContain("overscroll-x-contain");
+ expect(tabsSource).not.toContain("flex-wrap");
+ expect(tabsSource).not.toContain("grid-cols-");
+ expect(tabsSource.match(/flex-none shrink-0/g)).toHaveLength(8);
+ expect(tabsSource).not.toContain("min-w-0 px-");
+ });
});
describe("MCP connection search", () => {