From 8d68a527a01b573d4cbe2865767666a7fb6165ac Mon Sep 17 00:00:00 2001 From: t8y2 <1156263951@qq.com> Date: Tue, 21 Jul 2026 12:09:31 +0800 Subject: [PATCH] fix(settings): stabilize MCP permission layout --- .../editor/EditorSettingsDialog.vue | 19 +++++++++++++------ .../__tests__/mcp/mcpPolicySelection.spec.ts | 12 ++++++++++++ 2 files changed, 25 insertions(+), 6 deletions(-) diff --git a/apps/desktop/src/components/editor/EditorSettingsDialog.vue b/apps/desktop/src/components/editor/EditorSettingsDialog.vue index 7b968df1c..b93f33730 100644 --- a/apps/desktop/src/components/editor/EditorSettingsDialog.vue +++ b/apps/desktop/src/components/editor/EditorSettingsDialog.vue @@ -4924,12 +4924,19 @@ onUnmounted(cleanupPreviewEditor); -

- - {{ t("settings.mcpExecutionModeReadOnlyDescription") }} - {{ t("settings.mcpExecutionModeSafeWriteDescription") }} - {{ t("settings.mcpExecutionModeHighRiskWriteDescription") }} -

+ +
+

+ {{ t("settings.mcpExecutionModeReadOnlyDescription") }} +

+

+ {{ t("settings.mcpExecutionModeSafeWriteDescription") }} +

+

+ + {{ t("settings.mcpExecutionModeHighRiskWriteDescription") }} +

+

{{ t("settings.mcpCapabilityTitle") }}

diff --git a/apps/desktop/src/lib/__tests__/mcp/mcpPolicySelection.spec.ts b/apps/desktop/src/lib/__tests__/mcp/mcpPolicySelection.spec.ts index 94fb084ff..a72b0249d 100644 --- a/apps/desktop/src/lib/__tests__/mcp/mcpPolicySelection.spec.ts +++ b/apps/desktop/src/lib/__tests__/mcp/mcpPolicySelection.spec.ts @@ -91,6 +91,18 @@ describe("MCP policy settings state", () => { expect(loadingStart).toBeLessThan(policyLoad); expect(loadingEnd).toBeGreaterThan(policyLoad); }); + + it("keeps translated mode descriptions in one responsive layout track", () => { + const descriptionStart = settingsDialogSource.indexOf("data-mcp-execution-mode-description"); + const descriptionEnd = settingsDialogSource.indexOf("settings.mcpCapabilityTitle", descriptionStart); + const descriptionSource = settingsDialogSource.slice(descriptionStart, descriptionEnd); + + expect(descriptionStart).toBeGreaterThan(-1); + expect(descriptionEnd).toBeGreaterThan(descriptionStart); + expect(descriptionSource).toContain('class="grid text-xs"'); + expect(descriptionSource.match(/col-start-1 row-start-1/g)).toHaveLength(3); + expect(descriptionSource.match(/\? 'visible' : 'invisible'/g)).toHaveLength(3); + }); }); describe("MCP connection search", () => {