更新说明格式化工具
粘贴你的笔记,每行一项改动。内容就在这个页面上整理,不会发送到任何地方。
试试示例:
功能
每次更新都需要几行说明改了什么,而且大多数 Mac 应用要在不止一个地方写:App Store Connect 里的 What's New 文字、Sparkle 在更新窗口里显示的更新说明,以及 GitHub 发布页或更新日志页面。这个工具可以接收你手头的任何内容,比如随手写的笔记、一份列表,或者 git log --oneline 输出的行,并把每一行归入新增、改进或修复。它会去掉提交哈希、feat: 和 fix: 这样的前缀以及 pull request 编号,略去只和你自己有关的行,比如 chore、ci、docs、test 和 merge 提交,然后生成三份可以直接粘贴的副本。最后,它会像 App Review 可能会做的那样,读一遍结果。
每份副本放在哪里
| 复制 | 放在哪里 |
|---|---|
| App Store | App Store Connect 中的 What's New in This Version。纯文本,最多 4,000 个字符。第一个版本之后的每个版本都必须填写。 |
| Sparkle | 放在 appcast 里该版本的 description 中,并用 CDATA 包起来,或者放在 sparkle:releaseNotesLink 所指向的页面上。 |
| Markdown | GitHub 发布页、CHANGELOG.md,或者 macOS 12 及更高版本上的 Sparkle 2.9 及更高版本,配合 sparkle:format="markdown"。 |
要运行的命令
git log --oneline v2.0..HEAD git log --pretty=format:"%s" v2.0..HEAD
两者都会逐行列出自上一个发布标签(这里是 v2.0)以来的提交。第二种不含哈希值。把任意一种粘贴到这里,然后把仍然像写给自己的备忘的那几行改写一下。
每种结果的含义
| 标记 | 含义 |
|---|---|
| 修复 | App Store Connect 不接受的情况,比如 What's New 超过 4,000 个字符。 |
| 外观 | 可以粘贴,但有些行可能会让人困惑,或者在审核时被问到,比如工单号、文件名或其他平台的名字。 |
| 正常 | 长度合适,并且说明了改了什么。 |
| 注意 | 保留了什么、去掉了什么,以及每份副本该放在哪里。 |
来源:App Store Connect Help, Platform version information、App Review Guidelines(2.2、2.3.10 和 2.3.12)以及 Sparkle, Publishing an update,均于 2026年11月13日 查阅。
运作方式
它只是在这个页面上运行的几条简单文本规则。它根据每行的第一个词或前缀来归类:“Add”和 feat: 归入新增,“Fix”和 fix: 归入修复,无法判断的归入改进。你笔记里像“Fixed:”这样的标题,会把它下面的行一并归类。它不会改写你的句子,也无法判断某一行是否属实、是否清楚:这一部分仍然要你自己把关。你粘贴的内容不会被保存或发送。
问题
App Store 的更新说明最长可以写多少?
App Store Connect 里的 What's New in This Version 最多可填 4,000 个字符的纯文本。第一个版本之后的每个版本都必须填写。
我可以只写“修复 bug 和性能改进”吗?
如果只是简单的 bug 修复、安全或性能更新,可以。App Review Guideline 2.3.12 规定,较大的改动和新功能必须写在说明里。
怎样把更新说明加进 Sparkle appcast?
把 HTML 放进该版本的 description 元素里,并用 CDATA 包起来;或者托管一个页面,用 sparkle:releaseNotesLink 指向它。Sparkle 2.9 及更高版本还可以读取 Markdown,只要把 sparkle:format 设为 markdown。
可以粘贴 git log 的输出吗?
可以。提交哈希、feat: 和 fix: 这样的前缀以及 pull request 编号都会被去掉,chore、ci、docs、test 和 merge 的行会被略去。
我的笔记会被发送到别处吗?
不会。笔记只在这个页面上整理,不会发送或保存任何内容。