From 8a0eef4ad4d570ef24b21a3c9c7e640b143b95a3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=A8=8B=E5=BA=8F=E5=91=98=E9=98=BF=E6=B1=9F=28Relakkes?= =?UTF-8?q?=29?= Date: Fri, 12 Jun 2026 12:46:05 +0800 Subject: [PATCH] fix(desktop): clarify MCP configuration title Replace the editable MCP server heading with neutral configuration copy so the settings page does not imply an update action is running. Fixes #763 Tested: cd desktop && bun run test -- src/__tests__/mcpSettings.test.tsx Tested: cd desktop && bun run lint Not-tested: full verify and coverage, scoped desktop copy/test change only Confidence: high Scope-risk: narrow --- desktop/src/__tests__/mcpSettings.test.tsx | 34 ++++++++++++++++++++++ desktop/src/i18n/locales/en.ts | 2 +- desktop/src/i18n/locales/jp.ts | 2 +- desktop/src/i18n/locales/kr.ts | 2 +- desktop/src/i18n/locales/zh-TW.ts | 2 +- desktop/src/i18n/locales/zh.ts | 2 +- 6 files changed, 39 insertions(+), 5 deletions(-) diff --git a/desktop/src/__tests__/mcpSettings.test.tsx b/desktop/src/__tests__/mcpSettings.test.tsx index 23bffbcf..277cb9b8 100644 --- a/desktop/src/__tests__/mcpSettings.test.tsx +++ b/desktop/src/__tests__/mcpSettings.test.tsx @@ -339,6 +339,40 @@ describe('McpSettings', () => { expect(deleteServer).toHaveBeenCalledWith(server, '/workspace/project') }) + it('uses a neutral title when configuring an editable MCP server', async () => { + const server = { + name: 'filesystem', + scope: 'user', + transport: 'stdio', + enabled: true, + status: 'connected', + statusLabel: 'Connected', + configLocation: '/tmp/config', + summary: 'npx @modelcontextprotocol/server-filesystem', + canEdit: true, + canRemove: true, + canReconnect: true, + canToggle: true, + config: { + type: 'stdio', + command: 'npx', + args: ['@modelcontextprotocol/server-filesystem'], + env: {}, + }, + } as const + + useMcpStore.setState({ servers: [server] }) + + await renderLoadedMcpSettings() + + await act(async () => { + fireEvent.click(screen.getByRole('button', { name: 'Open filesystem' })) + }) + + expect(screen.getByRole('heading', { name: 'Configure filesystem MCP' })).toBeInTheDocument() + expect(screen.queryByRole('heading', { name: 'Update filesystem MCP' })).not.toBeInTheDocument() + }) + it('uses the active cwd when toggling a server', async () => { const toggleServer = vi.fn().mockResolvedValue(undefined) const server = { diff --git a/desktop/src/i18n/locales/en.ts b/desktop/src/i18n/locales/en.ts index 8722011a..ead35092 100644 --- a/desktop/src/i18n/locales/en.ts +++ b/desktop/src/i18n/locales/en.ts @@ -586,7 +586,7 @@ export const en = { 'settings.mcp.form.back': 'Back to servers', 'settings.mcp.form.createTitle': 'Connect to a custom MCP', 'settings.mcp.form.createHint': 'Set up a custom MCP server with the fields supported by Claude Code today.', - 'settings.mcp.form.editTitle': 'Update {name} MCP', + 'settings.mcp.form.editTitle': 'Configure {name} MCP', 'settings.mcp.form.editHint': 'Review connection details, save changes, or reconnect this server from the desktop app.', 'settings.mcp.form.transportLocked': 'If you would like to switch MCP server type, uninstall first.', 'settings.mcp.form.uninstall': 'Uninstall', diff --git a/desktop/src/i18n/locales/jp.ts b/desktop/src/i18n/locales/jp.ts index 00f696af..c2c923f8 100644 --- a/desktop/src/i18n/locales/jp.ts +++ b/desktop/src/i18n/locales/jp.ts @@ -588,7 +588,7 @@ export const jp: Record = { 'settings.mcp.form.back': 'サーバー一覧に戻る', 'settings.mcp.form.createTitle': 'カスタム MCP に接続', 'settings.mcp.form.createHint': '現在 Claude Code がサポートするフィールドでカスタム MCP サーバーをセットアップします。', - 'settings.mcp.form.editTitle': '{name} MCP を更新', + 'settings.mcp.form.editTitle': '{name} MCP を設定', 'settings.mcp.form.editHint': '接続の詳細を確認し、変更を保存するか、このサーバーをデスクトップアプリから再接続します。', 'settings.mcp.form.transportLocked': 'MCP サーバーの種類を切り替えるには、まずアンインストールしてください。', 'settings.mcp.form.uninstall': 'アンインストール', diff --git a/desktop/src/i18n/locales/kr.ts b/desktop/src/i18n/locales/kr.ts index c401d458..2976bcb7 100644 --- a/desktop/src/i18n/locales/kr.ts +++ b/desktop/src/i18n/locales/kr.ts @@ -588,7 +588,7 @@ export const kr: Record = { 'settings.mcp.form.back': '서버 목록으로 돌아가기', 'settings.mcp.form.createTitle': '사용자 지정 MCP에 연결', 'settings.mcp.form.createHint': '현재 Claude Code가 지원하는 필드로 사용자 지정 MCP 서버를 설정합니다.', - 'settings.mcp.form.editTitle': '{name} MCP 업데이트', + 'settings.mcp.form.editTitle': '{name} MCP 설정', 'settings.mcp.form.editHint': '연결 세부 정보를 확인하고 변경 사항을 저장하거나 데스크톱 앱에서 이 서버를 다시 연결합니다.', 'settings.mcp.form.transportLocked': 'MCP 서버 유형을 전환하려면 먼저 제거하세요.', 'settings.mcp.form.uninstall': '제거', diff --git a/desktop/src/i18n/locales/zh-TW.ts b/desktop/src/i18n/locales/zh-TW.ts index 7a218ddd..2bcc8e83 100644 --- a/desktop/src/i18n/locales/zh-TW.ts +++ b/desktop/src/i18n/locales/zh-TW.ts @@ -588,7 +588,7 @@ export const zh: Record = { 'settings.mcp.form.back': '返回服務列表', 'settings.mcp.form.createTitle': '連線自定義 MCP', 'settings.mcp.form.createHint': '按當前 Claude Code 支援的欄位新增一個自定義 MCP 服務。', - 'settings.mcp.form.editTitle': '更新 {name} MCP', + 'settings.mcp.form.editTitle': '設定 {name} MCP', 'settings.mcp.form.editHint': '檢視連線資訊、儲存修改,或直接在桌面端重連這個服務。', 'settings.mcp.form.transportLocked': '如果你想切換 MCP 服務型別,請先解除安裝後重新新增。', 'settings.mcp.form.uninstall': '解除安裝', diff --git a/desktop/src/i18n/locales/zh.ts b/desktop/src/i18n/locales/zh.ts index d0e6822f..e90bed32 100644 --- a/desktop/src/i18n/locales/zh.ts +++ b/desktop/src/i18n/locales/zh.ts @@ -588,7 +588,7 @@ export const zh: Record = { 'settings.mcp.form.back': '返回服务列表', 'settings.mcp.form.createTitle': '连接自定义 MCP', 'settings.mcp.form.createHint': '按当前 Claude Code 支持的字段添加一个自定义 MCP 服务。', - 'settings.mcp.form.editTitle': '更新 {name} MCP', + 'settings.mcp.form.editTitle': '配置 {name} MCP', 'settings.mcp.form.editHint': '查看连接信息、保存修改,或直接在桌面端重连这个服务。', 'settings.mcp.form.transportLocked': '如果你想切换 MCP 服务类型,请先卸载后重新添加。', 'settings.mcp.form.uninstall': '卸载',