docs/project/release-notes.md
从当前流程开始,仓库内的版本说明文件是 GitHub Release 正文的唯一事实来源。
CHANGELOG.md:版本索引与摘要入口releases/vX.Y.Z.en.md:某个版本的英文完整说明releases/vX.Y.Z.zh-CN.md:某个版本的中文完整说明.github/workflows/release.yml:读取两个版本文件,生成 GitHub Release 摘要正文每次发布都需要同时维护两处内容:
CHANGELOG.md
releases/vX.Y.Z.en.md 和 releases/vX.Y.Z.zh-CN.mdreleases/vX.Y.Z.en.md
# Prompt Optimizer vX.Y.Z## Summary## Highlights## Product Updates## Fixes## Breaking Changes / Upgrade Notes## Developer Notesreleases/vX.Y.Z.zh-CN.md
# Prompt Optimizer vX.Y.Z## 概括## 亮点## 产品更新## 修复## 破坏性变更 / 升级说明## 开发者说明Summary / 概括 为正式发布必填项,GitHub Release 会优先使用它们来生成摘要正文。
# 1. 生成当前版本的版本说明模板
pnpm release:notes:new
# 或者显式指定版本
pnpm release:notes:new 2.9.0
# 2. 校验当前版本说明
pnpm release:notes:check
# 或者显式指定版本
pnpm release:notes:check v2.9.0
# 3. 校验历史版本条目(用于回填旧版本 release 文档)
pnpm release:notes:check:entry v2.6.0
release:notes:new 会同时生成英文和中文模板,并附带一段仅供编辑参考的 commit 草稿区。
release:notes:check 用于正式发布前的硬门槛校验,要求目标版本必须位于 CHANGELOG.md 顶部。
release:notes:check:entry 用于历史版本回填,只要求 CHANGELOG.md 中存在对应版本条目,不要求它在顶部。
# 1. 更新版本号
pnpm version patch
# 2. 生成版本说明模板
pnpm release:notes:new
# 3. 手动完善 releases/vX.Y.Z.en.md 与 releases/vX.Y.Z.zh-CN.md,
# 并更新 CHANGELOG.md 顶部摘要
# 4. 校验版本说明
pnpm release:notes:check
# 5. 创建 tag(会再次自动校验)
pnpm version:tag
# 6. 推送 tag
pnpm version:publish
以下情况会导致 pnpm release:notes:check 失败:
## Summary 或 ## 概括CHANGELOG.md 顶部不是当前版本CHANGELOG.md 顶部没有同时链接英文和中文版本说明TODO、TBD、待补充、XX 等占位内容对于历史版本回填,可以使用 pnpm release:notes:check:entry <version>。它会沿用同样的正文结构校验,但把 CHANGELOG.md 校验范围放宽为“存在对应版本条目”。
发布工作流不会再从 commit 列表自动拼接公开正文,而是优先读取:
releases/vX.Y.Z.en.md 中的 ## Summaryreleases/vX.Y.Z.zh-CN.md 中的 ## 概括然后生成:
SummarymacOS Security Note概括macOS 安全提示其中 macOS Security Note / macOS 安全提示 为固定内容,用来明确说明:
这类提示通常来自 macOS 的隔离属性,不一定是应用本身损坏。
如果历史版本缺少概括,渲染逻辑可以回退为全文;但正式发布流程会被校验阻塞。
workflow_dispatch 中手动输入的 version 仍然用于“当前所选 ref 上准备发布的版本”,不是用来从当前主干回补任意历史版本的重新发布。
如果版本说明校验失败: