Skip to content

fix: 修复添加/编辑 MCP 弹窗环境变量无法新增的问题 - #765

Merged
xerrors merged 2 commits into
xerrors:mainfrom
xiangfei258:fix/mcp-env-editor-key-input
Jun 14, 2026
Merged

fix: 修复添加/编辑 MCP 弹窗环境变量无法新增的问题#765
xerrors merged 2 commits into
xerrors:mainfrom
xiangfei258:fix/mcp-env-editor-key-input

Conversation

@xiangfei258

Copy link
Copy Markdown
Contributor

变更描述

修复添加/编辑 MCP 弹窗中「环境变量」编辑器无法新增变量的问题。

只要某一行填写了 key,点击「添加变量」就无法新增新行,且一旦在 key 中输入字符,已有的多行会被压缩回一行;而只填 value(key 留空)时却能正常新增。

根因McpEnvEditor.vue 存在 rows -> object -> rows 的双向同步回环。rowsToObject 会过滤掉 key 为空的行,rows 变化时 emit 出新对象引用,触发 modelValue watch 用 objectToRows 完全重建 rows,导致只填了 key 的行(包括刚点击「添加变量」生成的空行)被丢弃。只填 value 不触发是因为对象为 null、引用未变,watch 不触发。

修复modelValue watch 中增加回声判断——当传入值与组件自身 emit 的内容(rowsToObject(rows.value))序列化相等时,说明只是回声,直接跳过重建;仅当外部真正传入不同的值时才重建行。改动只涉及逻辑,不改动样式与结构。

变更类型

  • Bug 修复

测试

  • 已在 Docker 环境测试
  • 相关功能正常工作

相关日志或者截图

  • 填 key 后可连续新增多行环境变量
  • 编辑已有 MCP 时环境变量正常回显
  • 删除行、只填 value 等场景行为正常
  • pnpm exec eslint src/components/McpEnvEditor.vue 通过

说明

同步在 docs/develop-guides/changelog.md v0.7.1 开发记录补充了本次修复说明。

环境变量编辑器存在 rows -> object -> rows 的双向同步回环:
rowsToObject 会过滤掉 key 为空的行,emit 新对象后 modelValue
watch 又用 objectToRows 完全重建 rows,导致只填了 key 的行(含
刚点击「添加变量」生成的空行)被冲掉而无法新增。

修复:modelValue watch 中增加回声判断,当传入值与组件自身
emit 的内容序列化相等时跳过重建,仅在外部真正传入不同值时重建行。

@gemini-code-assist gemini-code-assist Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Code Review

This pull request fixes a bug in the MCP environment variable editor (McpEnvEditor.vue) where a two-way synchronization loop discarded newly added empty rows, preventing users from adding new environment variables. The fix avoids rebuilding rows if the incoming value matches the current state. The review feedback correctly identifies a formatting issue in changelog.md where the new changelog entry was accidentally concatenated with an existing one, and suggests splitting them into separate items.

Important

The consumer version of Gemini Code Assist on GitHub is being sunset. Starting June 18, 2026, new organization installations will be blocked, and all code review activity will officially cease on July 17, 2026.
For more details on the timeline and next steps, please review the Help Documentation.

Comment thread docs/develop-guides/changelog.md Outdated
### 开发记录

- 修复 HTML 预览 iframe 高度问题:侧边预览模式改为 `height: 100%` 适应父容器,避免底部内容裁切;全屏预览模式移除 `min-height: calc(80vh - 40px)`,避免短内容下方白边;iframe 设为 `display: block` 消除行内基线间隙导致的底部白边;全屏渲染改用独立 `srcdoc`(不注入 `zoom`)按 100% 显示,侧边预览仍保持 0.75 缩放。
- 修复添加/编辑 MCP 弹窗中环境变量无法新增的问题:环境变量编辑器存在 rows -> object -> rows 的双向同步回环,`modelValue` 变化时会完全根据已有 key 重建行,导致只填了 key 的行(含刚点击「添加变量」生成的空行)被过滤掉而无法新增;现在仅当传入值与组件自身 emit 的内容不一致时才重建行,避免回声覆盖未填 key 的行。:侧边预览模式改为 `height: 100%` 适应父容器,避免底部内容裁切;全屏预览模式移除 `min-height: calc(80vh - 40px)`,避免短内容下方白边;iframe 设为 `display: block` 消除行内基线间隙导致的底部白边;全屏渲染改用独立 `srcdoc`(不注入 `zoom`)按 100% 显示,侧边预览仍保持 0.75 缩放。

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

medium

这里在更新 Changelog 时,不小心把原有的「修复 HTML 预览 iframe 高度问题」这一项的标题给覆盖了,导致两项更新内容被合并到了同一个列表项中(出现了 避免回声覆盖未填 key 的行。:侧边预览模式... 这样的奇怪拼接)。

建议将它们拆分为两个独立的列表项。

Suggested change
- 修复添加/编辑 MCP 弹窗中环境变量无法新增的问题:环境变量编辑器存在 rows -> object -> rows 的双向同步回环,`modelValue` 变化时会完全根据已有 key 重建行,导致只填了 key 的行(含刚点击「添加变量」生成的空行)被过滤掉而无法新增;现在仅当传入值与组件自身 emit 的内容不一致时才重建行,避免回声覆盖未填 key 的行。:侧边预览模式改为 `height: 100%` 适应父容器,避免底部内容裁切;全屏预览模式移除 `min-height: calc(80vh - 40px)`,避免短内容下方白边;iframe 设为 `display: block` 消除行内基线间隙导致的底部白边;全屏渲染改用独立 `srcdoc`(不注入 `zoom`)按 100% 显示,侧边预览仍保持 0.75 缩放。
- 修复添加/编辑 MCP 弹窗中环境变量无法新增的问题:环境变量编辑器存在 rows -> object -> rows 的双向同步回环,`modelValue` 变化时会完全根据已有 key 重建行,导致只填了 key 的行(含刚点击「添加变量」生成的空行)被过滤掉而无法新增;现在仅当传入值与组件自身 emit 的内容不一致时才重建行,避免回声覆盖未填 key 的行。
- 修复 HTML 预览 iframe 高度问题:侧边预览模式改为 `height: 100%` 适应父容器,避免底部内容裁切;全屏预览模式移除 `min-height: calc(80vh - 40px)`,避免短内容下方白边;iframe 设为 `display: block` 消除行内基线间隙导致的底部白边;全屏渲染改用独立 `srcdoc`(不注入 `zoom`)按 100% 显示,侧边预览仍保持 0.75 缩放。

之前编辑误将 MCP 环境变量修复条目与 HTML 预览 iframe 高度修复
条目拼接为一行,且吃掉了 HTML 条目开头描述。现拆分为两条独立
记录并补回完整描述。
@xerrors
xerrors merged commit 13f8009 into xerrors:main Jun 14, 2026
2 checks passed
xerrors added a commit that referenced this pull request Jul 26, 2026
fix: 修复添加/编辑 MCP 弹窗环境变量无法新增的问题
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.

2 participants