[{"data":1,"prerenderedAt":4},["ShallowReactive",2],{"doc-\u002Fzh-Hans\u002Fcmtx\u002Fdev-guide\u002FDEV-008-changelog_guide\u002F":3},"\u003Ch1 id=\"changelog-%E4%B8%8E-changesets-%E6%8C%87%E5%8D%97\" tabindex=\"-1\">\u003Ca class=\"header-anchor\" href=\"#changelog-%E4%B8%8E-changesets-%E6%8C%87%E5%8D%97\">#\u003C\u002Fa> CHANGELOG 与 Changesets 指南\u003C\u002Fh1>\n\u003Ch2 id=\"1.-%E6%A6%82%E8%BF%B0\" tabindex=\"-1\">\u003Ca class=\"header-anchor\" href=\"#1.-%E6%A6%82%E8%BF%B0\">#\u003C\u002Fa> 1. 概述\u003C\u002Fh2>\n\u003Ch3 id=\"1.1.-%E6%A0%B8%E5%BF%83%E5%8E%9F%E5%88%99\" tabindex=\"-1\">\u003Ca class=\"header-anchor\" href=\"#1.1.-%E6%A0%B8%E5%BF%83%E5%8E%9F%E5%88%99\">#\u003C\u002Fa> 1.1. 核心原则\u003C\u002Fh3>\n\u003Cul>\n\u003Cli>\u003Cstrong>CHANGELOG 只记录用户可见的变更\u003C\u002Fstrong>，不记录内部开发过程中的临时修改、重构中间态、待办事项\u003C\u002Fli>\n\u003Cli>\u003Cstrong>对比基准是 main 分支的上一个发布版本\u003C\u002Fstrong>，不是最近的 git commit 或功能开发分支\u003C\u002Fli>\n\u003Cli>\u003Cstrong>统一使用 changeset 模式\u003C\u002Fstrong>：所有包通过 changeset 文件驱动版本管理\u003C\u002Fli>\n\u003Cli>\u003Cstrong>发布时统一格式\u003C\u002Fstrong>：最终 CHANGELOG 格式完全一致——先中文后英文的双语结构\u003C\u002Fli>\n\u003Cli>\u003Cstrong>日常维护仅写中文\u003C\u002Fstrong>，发布时再添加英文——减少日常维护负担\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch3 id=\"1.2.-%E5%8C%85%E6%A8%A1%E5%BC%8F\" tabindex=\"-1\">\u003Ca class=\"header-anchor\" href=\"#1.2.-%E5%8C%85%E6%A8%A1%E5%BC%8F\">#\u003C\u002Fa> 1.2. 包模式\u003C\u002Fh3>\n\u003Cp>所有包统一使用 \u003Cstrong>changeset\u003C\u002Fstrong> 模式，包括 \u003Ccode>cmtx-vscode\u003C\u002Fcode>。不再区分双轨。\u003C\u002Fp>\n\u003Ch2 id=\"2.-%E6%A0%BC%E5%BC%8F%E6%A0%87%E5%87%86\" tabindex=\"-1\">\u003Ca class=\"header-anchor\" href=\"#2.-%E6%A0%BC%E5%BC%8F%E6%A0%87%E5%87%86\">#\u003C\u002Fa> 2. 格式标准\u003C\u002Fh2>\n\u003Ch3 id=\"2.1.-%E6%96%87%E4%BB%B6%E7%BB%93%E6%9E%84\" tabindex=\"-1\">\u003Ca class=\"header-anchor\" href=\"#2.1.-%E6%96%87%E4%BB%B6%E7%BB%93%E6%9E%84\">#\u003C\u002Fa> 2.1. 文件结构\u003C\u002Fh3>\n\u003Cp>每个包目录下有 \u003Ccode>CHANGELOG.md\u003C\u002Fcode> 文件。发布后统一采用\u003Cstrong>先中文后英文\u003C\u002Fstrong>的双语结构。发布前按第 4 章流程精修为统一格式。\u003C\u002Fp>\n\u003Ch3 id=\"2.2.-%E5%8F%8C%E8%AF%AD%E8%A7%84%E8%8C%83\" tabindex=\"-1\">\u003Ca class=\"header-anchor\" href=\"#2.2.-%E5%8F%8C%E8%AF%AD%E8%A7%84%E8%8C%83\">#\u003C\u002Fa> 2.2. 双语规范\u003C\u002Fh3>\n\u003Cul>\n\u003Cli>文件标题使用双语：\u003Ccode># @cmtx\u002F&lt;name&gt; 更新日志 \u002F Changelog\u003C\u002Fcode>\u003C\u002Fli>\n\u003Cli>每个版本均采用\u003Cstrong>先中文后英文\u003C\u002Fstrong>的双语模式，用 \u003Ccode>---\u003C\u002Fcode> 分隔\u003C\u002Fli>\n\u003Cli>中文与英文条目内容应一一对应，信息一致\u003C\u002Fli>\n\u003Cli>初始发布版本可省略 \u003Ccode>---\u003C\u002Fcode>，但双语必须完整\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch3 id=\"2.3.-%E6%A0%87%E9%A2%98%E8%A7%84%E8%8C%83\" tabindex=\"-1\">\u003Ca class=\"header-anchor\" href=\"#2.3.-%E6%A0%87%E9%A2%98%E8%A7%84%E8%8C%83\">#\u003C\u002Fa> 2.3. 标题规范\u003C\u002Fh3>\n\u003Ctable>\n\u003Cthead>\n\u003Ctr>\n\u003Cth>位置\u003C\u002Fth>\n\u003Cth>格式\u003C\u002Fth>\n\u003Cth>说明\u003C\u002Fth>\n\u003C\u002Ftr>\n\u003C\u002Fthead>\n\u003Ctbody>\n\u003Ctr>\n\u003Ctd>文件第一行\u003C\u002Ftd>\n\u003Ctd>\u003Ccode># @cmtx\u002F&lt;name&gt; 更新日志 \u002F Changelog\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd>双语命名\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>日常维护\u003C\u002Ftd>\n\u003Ctd>无固定标题，由 changeset 驱动\u003C\u002Ftd>\n\u003Ctd>创建 CHANGESET-XXX 文件，发布时 \u003Ccode>changeset version\u003C\u002Fcode> 自动生成\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>发布后\u003C\u002Ftd>\n\u003Ctd>\u003Ccode>## [&lt;version&gt;] - &lt;YYYY-MM-DD&gt;\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd>由脚本自动替换\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003C\u002Ftbody>\n\u003C\u002Ftable>\n\u003Ch3 id=\"2.4.-%E5%8F%98%E6%9B%B4%E7%B1%BB%E5%9E%8B\" tabindex=\"-1\">\u003Ca class=\"header-anchor\" href=\"#2.4.-%E5%8F%98%E6%9B%B4%E7%B1%BB%E5%9E%8B\">#\u003C\u002Fa> 2.4. 变更类型\u003C\u002Fh3>\n\u003Ctable>\n\u003Cthead>\n\u003Ctr>\n\u003Cth>类型\u003C\u002Fth>\n\u003Cth>说明\u003C\u002Fth>\n\u003Cth>使用时机\u003C\u002Fth>\n\u003C\u002Ftr>\n\u003C\u002Fthead>\n\u003Ctbody>\n\u003Ctr>\n\u003Ctd>\u003Ccode>Added\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd>新功能\u003C\u002Ftd>\n\u003Ctd>新增面向用户的特性、API、CLI 命令\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>\u003Ccode>Changed\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd>现有功能变更\u003C\u002Ftd>\n\u003Ctd>API 行为变化、内部重构但不影响签名\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>\u003Ccode>Deprecated\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd>即将弃用的功能\u003C\u002Ftd>\n\u003Ctd>标记即将移除的功能，并说明替代方案\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>\u003Ccode>Removed\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd>已移除的功能\u003C\u002Ftd>\n\u003Ctd>实际删除已弃用的功能\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>\u003Ccode>Fixed\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd>错误修复\u003C\u002Ftd>\n\u003Ctd>修复任何用户可见的 bug\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>\u003Ccode>Security\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd>安全漏洞\u003C\u002Ftd>\n\u003Ctd>安全修复（可附带 CVE 编号）\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003C\u002Ftbody>\n\u003C\u002Ftable>\n\u003Ch3 id=\"2.5.-%E6%9D%A1%E7%9B%AE%E7%BC%96%E5%86%99%E8%A7%84%E8%8C%83\" tabindex=\"-1\">\u003Ca class=\"header-anchor\" href=\"#2.5.-%E6%9D%A1%E7%9B%AE%E7%BC%96%E5%86%99%E8%A7%84%E8%8C%83\">#\u003C\u002Fa> 2.5. 条目编写规范\u003C\u002Fh3>\n\u003Cblockquote>\n\u003Cp>通用 Markdown 格式规则见 \u003Ca href=\"\u002Fzh-Hans\u002Fcmtx\u002Fdev-guide\u002FDEV-010-documentation-layout-and-frontmatter\u002F\">DEV-010 文档布局\u003C\u002Fa>，本节仅定义 CHANGELOG 专有的条目规范。\u003C\u002Fp>\n\u003C\u002Fblockquote>\n\u003Cul>\n\u003Cli>每个条目以 \u003Ccode>-\u003C\u002Fcode> 开头，末尾不加句号\u003C\u002Fli>\n\u003Cli>英文条目首字母大写，中文条目直接写不加引号\u003C\u002Fli>\n\u003Cli>如果条目标题不足以说明，另起一行缩进补充细节：\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Cpre data-lang=\"markdown\" class=\"shiki github-light\" style=\"background-color:#fff;color:#24292e\" tabindex=\"0\">\u003Ccode>\u003Cspan class=\"line\">\u003Cspan style=\"color:#005CC5;font-weight:bold\">### Added\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E36209\">-\u003C\u002Fspan>\u003Cspan style=\"color:#24292E;font-weight:bold\"> **ConfigAdapter**\u003C\u002Fspan>\u003Cspan style=\"color:#24292E\">: 新增 \u003C\u002Fspan>\u003Cspan style=\"color:#005CC5\">`getMaxRetries()`\u003C\u002Fspan>\u003Cspan style=\"color:#24292E\"> 方法\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#24292E\">    返回最大重试次数，默认值为 3，可通过构造函数注入\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003C\u002Fspan>\u003C\u002Fcode>\u003C\u002Fpre>\u003Cul>\n\u003Cli>条目面向 CHANGELOG 读者（包的使用者），描述&quot;做了什么&quot;和&quot;为什么做&quot;，而不是&quot;怎么实现&quot;\u003C\u002Fli>\n\u003Cli>如果某个变更需要更详细的迁移指南，在 CHANGELOG 中写简要说明，另开文档详述\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch3 id=\"2.6.-%E7%A6%81%E6%AD%A2%E5%86%99%E5%85%A5-changelog-%E7%9A%84%E5%86%85%E5%AE%B9\" tabindex=\"-1\">\u003Ca class=\"header-anchor\" href=\"#2.6.-%E7%A6%81%E6%AD%A2%E5%86%99%E5%85%A5-changelog-%E7%9A%84%E5%86%85%E5%AE%B9\">#\u003C\u002Fa> 2.6. 禁止写入 CHANGELOG 的内容\u003C\u002Fh3>\n\u003Cul>\n\u003Cli>WIP（Work in Progress）的部分实现\u003C\u002Fli>\n\u003Cli>仅测试代码变更（新增\u002F修改测试用例）\u003C\u002Fli>\n\u003Cli>仅文档代码变更（修改 JSDoc、README）\u003C\u002Fli>\n\u003Cli>仅配置变更（修改 CI、打包配置、lint 规则）\u003C\u002Fli>\n\u003Cli>内部重构但无 API\u002F行为变化\u003C\u002Fli>\n\u003Cli>依赖版本更新但无行为变化\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch2 id=\"3.-%E6%97%A5%E5%B8%B8%E7%BB%B4%E6%8A%A4%E6%B5%81%E7%A8%8B\" tabindex=\"-1\">\u003Ca class=\"header-anchor\" href=\"#3.-%E6%97%A5%E5%B8%B8%E7%BB%B4%E6%8A%A4%E6%B5%81%E7%A8%8B\">#\u003C\u002Fa> 3. 日常维护流程\u003C\u002Fh2>\n\u003Cp>\u003Cstrong>Changesets\u003C\u002Fstrong> 是一个版本管理工具，用于解决 Monorepo 中的版本发布问题。它的核心思想是将「变更意图」与「代码提交」同步记录，而非在发布时回忆。一个 changeset 是一个 Markdown 文件（含 YAML front matter），声明哪些包需要发布、bump 类型以及变更描述。\u003C\u002Fp>\n\u003Ch3 id=\"3.1.-changeset-%E6%A8%A1%E5%BC%8F\" tabindex=\"-1\">\u003Ca class=\"header-anchor\" href=\"#3.1.-changeset-%E6%A8%A1%E5%BC%8F\">#\u003C\u002Fa> 3.1. changeset 模式\u003C\u002Fh3>\n\u003Cp>不维护 \u003Ccode>CHANGELOG.md\u003C\u002Fcode> 中的 \u003Ccode>[Unreleased]\u003C\u002Fcode>，通过 changeset 文件驱动。完成一个用户可见功能或修复后，\u003Cstrong>立即\u003C\u002Fstrong>创建 changeset 文件：\u003C\u002Fp>\n\u003Cpre data-lang=\"bash\" class=\"shiki github-light\" style=\"background-color:#fff;color:#24292e\" tabindex=\"0\">\u003Ccode>\u003Cspan class=\"line\">\u003Cspan style=\"color:#24292E\">NEXT_NUM\u003C\u002Fspan>\u003Cspan style=\"color:#D73A49\">=\u003C\u002Fspan>\u003Cspan style=\"color:#24292E\">$(\u003C\u002Fspan>\u003Cspan style=\"color:#6F42C1\">python3\u003C\u002Fspan>\u003Cspan style=\"color:#032F62\"> .agents\u002Fskills\u002Fchangeset-workflow\u002Fscripts\u002Fnext-changeset-number.py\u003C\u002Fspan>\u003Cspan style=\"color:#032F62\"> .changeset\u003C\u002Fspan>\u003Cspan style=\"color:#24292E\">)\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003C\u002Fspan>\u003C\u002Fcode>\u003C\u002Fpre>\u003Cp>格式参考 changeset-workflow skill。\u003C\u002Fp>\n\u003Cp>\u003Cstrong>禁止直接编辑 \u003Ca href=\"http:\u002F\u002FCHANGELOG.md\">CHANGELOG.md\u003C\u002Fa>\u003C\u002Fstrong>——由 \u003Ccode>changeset version\u003C\u002Fcode> 自动生成 CHANGELOG 条目。\u003C\u002Fp>\n\u003Ch3 id=\"3.2.-%E7%A1%AE%E5%AE%9A%E5%8F%97%E5%BD%B1%E5%93%8D%E7%9A%84%E5%8C%85\" tabindex=\"-1\">\u003Ca class=\"header-anchor\" href=\"#3.2.-%E7%A1%AE%E5%AE%9A%E5%8F%97%E5%BD%B1%E5%93%8D%E7%9A%84%E5%8C%85\">#\u003C\u002Fa> 3.2. 确定受影响的包\u003C\u002Fh3>\n\u003Cp>根据变更影响的包来决定：\u003C\u002Fp>\n\u003Cul>\n\u003Cli>修改了 \u003Ccode>packages\u002Fcore\u002Fsrc\u002Ffilter.ts\u003C\u002Fcode> -&gt; 影响 \u003Ccode>@cmtx\u002Fcore\u003C\u002Fcode>\u003C\u002Fli>\n\u003Cli>修改了 \u003Ccode>packages\u002Frule-engine\u002Fsrc\u002Findex.ts\u003C\u002Fcode> -&gt; 影响 \u003Ccode>@cmtx\u002Frule-engine\u003C\u002Fcode>\u003C\u002Fli>\n\u003Cli>修改了跨包的类型定义 -&gt; 影响所有受影响包\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch3 id=\"3.3.-%E6%AF%94%E8%BE%83%E5%9F%BA%E5%87%86\" tabindex=\"-1\">\u003Ca class=\"header-anchor\" href=\"#3.3.-%E6%AF%94%E8%BE%83%E5%9F%BA%E5%87%86\">#\u003C\u002Fa> 3.3. 比较基准\u003C\u002Fh3>\n\u003Cp>日常维护只需要关注本次 CHANGELOG 撰写期间的变更范围，即自上一次该包 CHANGELOG 更新以来发生的变化，而非从上一个发布版本开始的全量 diff。\u003C\u002Fp>\n\u003Ch2 id=\"4.-%E5%8F%91%E5%B8%83%E6%B5%81%E7%A8%8B\" tabindex=\"-1\">\u003Ca class=\"header-anchor\" href=\"#4.-%E5%8F%91%E5%B8%83%E6%B5%81%E7%A8%8B\">#\u003C\u002Fa> 4. 发布流程\u003C\u002Fh2>\n\u003Ch3 id=\"4.1.-changeset-%E4%B8%8E-changelog-%E7%9A%84%E5%85%B3%E7%B3%BB\" tabindex=\"-1\">\u003Ca class=\"header-anchor\" href=\"#4.1.-changeset-%E4%B8%8E-changelog-%E7%9A%84%E5%85%B3%E7%B3%BB\">#\u003C\u002Fa> 4.1. Changeset 与 CHANGELOG 的关系\u003C\u002Fh3>\n\u003Ctable>\n\u003Cthead>\n\u003Ctr>\n\u003Cth>维度\u003C\u002Fth>\n\u003Cth>CHANGELOG\u003C\u002Fth>\n\u003Cth>Changeset\u003C\u002Fth>\n\u003C\u002Ftr>\n\u003C\u002Fthead>\n\u003Ctbody>\n\u003Ctr>\n\u003Ctd>维护者\u003C\u002Ftd>\n\u003Ctd>\u003Ccode>changeset version\u003C\u002Fcode> 生成 + 开发者精修\u003C\u002Ftd>\n\u003Ctd>开发者手动\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>内容\u003C\u002Ftd>\n\u003Ctd>详细的功能描述（中英文双语）\u003C\u002Ftd>\n\u003Ctd>简短的版本变更说明（中文）\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>用途\u003C\u002Ftd>\n\u003Ctd>面向用户阅读\u003C\u002Ftd>\n\u003Ctd>驱动 \u003Ccode>changeset version\u003C\u002Fcode> bump\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>发布时\u003C\u002Ftd>\n\u003Ctd>\u003Ccode>release-changelog.mjs\u003C\u002Fcode> 添加日期，开发者精修标题和双语\u003C\u002Ftd>\n\u003Ctd>消费后删除\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003C\u002Ftbody>\n\u003C\u002Ftable>\n\u003Ch3 id=\"4.2.-%E5%8F%91%E5%B8%83%E5%90%8E%E6%A0%BC%E5%BC%8F%E7%BB%9F%E4%B8%80\" tabindex=\"-1\">\u003Ca class=\"header-anchor\" href=\"#4.2.-%E5%8F%91%E5%B8%83%E5%90%8E%E6%A0%BC%E5%BC%8F%E7%BB%9F%E4%B8%80\">#\u003C\u002Fa> 4.2. 发布后格式统一\u003C\u002Fh3>\n\u003Cp>\u003Cstrong>最终发布的 CHANGELOG 格式完全一致\u003C\u002Fstrong>：先中文后英文的双语结构，使用标准 Keep a Changelog 分类标题。\u003C\u002Fp>\n\u003Cp>精修的目标是让 \u003Ca href=\"http:\u002F\u002FCHANGELOG.md\">CHANGELOG.md\u003C\u002Fa> 达到此统一格式。精修过程中\u003Cstrong>只修改 \u003Ca href=\"http:\u002F\u002FCHANGELOG.md\">CHANGELOG.md\u003C\u002Fa>，不修改 changeset 文件\u003C\u002Fstrong>。\u003C\u002Fp>\n\u003Cp>\u003Cstrong>禁止删除版本号。\u003C\u002Fstrong> 即使 \u003Ccode>changeset version\u003C\u002Fcode> 生成的该版本条目内容没什么用，也要根据 commit 提炼一些内容出来，确保每个版本号都对应有内容的版本。删除版本号会导致 CHANGELOG 与 \u003Ccode>package.json\u003C\u002Fcode> 的 version 脱节。\u003C\u002Fp>\n\u003Ch3 id=\"4.3.-changeset-%E6%A8%A1%E5%BC%8F%E7%B2%BE%E4%BF%AE%E6%AD%A5%E9%AA%A4\" tabindex=\"-1\">\u003Ca class=\"header-anchor\" href=\"#4.3.-changeset-%E6%A8%A1%E5%BC%8F%E7%B2%BE%E4%BF%AE%E6%AD%A5%E9%AA%A4\">#\u003C\u002Fa> 4.3. changeset 模式精修步骤\u003C\u002Fh3>\n\u003Cp>\u003Ccode>pnpm changeset version\u003C\u002Fcode> 执行后，\u003Ca href=\"http:\u002F\u002FCHANGELOG.md\">CHANGELOG.md\u003C\u002Fa> 中新增了自动生成的半成品内容，精修在 \u003Ca href=\"http:\u002F\u002FCHANGELOG.md\">CHANGELOG.md\u003C\u002Fa> 上进行（\u003Cstrong>不修改 changeset 文件\u003C\u002Fstrong>）：\u003C\u002Fp>\n\u003Cul>\n\u003Cli>删除 \u003Ccode>### Patch Changes\u003C\u002Fcode> 中\u003Cstrong>仅\u003C\u002Fstrong>含依赖更新的块（\u003Ccode>- Updated dependencies [sha]\u003C\u002Fcode>），这不是用户可见变更\u003C\u002Fli>\n\u003Cli>将 \u003Ccode>### Minor Changes\u003C\u002Fcode> \u002F \u003Ccode>### Patch Changes\u003C\u002Fcode> 重命名为 Keep a Changelog 标准类型（\u003Ccode>### Added\u003C\u002Fcode> \u002F \u003Ccode>### Changed\u003C\u002Fcode> \u002F \u003Ccode>### Fixed\u003C\u002Fcode> 等），根据实际变更内容判断归属，不留映射规则\u003C\u002Fli>\n\u003Cli>移除条目中的 commit SHA 前缀（\u003Ccode>a539714:\u003C\u002Fcode> 部分）\u003C\u002Fli>\n\u003Cli>展开条目内容，将一行简写拆分为多行完整描述\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch3 id=\"4.4.-%E5%85%B1%E5%90%8C%E7%B2%BE%E4%BF%AE%E6%AD%A5%E9%AA%A4\" tabindex=\"-1\">\u003Ca class=\"header-anchor\" href=\"#4.4.-%E5%85%B1%E5%90%8C%E7%B2%BE%E4%BF%AE%E6%AD%A5%E9%AA%A4\">#\u003C\u002Fa> 4.4. 共同精修步骤\u003C\u002Fh3>\n\u003Cp>所有包都需要执行以下三步：\u003C\u002Fp>\n\u003Ch4 id=\"4.4.1.-%E6%AD%A5%E9%AA%A4-1%EF%BC%9A%E9%AA%8C%E8%AF%81%E6%A0%87%E9%A2%98%E6%A0%BC%E5%BC%8F%E4%B8%8E%E6%97%A5%E6%9C%9F\" tabindex=\"-1\">\u003Ca class=\"header-anchor\" href=\"#4.4.1.-%E6%AD%A5%E9%AA%A4-1%EF%BC%9A%E9%AA%8C%E8%AF%81%E6%A0%87%E9%A2%98%E6%A0%BC%E5%BC%8F%E4%B8%8E%E6%97%A5%E6%9C%9F\">#\u003C\u002Fa> 4.4.1. 步骤 1：验证标题格式与日期\u003C\u002Fh4>\n\u003Cp>确认版本标题格式为 \u003Ccode>## [&lt;version&gt;] - YYYY-MM-DD\u003C\u002Fcode>，与上一个版本的基准对齐。\u003C\u002Fp>\n\u003Ch4 id=\"4.4.2.-%E6%AD%A5%E9%AA%A4-2%EF%BC%9A%E5%AF%B9%E6%AF%94-git-diff-%E5%AE%A1%E6%A0%B8%E5%86%85%E5%AE%B9\" tabindex=\"-1\">\u003Ca class=\"header-anchor\" href=\"#4.4.2.-%E6%AD%A5%E9%AA%A4-2%EF%BC%9A%E5%AF%B9%E6%AF%94-git-diff-%E5%AE%A1%E6%A0%B8%E5%86%85%E5%AE%B9\">#\u003C\u002Fa> 4.4.2. 步骤 2：对比 git diff 审核内容\u003C\u002Fh4>\n\u003Cp>根据上一次实际发布的版本，对比 git diff 审核当前 CHANGELOG 内容：\u003C\u002Fp>\n\u003Cpre data-lang=\"bash\" class=\"shiki github-light\" style=\"background-color:#fff;color:#24292e\" tabindex=\"0\">\u003Ccode>\u003Cspan class=\"line\">\u003Cspan style=\"color:#6A737D\"># 查找包的上一个发布 tag\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#24292E\">LAST_TAG\u003C\u002Fspan>\u003Cspan style=\"color:#D73A49\">=\u003C\u002Fspan>\u003Cspan style=\"color:#24292E\">$(\u003C\u002Fspan>\u003Cspan style=\"color:#6F42C1\">git\u003C\u002Fspan>\u003Cspan style=\"color:#032F62\"> tag\u003C\u002Fspan>\u003Cspan style=\"color:#005CC5\"> --list\u003C\u002Fspan>\u003Cspan style=\"color:#032F62\"> '@cmtx\u002Fcore\u002F*'\u003C\u002Fspan>\u003Cspan style=\"color:#005CC5\"> --sort=-v:refname\u003C\u002Fspan>\u003Cspan style=\"color:#D73A49\"> |\u003C\u002Fspan>\u003Cspan style=\"color:#6F42C1\"> head\u003C\u002Fspan>\u003Cspan style=\"color:#005CC5\"> -1\u003C\u002Fspan>\u003Cspan style=\"color:#24292E\">)\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#6A737D\"># 查看自上一个版本以来的 src 变更\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#6F42C1\">git\u003C\u002Fspan>\u003Cspan style=\"color:#032F62\"> diff\u003C\u002Fspan>\u003Cspan style=\"color:#032F62\"> \"\u003C\u002Fspan>\u003Cspan style=\"color:#24292E\">$LAST_TAG\u003C\u002Fspan>\u003Cspan style=\"color:#032F62\">\"...HEAD\u003C\u002Fspan>\u003Cspan style=\"color:#005CC5\"> --\u003C\u002Fspan>\u003Cspan style=\"color:#032F62\"> packages\u002Fcore\u002Fsrc\u002F\u003C\u002Fspan>\u003Cspan style=\"color:#032F62\"> packages\u002Fcore\u002Fpackage.json\u003C\u002Fspan>\u003Cspan style=\"color:#D73A49\"> |\u003C\u002Fspan>\u003Cspan style=\"color:#6F42C1\"> head\u003C\u002Fspan>\u003Cspan style=\"color:#005CC5\"> -100\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003C\u002Fspan>\u003C\u002Fcode>\u003C\u002Fpre>\u003Cp>审核点：\u003C\u002Fp>\n\u003Cul>\n\u003Cli>发现 diff 中有变更但 CHANGELOG 没有记录 -&gt; \u003Cstrong>补齐遗漏\u003C\u002Fstrong>\u003C\u002Fli>\n\u003Cli>发现 CHANGELOG 记录了但 diff 中找不到证据 -&gt; \u003Cstrong>删除虚构条目\u003C\u002Fstrong>（可能是中间 commit 走了弯路，实际上不存在的变更）\u003C\u002Fli>\n\u003Cli>确认所有用户可见的变更都已覆盖\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch4 id=\"4.4.3.-%E6%AD%A5%E9%AA%A4-3%EF%BC%9A%E6%B7%BB%E5%8A%A0%E8%8B%B1%E6%96%87%E7%BF%BB%E8%AF%91\" tabindex=\"-1\">\u003Ca class=\"header-anchor\" href=\"#4.4.3.-%E6%AD%A5%E9%AA%A4-3%EF%BC%9A%E6%B7%BB%E5%8A%A0%E8%8B%B1%E6%96%87%E7%BF%BB%E8%AF%91\">#\u003C\u002Fa> 4.4.3. 步骤 3：添加英文翻译\u003C\u002Fh4>\n\u003Cp>每个中文章节完成后，用 \u003Ccode>---\u003C\u002Fcode> 分隔，添加对应的英文版本。英文与中文条目一一对应。\u003C\u002Fp>\n\u003Ch3 id=\"4.5.-%E5%AE%8C%E6%95%B4%E7%A4%BA%E4%BE%8B%EF%BC%9A%E7%B2%BE%E4%BF%AE%E5%89%8D%E5%90%8E%E5%AF%B9%E6%AF%94\" tabindex=\"-1\">\u003Ca class=\"header-anchor\" href=\"#4.5.-%E5%AE%8C%E6%95%B4%E7%A4%BA%E4%BE%8B%EF%BC%9A%E7%B2%BE%E4%BF%AE%E5%89%8D%E5%90%8E%E5%AF%B9%E6%AF%94\">#\u003C\u002Fa> 4.5. 完整示例：精修前后对比\u003C\u002Fh3>\n\u003Ch4 id=\"4.5.1.-before%EF%BC%9Achangeset-version-%E8%87%AA%E5%8A%A8%E7%94%9F%E6%88%90\" tabindex=\"-1\">\u003Ca class=\"header-anchor\" href=\"#4.5.1.-before%EF%BC%9Achangeset-version-%E8%87%AA%E5%8A%A8%E7%94%9F%E6%88%90\">#\u003C\u002Fa> 4.5.1. Before：\u003Ccode>changeset version\u003C\u002Fcode> 自动生成\u003C\u002Fh4>\n\u003Cpre data-lang=\"markdown\" class=\"shiki github-light\" style=\"background-color:#fff;color:#24292e\" tabindex=\"0\">\u003Ccode>\u003Cspan class=\"line\">\u003Cspan style=\"color:#005CC5;font-weight:bold\"># @cmtx\u002Fcore 更新日志 \u002F Changelog\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#005CC5;font-weight:bold\">## [\u003C\u002Fspan>\u003Cspan style=\"color:#032F62;text-decoration:underline\">0.4.0\u003C\u002Fspan>\u003Cspan style=\"color:#005CC5;font-weight:bold\">] - 2026-05-06\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#005CC5;font-weight:bold\">### Minor Changes\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E36209\">-\u003C\u002Fspan>\u003Cspan style=\"color:#24292E\"> a539714: frontmatter-id FF1 配置解耦与校验增强\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E36209\">  -\u003C\u002Fspan>\u003Cspan style=\"color:#005CC5\"> `ff1`\u003C\u002Fspan>\u003Cspan style=\"color:#24292E\"> 新增可选 \u003C\u002Fspan>\u003Cspan style=\"color:#005CC5\">`length`\u003C\u002Fspan>\u003Cspan style=\"color:#24292E\">\u002F\u003C\u002Fspan>\u003Cspan style=\"color:#005CC5\">`radix`\u003C\u002Fspan>\u003Cspan style=\"color:#24292E\"> 字段，可独立覆盖 counter 格式配置\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E36209\">  -\u003C\u002Fspan>\u003Cspan style=\"color:#005CC5\"> `ff1.useCounter`\u003C\u002Fspan>\u003Cspan style=\"color:#24292E\"> 引用的 counter ID 不存在时返回可读错误，而非静默降级\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E36209\">-\u003C\u002Fspan>\u003Cspan style=\"color:#24292E\"> 862fc95: - ID 生成器重构：支持多 counter 模板化 ID 生成，移除废弃的 id-generate-rule\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E36209\">  -\u003C\u002Fspan>\u003Cspan style=\"color:#24292E\"> Counter 服务重构：新增 \u003C\u002Fspan>\u003Cspan style=\"color:#005CC5\">`peek()`\u003C\u002Fspan>\u003Cspan style=\"color:#24292E\">\u002F\u003C\u002Fspan>\u003Cspan style=\"color:#005CC5\">`commit()`\u003C\u002Fspan>\u003Cspan style=\"color:#24292E\"> 模式，支持多 counter 状态管理\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E36209\">  -\u003C\u002Fspan>\u003Cspan style=\"color:#24292E\"> 新增 \u003C\u002Fspan>\u003Cspan style=\"color:#005CC5\">`frontmatter-slug`\u003C\u002Fspan>\u003Cspan style=\"color:#24292E\"> 规则，支持 transform\u002Fextract\u002Fai 三种 slug 生成策略\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E36209\">  -\u003C\u002Fspan>\u003Cspan style=\"color:#24292E\"> 集成 \u003C\u002Fspan>\u003Cspan style=\"color:#005CC5\">`@cmtx\u002Fai`\u003C\u002Fspan>\u003Cspan style=\"color:#24292E\"> 包，支持 AI 驱动的 slug 生成\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E36209\">  -\u003C\u002Fspan>\u003Cspan style=\"color:#24292E\"> 新增 \u003C\u002Fspan>\u003Cspan style=\"color:#005CC5\">`transfer-images`\u003C\u002Fspan>\u003Cspan style=\"color:#24292E\"> 规则，支持跨存储图片转移\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E36209\">  -\u003C\u002Fspan>\u003Cspan style=\"color:#24292E\"> Service registry 注册 \u003C\u002Fspan>\u003Cspan style=\"color:#005CC5\">`TransferService`\u003C\u002Fspan>\u003Cspan style=\"color:#24292E\"> 和 \u003C\u002Fspan>\u003Cspan style=\"color:#005CC5\">`FrontmatterSlugRule`\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E36209\">  -\u003C\u002Fspan>\u003Cspan style=\"color:#005CC5\"> `formatForPublish`\u003C\u002Fspan>\u003Cspan style=\"color:#24292E\"> 更新适配新的 template 化 ID 生成\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E36209\">  -\u003C\u002Fspan>\u003Cspan style=\"color:#24292E\"> 配置类型扩展：新增 counter 配置、FF1 配置、slug 配置、transfer 配置\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E36209\">  -\u003C\u002Fspan>\u003Cspan style=\"color:#24292E\"> frontmatter-id 模板化：\u003C\u002Fspan>\u003Cspan style=\"color:#005CC5\">`ff1`\u003C\u002Fspan>\u003Cspan style=\"color:#24292E\"> 新增可选 \u003C\u002Fspan>\u003Cspan style=\"color:#005CC5\">`length`\u003C\u002Fspan>\u003Cspan style=\"color:#24292E\">\u002F\u003C\u002Fspan>\u003Cspan style=\"color:#005CC5\">`radix`\u003C\u002Fspan>\u003Cspan style=\"color:#24292E\"> 字段，\u003C\u002Fspan>\u003Cspan style=\"color:#005CC5\">`useCounter`\u003C\u002Fspan>\u003Cspan style=\"color:#24292E\"> 引用无效 ID 时报错而非静默降级\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E36209\">  -\u003C\u002Fspan>\u003Cspan style=\"color:#24292E\"> counter 格式配置从顶层移至规则级别，简化配置结构\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#005CC5;font-weight:bold\">### Patch Changes\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E36209\">-\u003C\u002Fspan>\u003Cspan style=\"color:#24292E\"> Updated dependencies [\u003C\u002Fspan>\u003Cspan style=\"color:#032F62;text-decoration:underline\">862fc95\u003C\u002Fspan>\u003Cspan style=\"color:#24292E\">]\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E36209\">-\u003C\u002Fspan>\u003Cspan style=\"color:#24292E\"> Updated dependencies [\u003C\u002Fspan>\u003Cspan style=\"color:#032F62;text-decoration:underline\">862fc95\u003C\u002Fspan>\u003Cspan style=\"color:#24292E\">]\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E36209\">-\u003C\u002Fspan>\u003Cspan style=\"color:#24292E\"> Updated dependencies [\u003C\u002Fspan>\u003Cspan style=\"color:#032F62;text-decoration:underline\">862fc95\u003C\u002Fspan>\u003Cspan style=\"color:#24292E\">]\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E36209\">-\u003C\u002Fspan>\u003Cspan style=\"color:#24292E\"> Updated dependencies [\u003C\u002Fspan>\u003Cspan style=\"color:#032F62;text-decoration:underline\">862fc95\u003C\u002Fspan>\u003Cspan style=\"color:#24292E\">]\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E36209\">-\u003C\u002Fspan>\u003Cspan style=\"color:#24292E\"> Updated dependencies [\u003C\u002Fspan>\u003Cspan style=\"color:#032F62;text-decoration:underline\">862fc95\u003C\u002Fspan>\u003Cspan style=\"color:#24292E\">]\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E36209\">  -\u003C\u002Fspan>\u003Cspan style=\"color:#24292E\"> @cmtx\u002Fasset@0.2.0-alpha.3\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E36209\">  -\u003C\u002Fspan>\u003Cspan style=\"color:#24292E\"> @cmtx\u002Fautocorrect-wasm@0.1.1-alpha.2\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E36209\">  -\u003C\u002Fspan>\u003Cspan style=\"color:#24292E\"> @cmtx\u002Fcore@0.4.0-alpha.3\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E36209\">  -\u003C\u002Fspan>\u003Cspan style=\"color:#24292E\"> @cmtx\u002Ffpe-wasm@0.1.1-alpha.3\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E36209\">  -\u003C\u002Fspan>\u003Cspan style=\"color:#24292E\"> @cmtx\u002Fstorage@0.1.1-alpha.3\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E36209\">  -\u003C\u002Fspan>\u003Cspan style=\"color:#24292E\"> @cmtx\u002Ftemplate@0.2.0-alpha.3\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003C\u002Fspan>\u003C\u002Fcode>\u003C\u002Fpre>\u003Ch4 id=\"4.5.2.-after%EF%BC%9A%E7%B2%BE%E4%BF%AE%E5%90%8E%EF%BC%88%E5%8F%8C%E8%AF%AD-%2B-%E6%A0%87%E5%87%86%E5%88%86%E7%B1%BB%EF%BC%8C%E4%B8%A4%E6%9D%A1-changeset-%E5%90%88%E5%B9%B6%EF%BC%89\" tabindex=\"-1\">\u003Ca class=\"header-anchor\" href=\"#4.5.2.-after%EF%BC%9A%E7%B2%BE%E4%BF%AE%E5%90%8E%EF%BC%88%E5%8F%8C%E8%AF%AD-%2B-%E6%A0%87%E5%87%86%E5%88%86%E7%B1%BB%EF%BC%8C%E4%B8%A4%E6%9D%A1-changeset-%E5%90%88%E5%B9%B6%EF%BC%89\">#\u003C\u002Fa> 4.5.2. After：精修后（双语 + 标准分类，两条 changeset 合并）\u003C\u002Fh4>\n\u003Cpre data-lang=\"markdown\" class=\"shiki github-light\" style=\"background-color:#fff;color:#24292e\" tabindex=\"0\">\u003Ccode>\u003Cspan class=\"line\">\u003Cspan style=\"color:#005CC5;font-weight:bold\"># @cmtx\u002Fcore 更新日志 \u002F Changelog\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#005CC5;font-weight:bold\">## [\u003C\u002Fspan>\u003Cspan style=\"color:#032F62;text-decoration:underline\">0.4.0\u003C\u002Fspan>\u003Cspan style=\"color:#005CC5;font-weight:bold\">] - 2026-05-06\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#005CC5;font-weight:bold\">### Added\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E36209\">-\u003C\u002Fspan>\u003Cspan style=\"color:#24292E;font-weight:bold\"> **FF1 配置解耦**\u003C\u002Fspan>\u003Cspan style=\"color:#24292E\">: frontmatter-id FF1 配置解耦与校验增强\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E36209\">  -\u003C\u002Fspan>\u003Cspan style=\"color:#005CC5\"> `ff1`\u003C\u002Fspan>\u003Cspan style=\"color:#24292E\"> 新增可选 \u003C\u002Fspan>\u003Cspan style=\"color:#005CC5\">`length`\u003C\u002Fspan>\u003Cspan style=\"color:#24292E\">\u002F\u003C\u002Fspan>\u003Cspan style=\"color:#005CC5\">`radix`\u003C\u002Fspan>\u003Cspan style=\"color:#24292E\"> 字段，可独立覆盖 counter 格式配置\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E36209\">  -\u003C\u002Fspan>\u003Cspan style=\"color:#005CC5\"> `ff1.useCounter`\u003C\u002Fspan>\u003Cspan style=\"color:#24292E\"> 引用的 counter ID 不存在时返回可读错误，而非静默降级\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E36209\">-\u003C\u002Fspan>\u003Cspan style=\"color:#24292E;font-weight:bold\"> **ID 生成器重构**\u003C\u002Fspan>\u003Cspan style=\"color:#24292E\">: 支持多 counter 模板化 ID 生成，移除废弃的 id-generate-rule\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E36209\">-\u003C\u002Fspan>\u003Cspan style=\"color:#24292E;font-weight:bold\"> **Counter 服务重构**\u003C\u002Fspan>\u003Cspan style=\"color:#24292E\">: 新增 \u003C\u002Fspan>\u003Cspan style=\"color:#005CC5\">`peek()`\u003C\u002Fspan>\u003Cspan style=\"color:#24292E\">\u002F\u003C\u002Fspan>\u003Cspan style=\"color:#005CC5\">`commit()`\u003C\u002Fspan>\u003Cspan style=\"color:#24292E\"> 模式，支持多 counter 状态管理\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E36209\">-\u003C\u002Fspan>\u003Cspan style=\"color:#24292E;font-weight:bold\"> **frontmatter-slug 规则**\u003C\u002Fspan>\u003Cspan style=\"color:#24292E\">: 新增 transform\u002Fextract\u002Fai 三种 slug 生成策略\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E36209\">-\u003C\u002Fspan>\u003Cspan style=\"color:#24292E;font-weight:bold\"> **transfer-images 规则**\u003C\u002Fspan>\u003Cspan style=\"color:#24292E\">: 新增跨存储图片转移能力\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E36209\">-\u003C\u002Fspan>\u003Cspan style=\"color:#24292E;font-weight:bold\"> **配置类型扩展**\u003C\u002Fspan>\u003Cspan style=\"color:#24292E\">: 新增 counter、FF1、slug、transfer 等配置类型\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#005CC5;font-weight:bold\">---\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#005CC5;font-weight:bold\">### Added\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E36209\">-\u003C\u002Fspan>\u003Cspan style=\"color:#24292E;font-weight:bold\"> **FF1 Config Decoupling**\u003C\u002Fspan>\u003Cspan style=\"color:#24292E\">: Decoupled FF1 config with enhanced validation\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E36209\">  -\u003C\u002Fspan>\u003Cspan style=\"color:#24292E\"> Added optional \u003C\u002Fspan>\u003Cspan style=\"color:#005CC5\">`length`\u003C\u002Fspan>\u003Cspan style=\"color:#24292E\">\u002F\u003C\u002Fspan>\u003Cspan style=\"color:#005CC5\">`radix`\u003C\u002Fspan>\u003Cspan style=\"color:#24292E\"> fields to \u003C\u002Fspan>\u003Cspan style=\"color:#005CC5\">`ff1`\u003C\u002Fspan>\u003Cspan style=\"color:#24292E\"> for independent counter format config\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E36209\">  -\u003C\u002Fspan>\u003Cspan style=\"color:#005CC5\"> `ff1.useCounter`\u003C\u002Fspan>\u003Cspan style=\"color:#24292E\"> now returns a readable error for invalid counter IDs\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E36209\">-\u003C\u002Fspan>\u003Cspan style=\"color:#24292E;font-weight:bold\"> **ID Generator Refactor**\u003C\u002Fspan>\u003Cspan style=\"color:#24292E\">: Multi-counter template-based ID generation, removed deprecated id-generate-rule\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E36209\">-\u003C\u002Fspan>\u003Cspan style=\"color:#24292E;font-weight:bold\"> **Counter Service Refactor**\u003C\u002Fspan>\u003Cspan style=\"color:#24292E\">: New \u003C\u002Fspan>\u003Cspan style=\"color:#005CC5\">`peek()`\u003C\u002Fspan>\u003Cspan style=\"color:#24292E\">\u002F\u003C\u002Fspan>\u003Cspan style=\"color:#005CC5\">`commit()`\u003C\u002Fspan>\u003Cspan style=\"color:#24292E\"> pattern for multi-counter state management\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E36209\">-\u003C\u002Fspan>\u003Cspan style=\"color:#24292E;font-weight:bold\"> **frontmatter-slug Rule**\u003C\u002Fspan>\u003Cspan style=\"color:#24292E\">: Three slug strategies: transform, extract, and AI\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E36209\">-\u003C\u002Fspan>\u003Cspan style=\"color:#24292E;font-weight:bold\"> **transfer-images Rule**\u003C\u002Fspan>\u003Cspan style=\"color:#24292E\">: Cross-storage image transfer support\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E36209\">-\u003C\u002Fspan>\u003Cspan style=\"color:#24292E;font-weight:bold\"> **Config Type Extensions**\u003C\u002Fspan>\u003Cspan style=\"color:#24292E\">: Added counter, FF1, slug, and transfer configs\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003C\u002Fspan>\u003C\u002Fcode>\u003C\u002Fpre>\u003Cp>（依赖更新块已删除，commit SHA 已移除，\u003Ccode>### Minor Changes\u003C\u002Fcode> 改为 \u003Ccode>### Added\u003C\u002Fcode>，条目按功能拆分合并。）\u003C\u002Fp>\n\u003Ch3 id=\"4.6.-%E8%A1%A5%E5%85%85%E7%A4%BA%E4%BE%8B\" tabindex=\"-1\">\u003Ca class=\"header-anchor\" href=\"#4.6.-%E8%A1%A5%E5%85%85%E7%A4%BA%E4%BE%8B\">#\u003C\u002Fa> 4.6. 补充示例\u003C\u002Fh3>\n\u003Cdetails>\n\u003Csummary>多个 changeset 合并（同一包）\u003C\u002Fsummary>\n\u003Cp>三个 changeset 文件：\u003C\u002Fp>\n\u003Cpre>\u003Ccode>CHANGESET-021-url-check.md:\n---\n&quot;@cmtx\u002Fasset&quot;: minor\n---\n- URL 存在性检测\n\nCHANGESET-022-head-fallback.md:\n---\n&quot;@cmtx\u002Fasset&quot;: patch\n---\n- HEAD 降级策略\n\nCHANGESET-023-batch-check.md:\n---\n&quot;@cmtx\u002Fasset&quot;: minor\n---\n- 批量 URL 检测\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>\u003Ccode>changeset version\u003C\u002Fcode> 自动合并后，开发者精修为：\u003C\u002Fp>\n\u003Cpre data-lang=\"markdown\" class=\"shiki github-light\" style=\"background-color:#fff;color:#24292e\" tabindex=\"0\">\u003Ccode>\u003Cspan class=\"line\">\u003Cspan style=\"color:#005CC5;font-weight:bold\">## [\u003C\u002Fspan>\u003Cspan style=\"color:#032F62;text-decoration:underline\">0.3.0\u003C\u002Fspan>\u003Cspan style=\"color:#005CC5;font-weight:bold\">] - 2026-05-06\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#005CC5;font-weight:bold\">### Added\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E36209\">-\u003C\u002Fspan>\u003Cspan style=\"color:#24292E;font-weight:bold\"> **URL 存在性检测**\u003C\u002Fspan>\u003Cspan style=\"color:#24292E\">: 新增 \u003C\u002Fspan>\u003Cspan style=\"color:#005CC5\">`checkUrlExists()`\u003C\u002Fspan>\u003Cspan style=\"color:#24292E\"> 函数\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E36209\">-\u003C\u002Fspan>\u003Cspan style=\"color:#24292E;font-weight:bold\"> **批量 URL 检测**\u003C\u002Fspan>\u003Cspan style=\"color:#24292E\">: 新增 \u003C\u002Fspan>\u003Cspan style=\"color:#005CC5\">`checkUrlExistsBatch()`\u003C\u002Fspan>\u003Cspan style=\"color:#24292E\"> 函数\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#005CC5;font-weight:bold\">### Fixed\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E36209\">-\u003C\u002Fspan>\u003Cspan style=\"color:#24292E;font-weight:bold\"> **HEAD 降级策略**\u003C\u002Fspan>\u003Cspan style=\"color:#24292E\">: HEAD 请求返回 405\u002F501 时自动降级为 GET + Range\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#005CC5;font-weight:bold\">---\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#005CC5;font-weight:bold\">### Added\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E36209\">-\u003C\u002Fspan>\u003Cspan style=\"color:#24292E;font-weight:bold\"> **URL Existence Check**\u003C\u002Fspan>\u003Cspan style=\"color:#24292E\">: Added \u003C\u002Fspan>\u003Cspan style=\"color:#005CC5\">`checkUrlExists()`\u003C\u002Fspan>\u003Cspan style=\"color:#24292E\"> function\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E36209\">-\u003C\u002Fspan>\u003Cspan style=\"color:#24292E;font-weight:bold\"> **Batch URL Checking**\u003C\u002Fspan>\u003Cspan style=\"color:#24292E\">: Added \u003C\u002Fspan>\u003Cspan style=\"color:#005CC5\">`checkUrlExistsBatch()`\u003C\u002Fspan>\u003Cspan style=\"color:#24292E\"> function\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#005CC5;font-weight:bold\">### Fixed\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E36209\">-\u003C\u002Fspan>\u003Cspan style=\"color:#24292E;font-weight:bold\"> **HEAD Fallback Strategy**\u003C\u002Fspan>\u003Cspan style=\"color:#24292E\">: Auto-fallback to GET + Range on 405\u002F501\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003C\u002Fspan>\u003C\u002Fcode>\u003C\u002Fpre>\u003C\u002Fdetails>\n\u003Cdetails>\n\u003Csummary>破坏性变更\u003C\u002Fsummary>\n\u003Cpre data-lang=\"markdown\" class=\"shiki github-light\" style=\"background-color:#fff;color:#24292e\" tabindex=\"0\">\u003Ccode>\u003Cspan class=\"line\">\u003Cspan style=\"color:#005CC5;font-weight:bold\">## [\u003C\u002Fspan>\u003Cspan style=\"color:#032F62;text-decoration:underline\">0.3.0\u003C\u002Fspan>\u003Cspan style=\"color:#005CC5;font-weight:bold\">] - 2026-05-06\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#005CC5;font-weight:bold\">### Breaking Changes\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E36209\">-\u003C\u002Fspan>\u003Cspan style=\"color:#24292E;font-weight:bold\"> **\u003C\u002Fspan>\u003Cspan style=\"color:#005CC5;font-weight:bold\">`uploadImage()`\u003C\u002Fspan>\u003Cspan style=\"color:#24292E;font-weight:bold\"> 签名变更**\u003C\u002Fspan>\u003Cspan style=\"color:#24292E\">: 第二个参数从 \u003C\u002Fspan>\u003Cspan style=\"color:#005CC5\">`options`\u003C\u002Fspan>\u003Cspan style=\"color:#24292E\"> 改为 \u003C\u002Fspan>\u003Cspan style=\"color:#005CC5\">`config`\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#24292E\">    迁移方法: 将 \u003C\u002Fspan>\u003Cspan style=\"color:#005CC5\">`{ timeout, retry }`\u003C\u002Fspan>\u003Cspan style=\"color:#24292E\"> 改为 \u003C\u002Fspan>\u003Cspan style=\"color:#005CC5\">`{ strategy, maxRetries }`\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#005CC5;font-weight:bold\">---\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#005CC5;font-weight:bold\">### Breaking Changes\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E36209\">-\u003C\u002Fspan>\u003Cspan style=\"color:#24292E;font-weight:bold\"> **\u003C\u002Fspan>\u003Cspan style=\"color:#005CC5;font-weight:bold\">`uploadImage()`\u003C\u002Fspan>\u003Cspan style=\"color:#24292E;font-weight:bold\"> signature changed**\u003C\u002Fspan>\u003Cspan style=\"color:#24292E\">: Second parameter changed from \u003C\u002Fspan>\u003Cspan style=\"color:#005CC5\">`options`\u003C\u002Fspan>\u003Cspan style=\"color:#24292E\"> to \u003C\u002Fspan>\u003Cspan style=\"color:#005CC5\">`config`\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#24292E\">    Migration: Replace \u003C\u002Fspan>\u003Cspan style=\"color:#005CC5\">`{ timeout, retry }`\u003C\u002Fspan>\u003Cspan style=\"color:#24292E\"> with \u003C\u002Fspan>\u003Cspan style=\"color:#005CC5\">`{ strategy, maxRetries }`\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003C\u002Fspan>\u003C\u002Fcode>\u003C\u002Fpre>\u003C\u002Fdetails>\n\u003Ch3 id=\"4.7.-%E5%8F%91%E5%B8%83%E5%89%8D%E9%AA%8C%E8%AF%81%EF%BC%9A%E5%AF%B9%E6%AF%94-git-diff\" tabindex=\"-1\">\u003Ca class=\"header-anchor\" href=\"#4.7.-%E5%8F%91%E5%B8%83%E5%89%8D%E9%AA%8C%E8%AF%81%EF%BC%9A%E5%AF%B9%E6%AF%94-git-diff\">#\u003C\u002Fa> 4.7. 发布前验证：对比 git diff\u003C\u002Fh3>\n\u003Cp>\u003Cstrong>这是发布前最重要的验证步骤。\u003C\u002Fstrong> 必须验证 CHANGELOG 内容与实际代码变更一致。\u003C\u002Fp>\n\u003Cpre data-lang=\"bash\" class=\"shiki github-light\" style=\"background-color:#fff;color:#24292e\" tabindex=\"0\">\u003Ccode>\u003Cspan class=\"line\">\u003Cspan style=\"color:#6A737D\"># 1. 查找包的上一个发布 tag\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#24292E\">LAST_TAG\u003C\u002Fspan>\u003Cspan style=\"color:#D73A49\">=\u003C\u002Fspan>\u003Cspan style=\"color:#24292E\">$(\u003C\u002Fspan>\u003Cspan style=\"color:#6F42C1\">git\u003C\u002Fspan>\u003Cspan style=\"color:#032F62\"> tag\u003C\u002Fspan>\u003Cspan style=\"color:#005CC5\"> --list\u003C\u002Fspan>\u003Cspan style=\"color:#032F62\"> '@cmtx\u002Fcore\u002F*'\u003C\u002Fspan>\u003Cspan style=\"color:#005CC5\"> --sort=-v:refname\u003C\u002Fspan>\u003Cspan style=\"color:#D73A49\"> |\u003C\u002Fspan>\u003Cspan style=\"color:#6F42C1\"> head\u003C\u002Fspan>\u003Cspan style=\"color:#005CC5\"> -1\u003C\u002Fspan>\u003Cspan style=\"color:#24292E\">)\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#6A737D\"># 2. 查看自上一个版本以来的 src 变更\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#6F42C1\">git\u003C\u002Fspan>\u003Cspan style=\"color:#032F62\"> diff\u003C\u002Fspan>\u003Cspan style=\"color:#032F62\"> \"\u003C\u002Fspan>\u003Cspan style=\"color:#24292E\">$LAST_TAG\u003C\u002Fspan>\u003Cspan style=\"color:#032F62\">\"...HEAD\u003C\u002Fspan>\u003Cspan style=\"color:#005CC5\"> --\u003C\u002Fspan>\u003Cspan style=\"color:#032F62\"> packages\u002Fcore\u002Fsrc\u002F\u003C\u002Fspan>\u003Cspan style=\"color:#032F62\"> packages\u002Fcore\u002Fpackage.json\u003C\u002Fspan>\u003Cspan style=\"color:#D73A49\"> |\u003C\u002Fspan>\u003Cspan style=\"color:#6F42C1\"> head\u003C\u002Fspan>\u003Cspan style=\"color:#005CC5\"> -100\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#6A737D\"># 3. 查看具体新增\u002F删除的函数和导出\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#6F42C1\">git\u003C\u002Fspan>\u003Cspan style=\"color:#032F62\"> diff\u003C\u002Fspan>\u003Cspan style=\"color:#032F62\"> \"\u003C\u002Fspan>\u003Cspan style=\"color:#24292E\">$LAST_TAG\u003C\u002Fspan>\u003Cspan style=\"color:#032F62\">\"...HEAD\u003C\u002Fspan>\u003Cspan style=\"color:#005CC5\"> --\u003C\u002Fspan>\u003Cspan style=\"color:#032F62\"> packages\u002Fcore\u002Fsrc\u002Findex.ts\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003C\u002Fspan>\u003C\u002Fcode>\u003C\u002Fpre>\u003Cp>验证清单：\u003C\u002Fp>\n\u003Cul>\n\u003Cli>[ ] CHANGELOG（或 changeset）中的所有条目都能在 git diff 中找到对应证据\u003C\u002Fli>\n\u003Cli>[ ] 没有&quot;虚构条目&quot;（diff 中不存在的变更）\u003C\u002Fli>\n\u003Cli>[ ] 没有遗漏用户可见的变更（新增\u002F删除的导出函数、API 签名变化、破坏性变更）\u003C\u002Fli>\n\u003Cli>[ ] 移除的公开 API\u002F类型必须在 \u003Ccode>### Removed\u003C\u002Fcode> 中记录\u003C\u002Fli>\n\u003Cli>[ ] 内部重构（仅修改实现、不修改导出签名）不写入 CHANGELOG\u003C\u002Fli>\n\u003Cli>[ ] 仅修改测试文件、JSDoc、lint 配置、CI 配置等不写入 CHANGELOG\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch3 id=\"4.8.-%E5%AE%8C%E6%95%B4%E5%8F%91%E5%B8%83%E5%91%BD%E4%BB%A4%E9%93%BE\" tabindex=\"-1\">\u003Ca class=\"header-anchor\" href=\"#4.8.-%E5%AE%8C%E6%95%B4%E5%8F%91%E5%B8%83%E5%91%BD%E4%BB%A4%E9%93%BE\">#\u003C\u002Fa> 4.8. 完整发布命令链\u003C\u002Fh3>\n\u003Cpre data-lang=\"bash\" class=\"shiki github-light\" style=\"background-color:#fff;color:#24292e\" tabindex=\"0\">\u003Ccode>\u003Cspan class=\"line\">\u003Cspan style=\"color:#6A737D\"># 版本计算（自动触发 CHANGELOG 版本标题添加日期）\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#6F42C1\">pnpm\u003C\u002Fspan>\u003Cspan style=\"color:#032F62\"> changeset\u003C\u002Fspan>\u003Cspan style=\"color:#032F62\"> version\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#6A737D\"># 精修 CHANGELOG（删除依赖更新块 + 重命名分类标题 + 移除 commit SHA + 展开条目）\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#6A737D\"># 审核内容完整性（对比 git diff，补齐遗漏、删除虚构条目）\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#6A737D\"># 添加英文翻译\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#6A737D\"># 验证构建\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#6F42C1\">pnpm\u003C\u002Fspan>\u003Cspan style=\"color:#032F62\"> prepublish:validate\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#6A737D\"># 提交 &#x26; 发布\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#6F42C1\">git\u003C\u002Fspan>\u003Cspan style=\"color:#032F62\"> add\u003C\u002Fspan>\u003Cspan style=\"color:#005CC5\"> -A\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#6F42C1\">git\u003C\u002Fspan>\u003Cspan style=\"color:#032F62\"> commit\u003C\u002Fspan>\u003Cspan style=\"color:#005CC5\"> -m\u003C\u002Fspan>\u003Cspan style=\"color:#032F62\"> \"Release v&#x3C;version>\"\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#6F42C1\">pnpm\u003C\u002Fspan>\u003Cspan style=\"color:#032F62\"> changeset\u003C\u002Fspan>\u003Cspan style=\"color:#032F62\"> publish\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#6F42C1\">git\u003C\u002Fspan>\u003Cspan style=\"color:#032F62\"> push\u003C\u002Fspan>\u003Cspan style=\"color:#005CC5\"> --follow-tags\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003C\u002Fspan>\u003C\u002Fcode>\u003C\u002Fpre>\u003Ch2 id=\"5.-cmtx-changesets-%E9%85%8D%E7%BD%AE\" tabindex=\"-1\">\u003Ca class=\"header-anchor\" href=\"#5.-cmtx-changesets-%E9%85%8D%E7%BD%AE\">#\u003C\u002Fa> 5. CMTX Changesets 配置\u003C\u002Fh2>\n\u003Ch3 id=\"5.1.-%E5%BD%93%E5%89%8D-config.json\" tabindex=\"-1\">\u003Ca class=\"header-anchor\" href=\"#5.1.-%E5%BD%93%E5%89%8D-config.json\">#\u003C\u002Fa> 5.1. 当前 config.json\u003C\u002Fh3>\n\u003Cpre data-lang=\"json\" class=\"shiki github-light\" style=\"background-color:#fff;color:#24292e\" tabindex=\"0\">\u003Ccode>\u003Cspan class=\"line\">\u003Cspan style=\"color:#24292E\">{\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#005CC5\">    \"$schema\"\u003C\u002Fspan>\u003Cspan style=\"color:#24292E\">: \u003C\u002Fspan>\u003Cspan style=\"color:#032F62\">\"https:\u002F\u002Funpkg.com\u002F@changesets\u002Fconfig@3.1.4\u002Fschema.json\"\u003C\u002Fspan>\u003Cspan style=\"color:#24292E\">,\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#005CC5\">    \"changelog\"\u003C\u002Fspan>\u003Cspan style=\"color:#24292E\">: \u003C\u002Fspan>\u003Cspan style=\"color:#032F62\">\"@changesets\u002Fcli\u002Fchangelog\"\u003C\u002Fspan>\u003Cspan style=\"color:#24292E\">,\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#005CC5\">    \"commit\"\u003C\u002Fspan>\u003Cspan style=\"color:#24292E\">: \u003C\u002Fspan>\u003Cspan style=\"color:#005CC5\">false\u003C\u002Fspan>\u003Cspan style=\"color:#24292E\">,\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#005CC5\">    \"fixed\"\u003C\u002Fspan>\u003Cspan style=\"color:#24292E\">: [],\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#005CC5\">    \"linked\"\u003C\u002Fspan>\u003Cspan style=\"color:#24292E\">: [],\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#005CC5\">    \"access\"\u003C\u002Fspan>\u003Cspan style=\"color:#24292E\">: \u003C\u002Fspan>\u003Cspan style=\"color:#032F62\">\"public\"\u003C\u002Fspan>\u003Cspan style=\"color:#24292E\">,\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#005CC5\">    \"baseBranch\"\u003C\u002Fspan>\u003Cspan style=\"color:#24292E\">: \u003C\u002Fspan>\u003Cspan style=\"color:#032F62\">\"main\"\u003C\u002Fspan>\u003Cspan style=\"color:#24292E\">,\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#005CC5\">    \"updateInternalDependencies\"\u003C\u002Fspan>\u003Cspan style=\"color:#24292E\">: \u003C\u002Fspan>\u003Cspan style=\"color:#032F62\">\"patch\"\u003C\u002Fspan>\u003Cspan style=\"color:#24292E\">,\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#005CC5\">    \"ignore\"\u003C\u002Fspan>\u003Cspan style=\"color:#24292E\">: []\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#24292E\">}\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003C\u002Fspan>\u003C\u002Fcode>\u003C\u002Fpre>\u003Cul>\n\u003Cli>\u003Ccode>changelog: &quot;@changesets\u002Fcli\u002Fchangelog&quot;\u003C\u002Fcode> — 启用 changelog 生成，\u003Ccode>changeset version\u003C\u002Fcode> 自动生成 CHANGELOG 条目\u003C\u002Fli>\n\u003Cli>\u003Ccode>access: &quot;public&quot;\u003C\u002Fcode> — scoped 包公开发布\u003C\u002Fli>\n\u003Cli>\u003Ccode>ignore\u003C\u002Fcode> — 所有包均参与版本管理，包括 \u003Ccode>cmtx-vscode\u003C\u002Fcode>\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch3 id=\"5.2.-%E5%8F%91%E5%B8%83%E8%84%9A%E6%9C%AC\" tabindex=\"-1\">\u003Ca class=\"header-anchor\" href=\"#5.2.-%E5%8F%91%E5%B8%83%E8%84%9A%E6%9C%AC\">#\u003C\u002Fa> 5.2. 发布脚本\u003C\u002Fh3>\n\u003Cpre data-lang=\"json\" class=\"shiki github-light\" style=\"background-color:#fff;color:#24292e\" tabindex=\"0\">\u003Ccode>\u003Cspan class=\"line\">\u003Cspan style=\"color:#24292E\">{\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#005CC5\">    \"postchangeset:version\"\u003C\u002Fspan>\u003Cspan style=\"color:#24292E\">: \u003C\u002Fspan>\u003Cspan style=\"color:#032F62\">\"node scripts\u002Frelease-changelog.mjs\"\u003C\u002Fspan>\u003Cspan style=\"color:#24292E\">,\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#005CC5\">    \"release:version\"\u003C\u002Fspan>\u003Cspan style=\"color:#24292E\">: \u003C\u002Fspan>\u003Cspan style=\"color:#032F62\">\"pnpm changeset version\"\u003C\u002Fspan>\u003Cspan style=\"color:#24292E\">,\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#005CC5\">    \"release:publish\"\u003C\u002Fspan>\u003Cspan style=\"color:#24292E\">: \u003C\u002Fspan>\u003Cspan style=\"color:#032F62\">\"pnpm changeset publish &#x26;&#x26; git push --follow-tags\"\u003C\u002Fspan>\u003Cspan style=\"color:#24292E\">,\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#005CC5\">    \"release:all\"\u003C\u002Fspan>\u003Cspan style=\"color:#24292E\">: \u003C\u002Fspan>\u003Cspan style=\"color:#032F62\">\"pnpm changeset version &#x26;&#x26; pnpm prepublish:validate &#x26;&#x26; pnpm changeset publish &#x26;&#x26; git push --follow-tags\"\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#24292E\">}\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003C\u002Fspan>\u003C\u002Fcode>\u003C\u002Fpre>\u003Cp>单步操作直接使用 \u003Ccode>pnpm changeset &lt;command&gt;\u003C\u002Fcode> 命令，不再通过包装脚本间接调用。\u003C\u002Fp>\n\u003Ch3 id=\"5.3.-%E5%8F%82%E4%B8%8E%E7%89%88%E6%9C%AC%E7%AE%A1%E7%90%86%E7%9A%84%E5%8C%85\" tabindex=\"-1\">\u003Ca class=\"header-anchor\" href=\"#5.3.-%E5%8F%82%E4%B8%8E%E7%89%88%E6%9C%AC%E7%AE%A1%E7%90%86%E7%9A%84%E5%8C%85\">#\u003C\u002Fa> 5.3. 参与版本管理的包\u003C\u002Fh3>\n\u003Cp>所有包均参与版本管理：\u003C\u002Fp>\n\u003Cul>\n\u003Cli>\u003Ccode>@cmtx\u002Fai\u003C\u002Fcode>\u003C\u002Fli>\n\u003Cli>\u003Ccode>@cmtx\u002Fasset\u003C\u002Fcode>\u003C\u002Fli>\n\u003Cli>\u003Ccode>@cmtx\u002Fcore\u003C\u002Fcode>\u003C\u002Fli>\n\u003Cli>\u003Ccode>@cmtx\u002Ffpe-wasm\u003C\u002Fcode>\u003C\u002Fli>\n\u003Cli>\u003Ccode>@cmtx\u002Fmarkdown-it-presigned-url\u003C\u002Fcode>\u003C\u002Fli>\n\u003Cli>\u003Ccode>@cmtx\u002Fmarkdown-it-presigned-url-adapter-nodejs\u003C\u002Fcode>\u003C\u002Fli>\n\u003Cli>\u003Ccode>@cmtx\u002Frule-engine\u003C\u002Fcode>\u003C\u002Fli>\n\u003Cli>\u003Ccode>@cmtx\u002Fstorage\u003C\u002Fcode>\u003C\u002Fli>\n\u003Cli>\u003Ccode>@cmtx\u002Ftemplate\u003C\u002Fcode>\u003C\u002Fli>\n\u003Cli>\u003Ccode>@cmtx\u002Fautocorrect-wasm\u003C\u002Fcode>（新包，尚未发布）\u003C\u002Fli>\n\u003Cli>\u003Ccode>cmtx-vscode\u003C\u002Fcode>\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch2 id=\"6.-%E5%91%BD%E4%BB%A4%E9%80%9F%E6%9F%A5\" tabindex=\"-1\">\u003Ca class=\"header-anchor\" href=\"#6.-%E5%91%BD%E4%BB%A4%E9%80%9F%E6%9F%A5\">#\u003C\u002Fa> 6. 命令速查\u003C\u002Fh2>\n\u003Ch3 id=\"6.1.-git-%E6%9F%A5%E8%AF%A2%E5%91%BD%E4%BB%A4\" tabindex=\"-1\">\u003Ca class=\"header-anchor\" href=\"#6.1.-git-%E6%9F%A5%E8%AF%A2%E5%91%BD%E4%BB%A4\">#\u003C\u002Fa> 6.1. Git 查询命令\u003C\u002Fh3>\n\u003Cpre data-lang=\"bash\" class=\"shiki github-light\" style=\"background-color:#fff;color:#24292e\" tabindex=\"0\">\u003Ccode>\u003Cspan class=\"line\">\u003Cspan style=\"color:#6A737D\"># 查找包的上一个版本标签\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#6F42C1\">git\u003C\u002Fspan>\u003Cspan style=\"color:#032F62\"> tag\u003C\u002Fspan>\u003Cspan style=\"color:#005CC5\"> --list\u003C\u002Fspan>\u003Cspan style=\"color:#032F62\"> '@cmtx\u002Fcore\u002F*'\u003C\u002Fspan>\u003Cspan style=\"color:#005CC5\"> --sort=-v:refname\u003C\u002Fspan>\u003Cspan style=\"color:#D73A49\"> |\u003C\u002Fspan>\u003Cspan style=\"color:#6F42C1\"> head\u003C\u002Fspan>\u003Cspan style=\"color:#005CC5\"> -1\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#6A737D\"># 查看自上一个版本以来的变化（按包筛选）\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#6F42C1\">git\u003C\u002Fspan>\u003Cspan style=\"color:#032F62\"> diff\u003C\u002Fspan>\u003Cspan style=\"color:#D73A49\"> &#x3C;\u003C\u002Fspan>\u003Cspan style=\"color:#032F62\">last-ta\u003C\u002Fspan>\u003Cspan style=\"color:#24292E\">g\u003C\u002Fspan>\u003Cspan style=\"color:#D73A49\">>\u003C\u002Fspan>\u003Cspan style=\"color:#032F62\">...HEAD\u003C\u002Fspan>\u003Cspan style=\"color:#005CC5\"> --\u003C\u002Fspan>\u003Cspan style=\"color:#032F62\"> packages\u002Fcore\u002F\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#6A737D\"># 查看所有提交（按包筛选）\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#6F42C1\">git\u003C\u002Fspan>\u003Cspan style=\"color:#032F62\"> log\u003C\u002Fspan>\u003Cspan style=\"color:#D73A49\"> &#x3C;\u003C\u002Fspan>\u003Cspan style=\"color:#032F62\">last-ta\u003C\u002Fspan>\u003Cspan style=\"color:#24292E\">g\u003C\u002Fspan>\u003Cspan style=\"color:#D73A49\">>\u003C\u002Fspan>\u003Cspan style=\"color:#032F62\">...HEAD\u003C\u002Fspan>\u003Cspan style=\"color:#005CC5\"> --\u003C\u002Fspan>\u003Cspan style=\"color:#032F62\"> packages\u002Fcore\u002F\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#6A737D\"># 查看变更的文件列表\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#6F42C1\">git\u003C\u002Fspan>\u003Cspan style=\"color:#032F62\"> diff\u003C\u002Fspan>\u003Cspan style=\"color:#D73A49\"> &#x3C;\u003C\u002Fspan>\u003Cspan style=\"color:#032F62\">last-ta\u003C\u002Fspan>\u003Cspan style=\"color:#24292E\">g\u003C\u002Fspan>\u003Cspan style=\"color:#D73A49\">>\u003C\u002Fspan>\u003Cspan style=\"color:#032F62\">...HEAD\u003C\u002Fspan>\u003Cspan style=\"color:#005CC5\"> --name-only\u003C\u002Fspan>\u003Cspan style=\"color:#005CC5\"> --\u003C\u002Fspan>\u003Cspan style=\"color:#032F62\"> packages\u002Fcore\u002F\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003C\u002Fspan>\u003C\u002Fcode>\u003C\u002Fpre>\u003Ch3 id=\"6.2.-npm-scripts-%E5%8F%82%E8%80%83\" tabindex=\"-1\">\u003Ca class=\"header-anchor\" href=\"#6.2.-npm-scripts-%E5%8F%82%E8%80%83\">#\u003C\u002Fa> 6.2. npm scripts 参考\u003C\u002Fh3>\n\u003Ctable>\n\u003Cthead>\n\u003Ctr>\n\u003Cth>脚本\u003C\u002Fth>\n\u003Cth>命令\u003C\u002Fth>\n\u003Cth>触发时机\u003C\u002Fth>\n\u003Cth>说明\u003C\u002Fth>\n\u003C\u002Ftr>\n\u003C\u002Fthead>\n\u003Ctbody>\n\u003Ctr>\n\u003Ctd>\u003Ccode>postchangeset:version\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd>\u003Ccode>node scripts\u002Frelease-changelog.mjs\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd>自动\u003C\u002Ftd>\n\u003Ctd>给版本标题添加日期\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>\u003Ccode>release:version\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd>\u003Ccode>pnpm changeset version\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd>发布\u003C\u002Ftd>\n\u003Ctd>版本计算 + CHANGELOG 生成\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>\u003Ccode>release:publish\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd>\u003Ccode>pnpm changeset publish &amp;&amp; git push --follow-tags\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd>发布\u003C\u002Ftd>\n\u003Ctd>发布到 npm 并推送 tag\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>\u003Ccode>release:all\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd>\u003Ccode>pnpm changeset version &amp;&amp; pnpm prepublish:validate &amp;&amp; pnpm changeset publish &amp;&amp; git push --follow-tags\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd>发布\u003C\u002Ftd>\n\u003Ctd>完整发布流程\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>\u003Ccode>prepublish:validate\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd>\u003Ccode>validate:build\u003C\u002Fcode> + \u003Ccode>validate:tests\u003C\u002Fcode> + \u003Ccode>validate:typecheck\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd>发布前\u003C\u002Ftd>\n\u003Ctd>发布前验证三件套\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003C\u002Ftbody>\n\u003C\u002Ftable>\n\u003Ch3 id=\"6.3.-%E5%B8%B8%E7%94%A8%E6%93%8D%E4%BD%9C%E9%80%9F%E6%9F%A5\" tabindex=\"-1\">\u003Ca class=\"header-anchor\" href=\"#6.3.-%E5%B8%B8%E7%94%A8%E6%93%8D%E4%BD%9C%E9%80%9F%E6%9F%A5\">#\u003C\u002Fa> 6.3. 常用操作速查\u003C\u002Fh3>\n\u003Cpre data-lang=\"bash\" class=\"shiki github-light\" style=\"background-color:#fff;color:#24292e\" tabindex=\"0\">\u003Ccode>\u003Cspan class=\"line\">\u003Cspan style=\"color:#6A737D\"># 日常：创建 changeset（手动，推荐）\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#6A737D\"># 直接在 .changeset\u002F 下创建 CHANGESET-XXX-&#x3C;描述>.md 文件\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#6A737D\"># 查看待发布状态\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#6F42C1\">pnpm\u003C\u002Fspan>\u003Cspan style=\"color:#032F62\"> changeset\u003C\u002Fspan>\u003Cspan style=\"color:#032F62\"> status\u003C\u002Fspan>\u003Cspan style=\"color:#005CC5\"> --verbose\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#6A737D\"># 发布：版本计算 + CHANGELOG 版本标题添加日期\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#6F42C1\">pnpm\u003C\u002Fspan>\u003Cspan style=\"color:#032F62\"> changeset\u003C\u002Fspan>\u003Cspan style=\"color:#032F62\"> version\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#6A737D\"># 发布：验证\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#6F42C1\">pnpm\u003C\u002Fspan>\u003Cspan style=\"color:#032F62\"> prepublish:validate\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#6A737D\"># 发布：提交\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#6F42C1\">git\u003C\u002Fspan>\u003Cspan style=\"color:#032F62\"> add\u003C\u002Fspan>\u003Cspan style=\"color:#005CC5\"> -A\u003C\u002Fspan>\u003Cspan style=\"color:#24292E\"> &#x26;&#x26; \u003C\u002Fspan>\u003Cspan style=\"color:#6F42C1\">git\u003C\u002Fspan>\u003Cspan style=\"color:#032F62\"> commit\u003C\u002Fspan>\u003Cspan style=\"color:#005CC5\"> -m\u003C\u002Fspan>\u003Cspan style=\"color:#032F62\"> \"Release v&#x3C;version>\"\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#6A737D\"># 发布：推送到 npm\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#6F42C1\">pnpm\u003C\u002Fspan>\u003Cspan style=\"color:#032F62\"> changeset\u003C\u002Fspan>\u003Cspan style=\"color:#032F62\"> publish\u003C\u002Fspan>\u003Cspan style=\"color:#24292E\"> &#x26;&#x26; \u003C\u002Fspan>\u003Cspan style=\"color:#6F42C1\">git\u003C\u002Fspan>\u003Cspan style=\"color:#032F62\"> push\u003C\u002Fspan>\u003Cspan style=\"color:#005CC5\"> --follow-tags\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#6A737D\"># 调试：单独运行 changelog 替换\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#6F42C1\">node\u003C\u002Fspan>\u003Cspan style=\"color:#032F62\"> scripts\u002Frelease-changelog.mjs\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#6A737D\"># 预览发布效果（dry-run）\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#6F42C1\">pnpm\u003C\u002Fspan>\u003Cspan style=\"color:#032F62\"> changeset\u003C\u002Fspan>\u003Cspan style=\"color:#032F62\"> version\u003C\u002Fspan>\u003Cspan style=\"color:#005CC5\"> --dry-run\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#6F42C1\">pnpm\u003C\u002Fspan>\u003Cspan style=\"color:#032F62\"> changeset\u003C\u002Fspan>\u003Cspan style=\"color:#032F62\"> publish\u003C\u002Fspan>\u003Cspan style=\"color:#005CC5\"> --dry-run\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003C\u002Fspan>\u003C\u002Fcode>\u003C\u002Fpre>\u003Ch2 id=\"7.-%E5%8F%82%E8%80%83%E6%96%87%E6%A1%A3\" tabindex=\"-1\">\u003Ca class=\"header-anchor\" href=\"#7.-%E5%8F%82%E8%80%83%E6%96%87%E6%A1%A3\">#\u003C\u002Fa> 7. 参考文档\u003C\u002Fh2>\n\u003Cul>\n\u003Cli>\u003Ca href=\"https:\u002F\u002Fkeepachangelog.com\u002Fen\u002F1.1.0\u002F\">Keep a Changelog\u003C\u002Fa> — CHANGELOG 格式标准\u003C\u002Fli>\n\u003Cli>\u003Ca href=\"https:\u002F\u002Fsemver.org\u002Fspec\u002Fv2.0.0.html\">Semantic Versioning\u003C\u002Fa> — 语义化版本规范\u003C\u002Fli>\n\u003Cli>\u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fchangesets\u002Fchangesets\">Changesets 官方文档\u003C\u002Fa> — 版本管理工具\u003C\u002Fli>\n\u003Cli>\u003Ca href=\"\u002Fzh-Hans\u002Fcmtx\u002Fdev-guide\u002FDEV-006-publish_guide\u002F\">包发布指南\u003C\u002Fa> — 完整发布流程\u003C\u002Fli>\n\u003C\u002Ful>\n",1786290224234]