Skip to content

chore: release v2.2.0 - #401

Merged
ceilf6 merged 2 commits into
developfrom
release/v2.2.0
Jul 30, 2026
Merged

chore: release v2.2.0#401
ceilf6 merged 2 commits into
developfrom
release/v2.2.0

Conversation

@ceilf6

@ceilf6 ceilf6 commented Jul 30, 2026

Copy link
Copy Markdown
Owner

Linked Issue Or Context

Summary

  • Bump all workspace packages, the VS Code extension, and the desktop app from 2.1.1 to 2.2.0.
  • Add 2.2.0 sections to CHANGELOG.md, docs/CHANGELOG-CN.md, and apps/vscode/CHANGELOG.md; add docs/releases/v2.2.0.md (incl. Compatibility section).
  • Align the README / CN README release snapshot and the mcp-web-fetch runtime VERSION constant + default User-Agent to 2.2.0 (Repo Guard findings 1–3, addressed in 080f038).

Impact Scope

  • Version fields, changelog/release documentation, README snapshots, and two version string constants in packages/mcp-web-fetch; no behavioral code.

GitNexus Impact Summary

  • Risk level: LOW
  • Critical skeleton changes: authority-docs (README.md snapshot lines) with matching scripts/tests/ coverage unchanged and passing
  • GitNexus impact: detect_changes N/A for version metadata; index refreshed locally (5735 symbols / 300 flows) — the canonical .gitnexus update is staged on local branch chore/gitnexus-index-2.2.0 because the ~78MB index blob exceeds what the current network path can push (repeated HTTP 408; SSH blocked). That follow-up will also reconcile the gitnexus devDependency pin (1.6.6) with the 1.6.9 binary used for the refresh, or regenerate under the pinned version (Repo Guard finding 4).
  • Verification: pnpm quality:precommit green; pnpm contract:local passed; packages/mcp-web-fetch vitest 44/44.

Verification

  • pnpm quality:precommit: lint / typecheck / workspace tests / workflow rules all green.
  • pnpm contract:local: GitNexus contract passed.
  • packages/mcp-web-fetch: 44/44 tests green after version-constant alignment.

Checklist

  • I have linked an issue or explained why this PR stands alone.
  • I have kept the diff focused on the stated change.
  • I have run pnpm quality:precommit, or explained why it could not run.
  • I have run pnpm quality:local for critical skeleton changes, or explained why it could not run. (Metadata-only; precommit + contract gates ran.)
  • I have updated docs or tests when behavior, public APIs, or Harness contracts changed.
  • For critical skeleton changes, I have filled the GitNexus impact summary with concrete results.

🤖 Generated with Claude Code

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>

@github-actions github-actions Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

🛡️ ceilf6/repo-guard

代码评审报告: chore: release v2.2.0

风险等级:
处理建议: 请求修改
决策摘要: 版本 bump 本身覆盖完整且 changelog 事实准确,但发版范围内漏了两处版本引用(README 的 "Current Release Snapshot" 仍写 2.1.1,mcp-web-fetch 运行时 VERSION 常量与 User-Agent 仍是 2.1.1),两者都随 npm 包发布,打 tag 前补齐即可合并。

级联分析

  • 变更符号: 无代码符号变更;仅 14 个 package.jsonversion 字段 + 3 个 changelog + 1 个新增 release note。
  • 受影响流程: pnpm buildscripts/sync-vscode-version.mjs(已确认按 root version 同步 apps/vscode/package.json,本 PR 已手工对齐,脚本不会再改写);npm 发布产物(root filesREADME.mdCHANGELOG.mddocs/releases/**);desktop release workflow 按 version tag 产出 zip(apps/desktop 已同步 2.2.0)。
  • 变更集外调用方: 全仓 grep 2.1.1(排除 changelog/lockfile)发现 3 处遗留:README.md:55,58,60docs/README-CN.md:54,57,59packages/mcp-web-fetch/src/types.ts:5src/engine.ts:41apps/cli/package.json 仍为 0.1.0,但 v2.1.1 时代亦然(属工作区内部包,被 root bundle 打进 dist/index.mjs),判定为既有约定而非本 PR 回归。
  • 置信度: medium(无代码图谱证据,结论来自仓库只读检查 + 全仓文本搜索;对 metadata/docs 类变更该证据强度足够,但 #386/#392/#400 的 issue 上下文未提供,相关 changelog 条目只能对照代码而非验收标准核验)

问题发现

  1. [中] README 发布快照未随本次 bump 更新,且与本 PR 自己的 VS Code changelog 自相矛盾

    • 证据: README.md:55 "currently aligned on frontagent@2.1.1"、README.md:58 "packages apps/vscode/frontagent-2.1.1.vsix"、README.md:60 "v2.1.1 focus: ...";中文版同段 docs/README-CN.md:54,57,59。而本 PR 新增的 apps/vscode/CHANGELOG.md:9 声明 "Build output now packages the frontagent-2.2.0.vsix artifact"。root package.json:15files 包含 README.md,该文件会作为 2.2.0 的 npm 包首页发布。
    • 受影响调用方/流程: npm 包页面、仓库首页、中文文档读者;docs/releases/v2.1.1.md:56-57 显示该"版本快照"段落是历次发版都维护的字段。
    • 最小可行修复: 把 README.md:55,58,60docs/README-CN.md:54,57,592.1.1 改为 2.2.0,并把 "focus" 一行换成 2.2.0 的要点(桌面端 / headless / session resume / 权限规则)。
  2. [中] @frontagent/mcp-web-fetch 的包版本与运行时版本常量脱钩

    • 证据: packages/mcp-web-fetch/package.json:3 升至 2.2.0,但 packages/mcp-web-fetch/src/types.ts:5 仍为 export const VERSION = '2.1.1'(经 src/index.ts:18 对外导出),packages/mcp-web-fetch/src/engine.ts:41DEFAULT_USER_AGENT = 'frontagent-mcp-web-fetch/2.1.1 (+https://github.com/frontagent)' 也独立硬编码同一版本号。
    • 受影响调用方/流程: 该常量是公共导出,UA 会出现在对外 HTTP 请求头里;对照其他 adapter(packages/mcp-web/src/server.ts:24packages/mcp-file/src/server.ts:32 用与包版本解耦的 '0.1.0'),mcp-web-fetch 这两处显然是按发布版本写的,本次漏改即产生漂移,且下次发版会重复漏。
    • 最小可行修复: 本次把两处改为 2.2.0;更彻底的做法是让 engine.ts 的 UA 复用 VERSION,把版本号收敛到单一常量(可选,不阻塞)。
  3. [低] 新增 release note 缺少历次版本都有的 Compatibility 段

    • 证据: docs/releases/v2.1.1.md:54-59 有 "Compatibility"(CLI 版本、VS Code 扩展版本、Node >=20.0.0、VS Code ^1.120.0),docs/releases/v2.2.0.md 以 "Verification" 结束,无对应段落。这些 release note 通过 root filesdocs/releases/**/* 随包发布。
    • 受影响调用方/流程: 升级用户的兼容性判断;apps/vscode/package.json:23 确认 engine 仍为 ^1.120.0,信息现成。
    • 最小可行修复: 在 docs/releases/v2.2.0.md 末尾补 4 行 Compatibility,与 v2.1.1 模板一致。
  4. [低] 验证证据与仓库锁定的 GitNexus 版本不一致,且 canonical 索引被推迟到后续分支

    • 证据: PR 描述称索引"refreshed locally with gitnexus 1.6.9",但 package.json:81 固定 "gitnexus": "1.6.6"scripts/tests/workflow-rules.test.mjs:271 断言 assert.equal(pkg.devDependencies.gitnexus, '1.6.6');同时 .gitnexus 索引更新因 push 体积问题留在后续分支。
    • 受影响调用方/流程: 本 PR 只改 metadata/docs,无符号变更,索引滞后不影响本次合并;但发版 commit 上的图谱证据会短暂失配,后续基于该索引的 CR 会降级。
    • 最小可行修复: 不阻塞本 PR;在 PR 描述中明确记录后续索引分支的编号,并确认索引最终以仓库锁定的 1.6.6 重新生成(或同步更新 pin 与断言)。

已核验为准确、无需改动的部分:#396 的 symlink 修复(apps/cli/src/index.ts:646-658 使用 realpathSync 回退,index.test.ts:197-225 覆盖 symlink/非直连/不存在路径)、#397 的 workflow 断言(scripts/tests/workflow-rules.test.mjs:531 已接受 vars 表达式)、guard 条目(packages/core/src/agent/agent.ts:96 传递 checkspackages/hallucination-guard/src/guard.test.ts:264 覆盖"禁用 fileExistence 仍拦截越界路径")、以及 Known Issues 中 hallucinationGuard.enabled 为 dead config 的自陈(全仓 .ts 内无任何 .enabled 读取点)。changelog 未发现夸大或虚假条目。

行级发现

  • [packages/mcp-web-fetch/package.json:3] 包版本升到 2.2.0,但 src/types.ts:5VERSIONsrc/engine.ts:41 的 User-Agent 仍硬编码 2.1.1;同批把这两处改为 2.2.0(或让 UA 复用 VERSION)。
  • [apps/vscode/CHANGELOG.md:9] 这里声明构建产物为 frontagent-2.2.0.vsix,但 README.md:58 仍写 frontagent-2.1.1.vsix;更新 README/CN README 的发布快照段以消除矛盾。
  • [docs/releases/v2.2.0.md:51] 相比 docs/releases/v2.1.1.md:54-59,本篇缺少 Compatibility 段;在此后补 CLI 版本、VS Code 扩展版本、Node >=20.0.0、VS Code ^1.120.0 四行。

Karpathy 评审

  • 假设: PR 假定"只改版本字段和 changelog"就完成了发版,但仓库实际把版本号还散落在 README 快照段和 mcp-web-fetch 运行时常量里;这个隐含假设是本次两处遗漏的根因。发版流程只有 sync-vscode-version.mjs 一处自动化,其余靠手工同步,无 gate 兜底。
  • 简洁性: 无新增抽象、无投机性设计,changelog 组织按 Added/Fixed/Changed/Tests 分类清晰,中英双语内容对齐一致。
  • 结构质量: 无结构退化。未跨越文件行数边界,未引入分支、wrapper 或共享路径特例。唯一可谈的结构点是 mcp-web-fetch 版本号有两处独立真值来源,属既有问题,本次可顺手收敛但不强求。
  • 变更范围: 范围克制且与 stated goal 完全对应,无夹带重构或格式噪声。docs/CHANGELOG-CN.md## [2.1.1] 前多出一个空行,属可忽略的格式差异。
  • 验证: pnpm quality:precommit / pnpm contract:local 对 metadata 变更是合适的验证强度,本 diff 无运行时行为可测。剩余风险在于没有任何自动检查能捕获"版本号漏改"这类遗漏(见缺失覆盖)。

缺失覆盖

  • 无版本一致性 gate:建议在 scripts/tests/workflow-rules.test.mjs 增加一条断言,校验所有非 private 工作区包的 version 与 root package.json 一致(apps/cli 若属有意例外则显式加入白名单),可直接拦截本次这类遗漏。
  • 无"发布文档不含过期版本号"检查:可在同一测试中断言 README.md / docs/README-CN.md 的发布快照段包含当前 root version,避免每次发版靠人工 grep。
  • mcp-web-fetchVERSION 常量无测试锚定到 package.json,导致导出版本与包版本可以静默漂移。

{
"name": "@frontagent/mcp-web-fetch",
"version": "2.1.1",
"version": "2.2.0",

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

包版本升到 2.2.0,但 src/types.ts:5VERSIONsrc/engine.ts:41 的 User-Agent 仍硬编码 2.1.1;同批把这两处改为 2.2.0(或让 UA 复用 VERSION)。

Comment thread apps/vscode/CHANGELOG.md
- Bundled runtime migrated to the AI SDK v5 line; the OpenAI provider now explicitly targets the Chat Completions endpoint for OpenAI-compatible base URLs.
- Inherited the guard, planner, session-resume, and lifecycle-hook fixes from the 2.2.0 core packages.
- Kept the minimum VS Code engine requirement at `^1.120.0`.
- Build output now packages the `frontagent-2.2.0.vsix` artifact through the root `pnpm build` script.

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

这里声明构建产物为 frontagent-2.2.0.vsix,但 README.md:58 仍写 frontagent-2.1.1.vsix;更新 README/CN README 的发布快照段以消除矛盾。

Comment thread docs/releases/v2.2.0.md
## Verification

- `pnpm quality:precommit` (lint, typecheck, workspace tests, workflow rules) green at release.
- CLI symlink invocation verified against the packaged bundle (`fa --version` via a bin symlink).

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

相比 docs/releases/v2.1.1.md:54-59,本篇缺少 Compatibility 段;在此后补 CLI 版本、VS Code 扩展版本、Node >=20.0.0、VS Code ^1.120.0 四行。

…to 2.2.0

Address Repo Guard review on #401: README/CN release snapshots, the
mcp-web-fetch VERSION constant and default User-Agent, and the missing
Compatibility section in the v2.2.0 release note.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>

@github-actions github-actions Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

🛡️ ceilf6/repo-guard

代码评审报告: chore: release v2.2.0

风险等级:
处理建议: 评论
决策摘要: 可以合并——版本元数据与文档在整个 workspace 内一致,仓库内已无遗留 2.1.1 引用(除历史 changelog / release notes 与一段 UA 测试夹具),两条非阻塞项是 mcp-web-fetch 里手工维护的版本常量缺少同步门禁,以及 PR 描述中关于 .gitnexus 后续分支的说法与仓库实际状态不符。

级联分析

  • 变更符号: VERSION (packages/mcp-web-fetch/src/types.ts:5)、DEFAULT_USER_AGENT (packages/mcp-web-fetch/src/engine.ts:41),其余为 12 个 workspace package 的 version 字段与文档。
  • 受影响流程: CLI --versionapps/cli/src/version.ts 向上查找 name 为 frontagent 的 package.json → 根 package.json 现为 2.2.0,解析正确);pnpm build 的 VS Code 版本同步(scripts/sync-vscode-version.mjs 以根版本为准,apps/vscode/package.json:5 已手工对齐,脚本将成为 no-op);web_fetch 出站请求的 user-agent 头。
  • 变更集外调用方: packages/mcp-web-fetch/src/index.ts:18 重导出 VERSION,无断言其字面值的测试;engine.ts 的 UA 常量无外部消费者与测试断言(text search)。apps/vscode/src/package.test.ts 不校验版本字段(text search)。apps/cli/package.json 仍为 0.1.0,与 apps/cli/src/version.test.ts@frontagent/cli 被跳过、只取 frontagent 的行为一致,属既有约定而非漏改。
  • 置信度: medium(.gitnexus/meta.json 的索引快照为 2026-07-12 / commit 51fd4bb,索引本体不在本 checkout 中,因此上述调用方结论来自 text search 而非图谱遍历;对纯版本/文档变更该证据强度足够)。

问题发现

  1. [中] mcp-web-fetch 的版本常量手工维护,无同步门禁

    • 证据: packages/mcp-web-fetch/src/types.ts:5VERSION = '2.2.0'packages/mcp-web-fetch/src/engine.ts:41frontagent-mcp-web-fetch/2.2.0 都是字面量,与 packages/mcp-web-fetch/package.json:3 构成三处同源副本。仓库现有的版本同步只覆盖 VS Code(scripts/sync-vscode-version.mjs 仅比对根 package.json 与 apps/vscode/package.json),scripts/tests/workflow-rules.test.mjs 中也没有任何跨包版本一致性断言(text search)。
    • 受影响调用方/流程: 本次三处都改对了,所以当前无行为问题;风险在下一次 release——VERSIONindex.ts:18 对外导出,UA 会出现在所有 web_fetch 出站请求头中,漂移后不会被任何测试或门禁捕获。
    • 最小可行修复: 在 mcp-web-fetch 现有测试里加一条断言,读取本包 package.json 并校验 VERSION 与 UA 中的版本片段相等(或让二者从 package.json 派生),把发布期的人工检查变成机器可校验项。
  2. [低] PR 描述中的 .gitnexus 后续分支说明与仓库状态不一致

    • 证据: .gitignore:82 忽略 .gitnexus,本 checkout 中仅有未被跟踪的 meta.json/lbug.github/workflows/contract-guard.yml:33 在 PR 上执行 pnpm contract:gitnexus,由 CI 自行 analyze --index-only 生成索引。
    • 受影响调用方/流程: 无代码影响;但描述会让维护者以为存在一个必须跟进合入的 78MB 索引提交,从而误判发布收尾步骤。
    • 最小可行修复: 更新 PR 描述,说明索引目录已被忽略、由 contract-guard 在 CI 重建,不需要后续分支;若确有需要跟踪的索引产物,请指明其实际路径。

行级发现

  • [packages/mcp-web-fetch/src/types.ts:5] 该版本字面量与本包 package.jsonengine.ts:41 的 UA 字符串是三份手工同步的副本,且无测试或门禁约束;建议加一条从 package.json 读取版本并断言相等的测试,避免下个 release 静默漂移。

Karpathy 评审

  • 假设: 隐含假设是「所有版本字面量都被人工找全」。本次核对通过——除历史 changelog、docs/releases/v2.1.1.mddocs/architecture.md:106(章节号)和 apps/desktop/src/renderer/selectBridge.test.ts:6(UA 夹具字符串,与产品版本无关)外,无遗留 2.1.1
  • 简洁性: 无新增抽象,diff 为纯数值/文档替换,符合发布变更的最小形态。
  • 结构质量: 未引入分支、wrapper 或新层级;唯一的结构性弱点是既有的版本常量三处重复(见问题 1),本 PR 未加剧但也未收敛。
  • 变更范围: 22 个文件全部可追溯到「bump 到 2.2.0 + 发布文档」这一目标,无夹带重构或格式噪声。
  • 验证: 无法在本环境复现 pnpm quality:precommit / pnpm contract:local 的结果,仅能确认现有测试不会因这两个常量变更而失败(无断言耦合);变更风险低,与验证强度匹配。文档中的关键事实断言已抽查一致:packages/core/package.json:30 ai@^5.0.199package.json:75packages/mcp-file/package.json:31 ts-morph@^28.0.0package.json:104 node >=20.0.0apps/vscode/package.json:23 vscode ^1.120.0;Known Issues 中「hallucinationGuard.enabled 仍是 dead config」也属实——packages/core/src/agent/agent.ts:96 只读取 config.hallucinationGuard?.checks

缺失覆盖

  • 缺少跨 workspace 的版本一致性检查:目前只有 VS Code 版本由 scripts/sync-vscode-version.mjs 保证,packages/*/package.jsonapps/desktop/package.json 与 mcp-web-fetch 的两个源码常量完全依赖人工。建议在 scripts/tests/ 下补一条测试,断言所有非 private 发布包版本与根版本相等,并覆盖 mcp-web-fetch 的 VERSION / UA。
  • 发布文档中「CLI symlink invocation verified against the packaged bundle」是人工验证记录,本次 diff 未包含对应回归覆盖;若希望 #396 长期不回归,可确认 apps/cli/src/index.test.ts 中的 symlink 入口用例是否已在 2.2.0 之前合入(本 PR 不新增,也不阻塞合并)。

export type { FetchOptions, FetchResult } from './engine.js';

export const VERSION = '2.1.1';
export const VERSION = '2.2.0';

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

该版本字面量与本包 package.jsonengine.ts:41 的 UA 字符串是三份手工同步的副本,且无测试或门禁约束;建议加一条从 package.json 读取版本并断言相等的测试,避免下个 release 静默漂移。

@ceilf6
ceilf6 dismissed github-actions[bot]’s stale review July 30, 2026 14:31

Findings 1-3 fixed in 080f038 and confirmed by Repo Guard's follow-up review on that commit (低/可以合并); finding 4 recorded in the PR description for the index follow-up branch.

@ceilf6
ceilf6 merged commit db42301 into develop Jul 30, 2026
11 of 13 checks passed
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.

1 participant