From 6ab0c789b4971397d692f97b477d169a5dc63b55 Mon Sep 17 00:00:00 2001 From: Kirigaya <1193466151@qq.com> Date: Sun, 1 Jun 2025 16:48:14 +0800 Subject: [PATCH] fix bug of saving --- CHANGELOG.md | 1 + renderer/src/hook/color.ts | 5 ++-- src/global.ts | 36 +++++++++++++++++++++++++---- src/sidebar/workspace.controller.ts | 2 +- 4 files changed, 36 insertions(+), 8 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 730a079..2a8a158 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -8,6 +8,7 @@ - 解决 issue#21 最后一个标签页关闭并恢复默认页面。 - 解决 issue#22 工具模块UI异常,现在 openmcp 支持解析 pydantic 进行 typing 的 python mcp 了。 - 优化对象输入框,现在对象输入框具有语法高亮和受限度的自动补全了。 +- 对于 trae 的所有默认主题进行额外支持。 ## [main] 0.1.1 - 修复 SSH 连接 Ubuntu 的情况下的部分 bug diff --git a/renderer/src/hook/color.ts b/renderer/src/hook/color.ts index f0086b0..127d4d6 100644 --- a/renderer/src/hook/color.ts +++ b/renderer/src/hook/color.ts @@ -176,9 +176,10 @@ export class MacroColor { // 额外支持 trae 的默认主题 const sidebarColorString = this.rootStyles.getPropertyValue('--sidebar'); if (sidebarColorString === backgroundColorString) { + // trae 默认主题的特点:sidebarColorString 和 backgroundColorString 一样 + // 把 默认主题的特点:sidebarColorString 的颜色加深一些 const newSidebarColor = this.theme === 'dark' ? '#252a38' : '#edeff2'; - document.documentElement.style.setProperty('--sidebar', newSidebarColor); - pinkLog('修改 sidebar 颜色为' + newSidebarColor); + document.documentElement.style.setProperty('--sidebar', 'var(--vscode-icube-colorBg2)'); } } diff --git a/src/global.ts b/src/global.ts index 7dffb7c..bfa34d2 100644 --- a/src/global.ts +++ b/src/global.ts @@ -68,6 +68,19 @@ export function getConnectionConfig() { let connection; try { connection = JSON.parse(rawConnectionString) as IConnectionConfig; + + // 对连接信息进行校验 + if (!connection.items) { + connection = { items: [] }; + } + + connection.items = connection.items.filter(item => { + if (Array.isArray(item) && item.length === 0) { + return false; + } + return true; + }); + } catch (error) { connection = { items: [] }; } @@ -110,6 +123,19 @@ export function getWorkspaceConnectionConfig() { let connection; try { connection = JSON.parse(rawConnectionString) as IConnectionConfig; + + // 对连接信息进行校验 + if (!connection.items) { + connection = { items: [] }; + } + + connection.items = connection.items.filter(item => { + if (Array.isArray(item) && item.length === 0) { + return false; + } + return true; + }); + } catch (error) { connection = { items: [] }; } @@ -127,7 +153,7 @@ export function getWorkspaceConnectionConfig() { } if (connectionType === 'STDIO' && connection.cwd && connection.cwd.startsWith('{workspace}')) { connection.cwd = connection.cwd.replace('{workspace}', workspacePath).replace(/\\/g, '/'); - } + } } } @@ -169,12 +195,12 @@ export function saveWorkspaceConnectionConfig(workspace: string) { const workspacePath = getWorkspacePath(); for (let item of connectionConfig.items) { - const connections = Array.isArray(item)? item : [item]; + const connections = Array.isArray(item) ? item : [item]; for (let connection of connections) { const connectionType = (connection.type || connection.connectionType).toUpperCase() as ConnectionType; connection.type = undefined; connection.connectionType = connectionType; - + if (connection.filePath && connection.filePath.replace(/\\/g, '/').startsWith(workspacePath)) { connection.filePath = connection.filePath.replace(workspacePath, '{workspace}').replace(/\\/g, '/'); } @@ -283,7 +309,7 @@ export function getWorkspaceConnectionConfigItemByPath(absPath: string) { const normaliseAbsPath = absPath.replace(/\\/g, '/'); for (let item of workspaceConnectionConfig.items) { - const nItem = Array.isArray(item)? item[0] : item; + const nItem = Array.isArray(item) ? item[0] : item; const filePath = normaliseConnectionFilePath(nItem, workspacePath); if (filePath === normaliseAbsPath) { @@ -303,7 +329,7 @@ export function getInstalledConnectionConfigItemByPath(absPath: string) { const normaliseAbsPath = absPath.replace(/\\/g, '/'); for (let item of installedConnectionConfig.items) { - const nItem = Array.isArray(item)? item[0] : item; + const nItem = Array.isArray(item) ? item[0] : item; const filePath = (nItem.filePath || '').replace(/\\/g, '/'); if (filePath === normaliseAbsPath) { diff --git a/src/sidebar/workspace.controller.ts b/src/sidebar/workspace.controller.ts index 8d8a802..d144c5b 100644 --- a/src/sidebar/workspace.controller.ts +++ b/src/sidebar/workspace.controller.ts @@ -51,7 +51,7 @@ export class McpWorkspaceConnectProvider implements vscode.TreeDataProvider