▶️ ЗАБЕРИ СВОИ 8 ПОДАРКОВ 🎁 ПРИ СОЗДАНИИ СВОЕГО МАЙНКРАФТ СЕРВЕРА
OrzMC

OrzMC

A Paper server management plugin with multi-platform bot control via EasyBot.

Оцените первым
70
0
Все версии→1.0.24-dev.406

1.0.24-dev.406

Beta04.09.2026

Список изменений

milestone: QQ+飞书 builtin 双平台全量合入 main (#313)

  • ci(governance): 里程碑 PR(develop→main)CI 绿后自动 squash 合并并触发发布 (#280)

里程碑发布闭环:auto-merge-milestone.yml 在 base=main head=develop 的 PR 开启/更新时 enable auto-merge(squash)——分支保护的 CI 门禁(build+folia-smoke) 通过后 GitHub 自动合并 → push main → publish.yml 自动发 beta;无需人工点合并。 非 develop→main 的 main PR(热修复/纯文档)不受影响。AGENTS 发布规则同步。

  • fix(governance): 里程碑自动合并改轮询合并+授权标签;修复 publish.yml paths-ignore 缩进 (#284)
  • auto-merge-milestone.yml:native auto-merge 在 PR BLOCKED 时 enable 静默失败(#281 实测), 改为带 milestone:auto-merge 标签时轮询至 mergeable(必选检查失败即中止)→ gh pr merge --squash 自动合并
  • publish.yml:#279 误把 paths-ignore 缩进到 branches 块内致 push 过滤失效(任意分支 push 触发且 0s 失败), 修正为同级(此前 #279 后无 beta 实为 workflow 解析失败,非 paths-ignore 生效)
  • 新增仓库标签 milestone:auto-merge(owner 打标签授权自动合并)
  • fix(ci): milestone auto-merge 读标签补 issues:read 权限并直读 issues API (#286)

GITHUB_TOKEN 默认无 issues 读权限:gh pr view --json labels 底层 issues API 被拒→ 标签检测恒空→跳过(labeled run 实测 15:41/15:42 均 skip)。 补 issues: read 权限 + 改走 gh api repos/{owner}/{repo}/issues/{n}/labels。

  • fix(ci): milestone auto-merge 状态机硬化——瞬时 UNKNOWN/BLOCKED 重试而非失败 (#287)

synchronize 刚触发瞬间 gh pr view 读不到合并状态(15:50 run 7s 即失败), UNKNOWN 被当终态 exit 1。改为:UNKNOWN/BLOCKED/DRAFT/BEHIND/UNSTABLE 一律 sleep 重试 (必选检查失败已由 gh pr checks 单独拦截),仅 CONFLICTING/DIRTY 等中止;MERGED 视为成功。

  • fix(ci): milestone auto-merge 补 issues:read 权限 + 直读 issues API 读标签 (#288)

develop 现网 workflow 缺失该补丁(#286 因本地分支错乱实际未带上):GITHUB_TOKEN 默认 无 issues 读权限,gh pr view --json labels 底层被拒→标签恒空→poller 恒跳过(15:41/15:42/15:55 run 均实测)。 补 issues: read + 改走 gh api repos/{owner}/{repo}/issues/{n}/labels。

  • fix(ci): milestone auto-merge 自锁修复——UNSTABLE 亦可合并 (#289)

poller 自身 job 作为非必选 check 运行时 GitHub 对 PR 报 UNSTABLE(必选已绿), poller 只认 CLEAN → 永不合并直至超时(16:03 run 实测 3m+ 空转)。 改 CLEAN|UNSTABLE 均尝试合并;必选检查失败仍由 gh pr checks 先行拦截。

  • ci(governance): 弃用轮询自动合并,改 GitHub 原生 auto-merge (#290)

owner 指出应通过仓库配置 + 原生 auto-merge 实现「PR 通过 CI 后自动合并」, 而非在 CI 工作流里写轮询脚本(存在自锁:poller job 自身为非必选 check 使 mergeState 停在 UNSTABLE 永不 CLEAN 等坑)。删除 auto-merge-milestone.yml;流程改为: 里程碑 PR(base=main, head=develop)上一次性 gh pr merge --auto --squash(或 UI Enable auto-merge),GitHub 原生在分支保护要求的 CI 绿后自动合并触发发布。AGENTS 同步。

  • docs(changelog): 发布流程验证注记(auto-merge 探针,纯文档) (#292)

  • ci(governance): develop 对齐 main——删除轮询 workflow + AGENTS 原生 auto-merge 措辞 (#294)

#290 曾因本地脏工作区把错误树合入 develop(轮询 workflow 仍在、AGENTS 旧措辞)。 main(#281 快照)内容正确(无轮询文件、AGENTS v2)。本 PR 以 main 为基准对齐 develop: 删除 auto-merge-milestone.yml + AGENTS 里程碑段落恢复 GitHub 原生 auto-merge 描述。

  • docs(agents): 新增「开发工作流与发布」定稿章节,收敛分支模型重复叙述 (#296)

把 feature/bugfix/hotfix/里程碑/正式发版五场景流程+门禁+铁律整理为单一权威章节 (AGENTS 单一事实源);版本号与发布规则改为短版本语义+指针;多 AI 协作 #3 分支模型 改为指针引用,消除三处重复/漂移。含 #286/#290 脏工作区污染教训与 native auto-merge 用法。

  • docs(agents): 补「main→develop 反向同步」流程到开发工作流章节 (#297)

main 有独立提交(hotfix/文档直合)时须反向 PR 同步进 develop,保持 develop ⊇ main, 避免里程碑因两侧同文件各自演进冲突(#293 教训)。含步骤、时机建议与「空 PR=已同步」信号。

  • feat(ci): main→develop 反向同步自动化(事件驱动 + 原生 auto-merge) (#298)

main 有独立提交(hotfix/文档直合/tag bump)后需人工开反向 PR 同步,费时易漏。 新增 main-develop-sync.yml:push main → 比较两分支内容,main 确有领先内容 → 自动开反向 PR (head=main base=develop)+ enable 原生 auto-merge(squash)→ CI 绿自动合入 develop; 里程碑后内容一致 → 自动跳过(无空 PR);冲突 → 不开 auto-merge 留人工。 auto-merge 用 secrets.BOT_PAT(Actions GITHUB_TOKEN 无法 enable,实测)。 AGENTS 反向同步小节改为自动化说明 + 人工兜底步骤。

  • chore(sync): 历史欠账消解——main 并回 develop (#301)

  • ci(governance): 里程碑自动合并闭环 + publish 过滤修正(dry-run 端到端验证) (#281)

  • ci(governance): 里程碑 PR(develop→main)CI 绿后自动 squash 合并并触发发布 (#280)

里程碑发布闭环:auto-merge-milestone.yml 在 base=main head=develop 的 PR 开启/更新时 enable auto-merge(squash)——分支保护的 CI 门禁(build+folia-smoke) 通过后 GitHub 自动合并 → push main → publish.yml 自动发 beta;无需人工点合并。 非 develop→main 的 main PR(热修复/纯文档)不受影响。AGENTS 发布规则同步。

  • fix(governance): 里程碑自动合并改轮询合并+授权标签;修复 publish.yml paths-ignore 缩进 (#284)
  • auto-merge-milestone.yml:native auto-merge 在 PR BLOCKED 时 enable 静默失败(#281 实测), 改为带 milestone:auto-merge 标签时轮询至 mergeable(必选检查失败即中止)→ gh pr merge --squash 自动合并
  • publish.yml:#279 误把 paths-ignore 缩进到 branches 块内致 push 过滤失效(任意分支 push 触发且 0s 失败), 修正为同级(此前 #279 后无 beta 实为 workflow 解析失败,非 paths-ignore 生效)
  • 新增仓库标签 milestone:auto-merge(owner 打标签授权自动合并)
  • fix(ci): milestone auto-merge 读标签补 issues:read 权限并直读 issues API (#286)

GITHUB_TOKEN 默认无 issues 读权限:gh pr view --json labels 底层 issues API 被拒→ 标签检测恒空→跳过(labeled run 实测 15:41/15:42 均 skip)。 补 issues: read 权限 + 改走 gh api repos/{owner}/{repo}/issues/{n}/labels。

  • fix(ci): milestone auto-merge 状态机硬化——瞬时 UNKNOWN/BLOCKED 重试而非失败 (#287)

synchronize 刚触发瞬间 gh pr view 读不到合并状态(15:50 run 7s 即失败), UNKNOWN 被当终态 exit 1。改为:UNKNOWN/BLOCKED/DRAFT/BEHIND/UNSTABLE 一律 sleep 重试 (必选检查失败已由 gh pr checks 单独拦截),仅 CONFLICTING/DIRTY 等中止;MERGED 视为成功。

  • fix(ci): milestone auto-merge 补 issues:read 权限 + 直读 issues API 读标签 (#288)

develop 现网 workflow 缺失该补丁(#286 因本地分支错乱实际未带上):GITHUB_TOKEN 默认 无 issues 读权限,gh pr view --json labels 底层被拒→标签恒空→poller 恒跳过(15:41/15:42/15:55 run 均实测)。 补 issues: read + 改走 gh api repos/{owner}/{repo}/issues/{n}/labels。

  • fix(ci): milestone auto-merge 自锁修复——UNSTABLE 亦可合并 (#289)

poller 自身 job 作为非必选 check 运行时 GitHub 对 PR 报 UNSTABLE(必选已绿), poller 只认 CLEAN → 永不合并直至超时(16:03 run 实测 3m+ 空转)。 改 CLEAN|UNSTABLE 均尝试合并;必选检查失败仍由 gh pr checks 先行拦截。

  • ci(governance): 弃用轮询自动合并,改 GitHub 原生 auto-merge (#290)

owner 指出应通过仓库配置 + 原生 auto-merge 实现「PR 通过 CI 后自动合并」, 而非在 CI 工作流里写轮询脚本(存在自锁:poller job 自身为非必选 check 使 mergeState 停在 UNSTABLE 永不 CLEAN 等坑)。删除 auto-merge-milestone.yml;流程改为: 里程碑 PR(base=main, head=develop)上一次性 gh pr merge --auto --squash(或 UI Enable auto-merge),GitHub 原生在分支保护要求的 CI 绿后自动合并触发发布。AGENTS 同步。

  • docs(im): §2.6 验证状态补注——三类会话真机验收闭环(管理群/玩家群/私聊) (#278)

2026-09-04 补验完成:管理群(上行问答+管理指令 fail-closed)、玩家群(PUBLIC 广播收到 「启动完成」通知)、管理员私聊(下行 test + 绑定后 $l 问答回复);三类绑定跨重启持久化验证通过

  • docs(changelog): 发布流程验证注记 + 治理对齐收尾(里程碑 auto-merge 演示,纯文档不发版) (#295)

  • ci(governance): 里程碑 PR(develop→main)CI 绿后自动 squash 合并并触发发布 (#280)

里程碑发布闭环:auto-merge-milestone.yml 在 base=main head=develop 的 PR 开启/更新时 enable auto-merge(squash)——分支保护的 CI 门禁(build+folia-smoke) 通过后 GitHub 自动合并 → push main → publish.yml 自动发 beta;无需人工点合并。 非 develop→main 的 main PR(热修复/纯文档)不受影响。AGENTS 发布规则同步。

  • fix(governance): 里程碑自动合并改轮询合并+授权标签;修复 publish.yml paths-ignore 缩进 (#284)
  • auto-merge-milestone.yml:native auto-merge 在 PR BLOCKED 时 enable 静默失败(#281 实测), 改为带 milestone:auto-merge 标签时轮询至 mergeable(必选检查失败即中止)→ gh pr merge --squash 自动合并
  • publish.yml:#279 误把 paths-ignore 缩进到 branches 块内致 push 过滤失效(任意分支 push 触发且 0s 失败), 修正为同级(此前 #279 后无 beta 实为 workflow 解析失败,非 paths-ignore 生效)
  • 新增仓库标签 milestone:auto-merge(owner 打标签授权自动合并)
  • fix(ci): milestone auto-merge 读标签补 issues:read 权限并直读 issues API (#286)

GITHUB_TOKEN 默认无 issues 读权限:gh pr view --json labels 底层 issues API 被拒→ 标签检测恒空→跳过(labeled run 实测 15:41/15:42 均 skip)。 补 issues: read 权限 + 改走 gh api repos/{owner}/{repo}/issues/{n}/labels。

  • fix(ci): milestone auto-merge 状态机硬化——瞬时 UNKNOWN/BLOCKED 重试而非失败 (#287)

synchronize 刚触发瞬间 gh pr view 读不到合并状态(15:50 run 7s 即失败), UNKNOWN 被当终态 exit 1。改为:UNKNOWN/BLOCKED/DRAFT/BEHIND/UNSTABLE 一律 sleep 重试 (必选检查失败已由 gh pr checks 单独拦截),仅 CONFLICTING/DIRTY 等中止;MERGED 视为成功。

  • fix(ci): milestone auto-merge 补 issues:read 权限 + 直读 issues API 读标签 (#288)

develop 现网 workflow 缺失该补丁(#286 因本地分支错乱实际未带上):GITHUB_TOKEN 默认 无 issues 读权限,gh pr view --json labels 底层被拒→标签恒空→poller 恒跳过(15:41/15:42/15:55 run 均实测)。 补 issues: read + 改走 gh api repos/{owner}/{repo}/issues/{n}/labels。

  • fix(ci): milestone auto-merge 自锁修复——UNSTABLE 亦可合并 (#289)

poller 自身 job 作为非必选 check 运行时 GitHub 对 PR 报 UNSTABLE(必选已绿), poller 只认 CLEAN → 永不合并直至超时(16:03 run 实测 3m+ 空转)。 改 CLEAN|UNSTABLE 均尝试合并;必选检查失败仍由 gh pr checks 先行拦截。

  • ci(governance): 弃用轮询自动合并,改 GitHub 原生 auto-merge (#290)

owner 指出应通过仓库配置 + 原生 auto-merge 实现「PR 通过 CI 后自动合并」, 而非在 CI 工作流里写轮询脚本(存在自锁:poller job 自身为非必选 check 使 mergeState 停在 UNSTABLE 永不 CLEAN 等坑)。删除 auto-merge-milestone.yml;流程改为: 里程碑 PR(base=main, head=develop)上一次性 gh pr merge --auto --squash(或 UI Enable auto-merge),GitHub 原生在分支保护要求的 CI 绿后自动合并触发发布。AGENTS 同步。

  • docs(changelog): 发布流程验证注记(auto-merge 探针,纯文档) (#292)

  • ci(governance): develop 对齐 main——删除轮询 workflow + AGENTS 原生 auto-merge 措辞 (#294)

#290 曾因本地脏工作区把错误树合入 develop(轮询 workflow 仍在、AGENTS 旧措辞)。 main(#281 快照)内容正确(无轮询文件、AGENTS v2)。本 PR 以 main 为基准对齐 develop: 删除 auto-merge-milestone.yml + AGENTS 里程碑段落恢复 GitHub 原生 auto-merge 描述。

  • docs: 反向同步自动化探针文件(验证 main→develop 自动同步链路) (#299)

  • chore(sync): main → develop 自动同步 (#303)

  • ci(governance): 里程碑自动合并闭环 + publish 过滤修正(dry-run 端到端验证) (#281)

  • ci(governance): 里程碑 PR(develop→main)CI 绿后自动 squash 合并并触发发布 (#280)

里程碑发布闭环:auto-merge-milestone.yml 在 base=main head=develop 的 PR 开启/更新时 enable auto-merge(squash)——分支保护的 CI 门禁(build+folia-smoke) 通过后 GitHub 自动合并 → push main → publish.yml 自动发 beta;无需人工点合并。 非 develop→main 的 main PR(热修复/纯文档)不受影响。AGENTS 发布规则同步。

  • fix(governance): 里程碑自动合并改轮询合并+授权标签;修复 publish.yml paths-ignore 缩进 (#284)
  • auto-merge-milestone.yml:native auto-merge 在 PR BLOCKED 时 enable 静默失败(#281 实测), 改为带 milestone:auto-merge 标签时轮询至 mergeable(必选检查失败即中止)→ gh pr merge --squash 自动合并
  • publish.yml:#279 误把 paths-ignore 缩进到 branches 块内致 push 过滤失效(任意分支 push 触发且 0s 失败), 修正为同级(此前 #279 后无 beta 实为 workflow 解析失败,非 paths-ignore 生效)
  • 新增仓库标签 milestone:auto-merge(owner 打标签授权自动合并)
  • fix(ci): milestone auto-merge 读标签补 issues:read 权限并直读 issues API (#286)

GITHUB_TOKEN 默认无 issues 读权限:gh pr view --json labels 底层 issues API 被拒→ 标签检测恒空→跳过(labeled run 实测 15:41/15:42 均 skip)。 补 issues: read 权限 + 改走 gh api repos/{owner}/{repo}/issues/{n}/labels。

  • fix(ci): milestone auto-merge 状态机硬化——瞬时 UNKNOWN/BLOCKED 重试而非失败 (#287)

synchronize 刚触发瞬间 gh pr view 读不到合并状态(15:50 run 7s 即失败), UNKNOWN 被当终态 exit 1。改为:UNKNOWN/BLOCKED/DRAFT/BEHIND/UNSTABLE 一律 sleep 重试 (必选检查失败已由 gh pr checks 单独拦截),仅 CONFLICTING/DIRTY 等中止;MERGED 视为成功。

  • fix(ci): milestone auto-merge 补 issues:read 权限 + 直读 issues API 读标签 (#288)

develop 现网 workflow 缺失该补丁(#286 因本地分支错乱实际未带上):GITHUB_TOKEN 默认 无 issues 读权限,gh pr view --json labels 底层被拒→标签恒空→poller 恒跳过(15:41/15:42/15:55 run 均实测)。 补 issues: read + 改走 gh api repos/{owner}/{repo}/issues/{n}/labels。

  • fix(ci): milestone auto-merge 自锁修复——UNSTABLE 亦可合并 (#289)

poller 自身 job 作为非必选 check 运行时 GitHub 对 PR 报 UNSTABLE(必选已绿), poller 只认 CLEAN → 永不合并直至超时(16:03 run 实测 3m+ 空转)。 改 CLEAN|UNSTABLE 均尝试合并;必选检查失败仍由 gh pr checks 先行拦截。

  • ci(governance): 弃用轮询自动合并,改 GitHub 原生 auto-merge (#290)

owner 指出应通过仓库配置 + 原生 auto-merge 实现「PR 通过 CI 后自动合并」, 而非在 CI 工作流里写轮询脚本(存在自锁:poller job 自身为非必选 check 使 mergeState 停在 UNSTABLE 永不 CLEAN 等坑)。删除 auto-merge-milestone.yml;流程改为: 里程碑 PR(base=main, head=develop)上一次性 gh pr merge --auto --squash(或 UI Enable auto-merge),GitHub 原生在分支保护要求的 CI 绿后自动合并触发发布。AGENTS 同步。

  • docs(im): §2.6 验证状态补注——三类会话真机验收闭环(管理群/玩家群/私聊) (#278)

2026-09-04 补验完成:管理群(上行问答+管理指令 fail-closed)、玩家群(PUBLIC 广播收到 「启动完成」通知)、管理员私聊(下行 test + 绑定后 $l 问答回复);三类绑定跨重启持久化验证通过

  • docs(changelog): 发布流程验证注记 + 治理对齐收尾(里程碑 auto-merge 演示,纯文档不发版) (#295)

  • ci(governance): 里程碑 PR(develop→main)CI 绿后自动 squash 合并并触发发布 (#280)

里程碑发布闭环:auto-merge-milestone.yml 在 base=main head=develop 的 PR 开启/更新时 enable auto-merge(squash)——分支保护的 CI 门禁(build+folia-smoke) 通过后 GitHub 自动合并 → push main → publish.yml 自动发 beta;无需人工点合并。 非 develop→main 的 main PR(热修复/纯文档)不受影响。AGENTS 发布规则同步。

  • fix(governance): 里程碑自动合并改轮询合并+授权标签;修复 publish.yml paths-ignore 缩进 (#284)
  • auto-merge-milestone.yml:native auto-merge 在 PR BLOCKED 时 enable 静默失败(#281 实测), 改为带 milestone:auto-merge 标签时轮询至 mergeable(必选检查失败即中止)→ gh pr merge --squash 自动合并
  • publish.yml:#279 误把 paths-ignore 缩进到 branches 块内致 push 过滤失效(任意分支 push 触发且 0s 失败), 修正为同级(此前 #279 后无 beta 实为 workflow 解析失败,非 paths-ignore 生效)
  • 新增仓库标签 milestone:auto-merge(owner 打标签授权自动合并)
  • fix(ci): milestone auto-merge 读标签补 issues:read 权限并直读 issues API (#286)

GITHUB_TOKEN 默认无 issues 读权限:gh pr view --json labels 底层 issues API 被拒→ 标签检测恒空→跳过(labeled run 实测 15:41/15:42 均 skip)。 补 issues: read 权限 + 改走 gh api repos/{owner}/{repo}/issues/{n}/labels。

  • fix(ci): milestone auto-merge 状态机硬化——瞬时 UNKNOWN/BLOCKED 重试而非失败 (#287)

synchronize 刚触发瞬间 gh pr view 读不到合并状态(15:50 run 7s 即失败), UNKNOWN 被当终态 exit 1。改为:UNKNOWN/BLOCKED/DRAFT/BEHIND/UNSTABLE 一律 sleep 重试 (必选检查失败已由 gh pr checks 单独拦截),仅 CONFLICTING/DIRTY 等中止;MERGED 视为成功。

  • fix(ci): milestone auto-merge 补 issues:read 权限 + 直读 issues API 读标签 (#288)

develop 现网 workflow 缺失该补丁(#286 因本地分支错乱实际未带上):GITHUB_TOKEN 默认 无 issues 读权限,gh pr view --json labels 底层被拒→标签恒空→poller 恒跳过(15:41/15:42/15:55 run 均实测)。 补 issues: read + 改走 gh api repos/{owner}/{repo}/issues/{n}/labels。

  • fix(ci): milestone auto-merge 自锁修复——UNSTABLE 亦可合并 (#289)

poller 自身 job 作为非必选 check 运行时 GitHub 对 PR 报 UNSTABLE(必选已绿), poller 只认 CLEAN → 永不合并直至超时(16:03 run 实测 3m+ 空转)。 改 CLEAN|UNSTABLE 均尝试合并;必选检查失败仍由 gh pr checks 先行拦截。

  • ci(governance): 弃用轮询自动合并,改 GitHub 原生 auto-merge (#290)

owner 指出应通过仓库配置 + 原生 auto-merge 实现「PR 通过 CI 后自动合并」, 而非在 CI 工作流里写轮询脚本(存在自锁:poller job 自身为非必选 check 使 mergeState 停在 UNSTABLE 永不 CLEAN 等坑)。删除 auto-merge-milestone.yml;流程改为: 里程碑 PR(base=main, head=develop)上一次性 gh pr merge --auto --squash(或 UI Enable auto-merge),GitHub 原生在分支保护要求的 CI 绿后自动合并触发发布。AGENTS 同步。

  • docs(changelog): 发布流程验证注记(auto-merge 探针,纯文档) (#292)

  • ci(governance): develop 对齐 main——删除轮询 workflow + AGENTS 原生 auto-merge 措辞 (#294)

#290 曾因本地脏工作区把错误树合入 develop(轮询 workflow 仍在、AGENTS 旧措辞)。 main(#281 快照)内容正确(无轮询文件、AGENTS v2)。本 PR 以 main 为基准对齐 develop: 删除 auto-merge-milestone.yml + AGENTS 里程碑段落恢复 GitHub 原生 auto-merge 描述。

  • docs: 反向同步自动化探针文件(验证 main→develop 自动同步链路) (#299)

  • ci(governance): 里程碑——开发工作流定稿 + main→develop 自动同步 (#302)

  • ci(governance): 里程碑 PR(develop→main)CI 绿后自动 squash 合并并触发发布 (#280)

里程碑发布闭环:auto-merge-milestone.yml 在 base=main head=develop 的 PR 开启/更新时 enable auto-merge(squash)——分支保护的 CI 门禁(build+folia-smoke) 通过后 GitHub 自动合并 → push main → publish.yml 自动发 beta;无需人工点合并。 非 develop→main 的 main PR(热修复/纯文档)不受影响。AGENTS 发布规则同步。

  • fix(governance): 里程碑自动合并改轮询合并+授权标签;修复 publish.yml paths-ignore 缩进 (#284)
  • auto-merge-milestone.yml:native auto-merge 在 PR BLOCKED 时 enable 静默失败(#281 实测), 改为带 milestone:auto-merge 标签时轮询至 mergeable(必选检查失败即中止)→ gh pr merge --squash 自动合并
  • publish.yml:#279 误把 paths-ignore 缩进到 branches 块内致 push 过滤失效(任意分支 push 触发且 0s 失败), 修正为同级(此前 #279 后无 beta 实为 workflow 解析失败,非 paths-ignore 生效)
  • 新增仓库标签 milestone:auto-merge(owner 打标签授权自动合并)
  • fix(ci): milestone auto-merge 读标签补 issues:read 权限并直读 issues API (#286)

GITHUB_TOKEN 默认无 issues 读权限:gh pr view --json labels 底层 issues API 被拒→ 标签检测恒空→跳过(labeled run 实测 15:41/15:42 均 skip)。 补 issues: read 权限 + 改走 gh api repos/{owner}/{repo}/issues/{n}/labels。

  • fix(ci): milestone auto-merge 状态机硬化——瞬时 UNKNOWN/BLOCKED 重试而非失败 (#287)

synchronize 刚触发瞬间 gh pr view 读不到合并状态(15:50 run 7s 即失败), UNKNOWN 被当终态 exit 1。改为:UNKNOWN/BLOCKED/DRAFT/BEHIND/UNSTABLE 一律 sleep 重试 (必选检查失败已由 gh pr checks 单独拦截),仅 CONFLICTING/DIRTY 等中止;MERGED 视为成功。

  • fix(ci): milestone auto-merge 补 issues:read 权限 + 直读 issues API 读标签 (#288)

develop 现网 workflow 缺失该补丁(#286 因本地分支错乱实际未带上):GITHUB_TOKEN 默认 无 issues 读权限,gh pr view --json labels 底层被拒→标签恒空→poller 恒跳过(15:41/15:42/15:55 run 均实测)。 补 issues: read + 改走 gh api repos/{owner}/{repo}/issues/{n}/labels。

  • fix(ci): milestone auto-merge 自锁修复——UNSTABLE 亦可合并 (#289)

poller 自身 job 作为非必选 check 运行时 GitHub 对 PR 报 UNSTABLE(必选已绿), poller 只认 CLEAN → 永不合并直至超时(16:03 run 实测 3m+ 空转)。 改 CLEAN|UNSTABLE 均尝试合并;必选检查失败仍由 gh pr checks 先行拦截。

  • ci(governance): 弃用轮询自动合并,改 GitHub 原生 auto-merge (#290)

owner 指出应通过仓库配置 + 原生 auto-merge 实现「PR 通过 CI 后自动合并」, 而非在 CI 工作流里写轮询脚本(存在自锁:poller job 自身为非必选 check 使 mergeState 停在 UNSTABLE 永不 CLEAN 等坑)。删除 auto-merge-milestone.yml;流程改为: 里程碑 PR(base=main, head=develop)上一次性 gh pr merge --auto --squash(或 UI Enable auto-merge),GitHub 原生在分支保护要求的 CI 绿后自动合并触发发布。AGENTS 同步。

  • docs(changelog): 发布流程验证注记(auto-merge 探针,纯文档) (#292)

  • ci(governance): develop 对齐 main——删除轮询 workflow + AGENTS 原生 auto-merge 措辞 (#294)

#290 曾因本地脏工作区把错误树合入 develop(轮询 workflow 仍在、AGENTS 旧措辞)。 main(#281 快照)内容正确(无轮询文件、AGENTS v2)。本 PR 以 main 为基准对齐 develop: 删除 auto-merge-milestone.yml + AGENTS 里程碑段落恢复 GitHub 原生 auto-merge 描述。

  • docs(agents): 新增「开发工作流与发布」定稿章节,收敛分支模型重复叙述 (#296)

把 feature/bugfix/hotfix/里程碑/正式发版五场景流程+门禁+铁律整理为单一权威章节 (AGENTS 单一事实源);版本号与发布规则改为短版本语义+指针;多 AI 协作 #3 分支模型 改为指针引用,消除三处重复/漂移。含 #286/#290 脏工作区污染教训与 native auto-merge 用法。

  • docs(agents): 补「main→develop 反向同步」流程到开发工作流章节 (#297)

main 有独立提交(hotfix/文档直合)时须反向 PR 同步进 develop,保持 develop ⊇ main, 避免里程碑因两侧同文件各自演进冲突(#293 教训)。含步骤、时机建议与「空 PR=已同步」信号。

  • feat(ci): main→develop 反向同步自动化(事件驱动 + 原生 auto-merge) (#298)

main 有独立提交(hotfix/文档直合/tag bump)后需人工开反向 PR 同步,费时易漏。 新增 main-develop-sync.yml:push main → 比较两分支内容,main 确有领先内容 → 自动开反向 PR (head=main base=develop)+ enable 原生 auto-merge(squash)→ CI 绿自动合入 develop; 里程碑后内容一致 → 自动跳过(无空 PR);冲突 → 不开 auto-merge 留人工。 auto-merge 用 secrets.BOT_PAT(Actions GITHUB_TOKEN 无法 enable,实测)。 AGENTS 反向同步小节改为自动化说明 + 人工兜底步骤。

  • chore(sync): 历史欠账消解——main 并回 develop (#301)

  • ci(governance): 里程碑自动合并闭环 + publish 过滤修正(dry-run 端到端验证) (#281)

  • ci(governance): 里程碑 PR(develop→main)CI 绿后自动 squash 合并并触发发布 (#280)

里程碑发布闭环:auto-merge-milestone.yml 在 base=main head=develop 的 PR 开启/更新时 enable auto-merge(squash)——分支保护的 CI 门禁(build+folia-smoke) 通过后 GitHub 自动合并 → push main → publish.yml 自动发 beta;无需人工点合并。 非 develop→main 的 main PR(热修复/纯文档)不受影响。AGENTS 发布规则同步。

  • fix(governance): 里程碑自动合并改轮询合并+授权标签;修复 publish.yml paths-ignore 缩进 (#284)
  • auto-merge-milestone.yml:native auto-merge 在 PR BLOCKED 时 enable 静默失败(#281 实测), 改为带 milestone:auto-merge 标签时轮询至 mergeable(必选检查失败即中止)→ gh pr merge --squash 自动合并
  • publish.yml:#279 误把 paths-ignore 缩进到 branches 块内致 push 过滤失效(任意分支 push 触发且 0s 失败), 修正为同级(此前 #279 后无 beta 实为 workflow 解析失败,非 paths-ignore 生效)
  • 新增仓库标签 milestone:auto-merge(owner 打标签授权自动合并)
  • fix(ci): milestone auto-merge 读标签补 issues:read 权限并直读 issues API (#286)

GITHUB_TOKEN 默认无 issues 读权限:gh pr view --json labels 底层 issues API 被拒→ 标签检测恒空→跳过(labeled run 实测 15:41/15:42 均 skip)。 补 issues: read 权限 + 改走 gh api repos/{owner}/{repo}/issues/{n}/labels。

  • fix(ci): milestone auto-merge 状态机硬化——瞬时 UNKNOWN/BLOCKED 重试而非失败 (#287)

synchronize 刚触发瞬间 gh pr view 读不到合并状态(15:50 run 7s 即失败), UNKNOWN 被当终态 exit 1。改为:UNKNOWN/BLOCKED/DRAFT/BEHIND/UNSTABLE 一律 sleep 重试 (必选检查失败已由 gh pr checks 单独拦截),仅 CONFLICTING/DIRTY 等中止;MERGED 视为成功。

  • fix(ci): milestone auto-merge 补 issues:read 权限 + 直读 issues API 读标签 (#288)

develop 现网 workflow 缺失该补丁(#286 因本地分支错乱实际未带上):GITHUB_TOKEN 默认 无 issues 读权限,gh pr view --json labels 底层被拒→标签恒空→poller 恒跳过(15:41/15:42/15:55 run 均实测)。 补 issues: read + 改走 gh api repos/{owner}/{repo}/issues/{n}/labels。

  • fix(ci): milestone auto-merge 自锁修复——UNSTABLE 亦可合并 (#289)

poller 自身 job 作为非必选 check 运行时 GitHub 对 PR 报 UNSTABLE(必选已绿), poller 只认 CLEAN → 永不合并直至超时(16:03 run 实测 3m+ 空转)。 改 CLEAN|UNSTABLE 均尝试合并;必选检查失败仍由 gh pr checks 先行拦截。

  • ci(governance): 弃用轮询自动合并,改 GitHub 原生 auto-merge (#290)

owner 指出应通过仓库配置 + 原生 auto-merge 实现「PR 通过 CI 后自动合并」, 而非在 CI 工作流里写轮询脚本(存在自锁:poller job 自身为非必选 check 使 mergeState 停在 UNSTABLE 永不 CLEAN 等坑)。删除 auto-merge-milestone.yml;流程改为: 里程碑 PR(base=main, head=develop)上一次性 gh pr merge --auto --squash(或 UI Enable auto-merge),GitHub 原生在分支保护要求的 CI 绿后自动合并触发发布。AGENTS 同步。

  • docs(im): §2.6 验证状态补注——三类会话真机验收闭环(管理群/玩家群/私聊) (#278)

2026-09-04 补验完成:管理群(上行问答+管理指令 fail-closed)、玩家群(PUBLIC 广播收到 「启动完成」通知)、管理员私聊(下行 test + 绑定后 $l 问答回复);三类绑定跨重启持久化验证通过

  • docs(changelog): 发布流程验证注记 + 治理对齐收尾(里程碑 auto-merge 演示,纯文档不发版) (#295)

  • ci(governance): 里程碑 PR(develop→main)CI 绿后自动 squash 合并并触发发布 (#280)

里程碑发布闭环:auto-merge-milestone.yml 在 base=main head=develop 的 PR 开启/更新时 enable auto-merge(squash)——分支保护的 CI 门禁(build+folia-smoke) 通过后 GitHub 自动合并 → push main → publish.yml 自动发 beta;无需人工点合并。 非 develop→main 的 main PR(热修复/纯文档)不受影响。AGENTS 发布规则同步。

  • fix(governance): 里程碑自动合并改轮询合并+授权标签;修复 publish.yml paths-ignore 缩进 (#284)
  • auto-merge-milestone.yml:native auto-merge 在 PR BLOCKED 时 enable 静默失败(#281 实测), 改为带 milestone:auto-merge 标签时轮询至 mergeable(必选检查失败即中止)→ gh pr merge --squash 自动合并
  • publish.yml:#279 误把 paths-ignore 缩进到 branches 块内致 push 过滤失效(任意分支 push 触发且 0s 失败), 修正为同级(此前 #279 后无 beta 实为 workflow 解析失败,非 paths-ignore 生效)
  • 新增仓库标签 milestone:auto-merge(owner 打标签授权自动合并)
  • fix(ci): milestone auto-merge 读标签补 issues:read 权限并直读 issues API (#286)

GITHUB_TOKEN 默认无 issues 读权限:gh pr view --json labels 底层 issues API 被拒→ 标签检测恒空→跳过(labeled run 实测 15:41/15:42 均 skip)。 补 issues: read 权限 + 改走 gh api repos/{owner}/{repo}/issues/{n}/labels。

  • fix(ci): milestone auto-merge 状态机硬化——瞬时 UNKNOWN/BLOCKED 重试而非失败 (#287)

synchronize 刚触发瞬间 gh pr view 读不到合并状态(15:50 run 7s 即失败), UNKNOWN 被当终态 exit 1。改为:UNKNOWN/BLOCKED/DRAFT/BEHIND/UNSTABLE 一律 sleep 重试 (必选检查失败已由 gh pr checks 单独拦截),仅 CONFLICTING/DIRTY 等中止;MERGED 视为成功。

  • fix(ci): milestone auto-merge 补 issues:read 权限 + 直读 issues API 读标签 (#288)

develop 现网 workflow 缺失该补丁(#286 因本地分支错乱实际未带上):GITHUB_TOKEN 默认 无 issues 读权限,gh pr view --json labels 底层被拒→标签恒空→poller 恒跳过(15:41/15:42/15:55 run 均实测)。 补 issues: read + 改走 gh api repos/{owner}/{repo}/issues/{n}/labels。

  • fix(ci): milestone auto-merge 自锁修复——UNSTABLE 亦可合并 (#289)

poller 自身 job 作为非必选 check 运行时 GitHub 对 PR 报 UNSTABLE(必选已绿), poller 只认 CLEAN → 永不合并直至超时(16:03 run 实测 3m+ 空转)。 改 CLEAN|UNSTABLE 均尝试合并;必选检查失败仍由 gh pr checks 先行拦截。

  • ci(governance): 弃用轮询自动合并,改 GitHub 原生 auto-merge (#290)

owner 指出应通过仓库配置 + 原生 auto-merge 实现「PR 通过 CI 后自动合并」, 而非在 CI 工作流里写轮询脚本(存在自锁:poller job 自身为非必选 check 使 mergeState 停在 UNSTABLE 永不 CLEAN 等坑)。删除 auto-merge-milestone.yml;流程改为: 里程碑 PR(base=main, head=develop)上一次性 gh pr merge --auto --squash(或 UI Enable auto-merge),GitHub 原生在分支保护要求的 CI 绿后自动合并触发发布。AGENTS 同步。

  • docs(changelog): 发布流程验证注记(auto-merge 探针,纯文档) (#292)

  • ci(governance): develop 对齐 main——删除轮询 workflow + AGENTS 原生 auto-merge 措辞 (#294)

#290 曾因本地脏工作区把错误树合入 develop(轮询 workflow 仍在、AGENTS 旧措辞)。 main(#281 快照)内容正确(无轮询文件、AGENTS v2)。本 PR 以 main 为基准对齐 develop: 删除 auto-merge-milestone.yml + AGENTS 里程碑段落恢复 GitHub 原生 auto-merge 描述。

  • docs: 反向同步自动化探针文件(验证 main→develop 自动同步链路) (#299)

  • docs: 反向同步自动化二次探针(全自动链路验证) (#304)

  • feat(im): F1 builtin 装配泛化——BuiltinImDriver 多平台槽(批次4 前置) (#305)

QQ 单平台硬编码(qqPlatform/currentQqConfig/platformFactory)泛化为 PlatformSlot 列表: 每平台一个生命周期槽(读 platforms. 段 → usable 判定 → factory),reconcile 逐槽 启/停/凭据变化重建;send/platformFor/tryReconnect/tearDown 遍历全部槽。 QQ 行为零变更(现有测试全绿);新增 F1 用例验证:第二平台槽(飞书形态配置, 字段 app_secret ≠ QQ client_secret)可注册并独立 reconcile/路由、单平台凭据缺失不阻塞 其他平台(R10)。为批次4 飞书/Discord/TG adapter 逐个挂载铺路。

  • feat(im): F2 飞书 HTTP 层——FeishuApiClient + FeishuSender(批次4) (#306)

协议参照 EasyBot easybot-adapter-feishu lib.rs + 官方 SDK larksuite-oapi-sdk-rs 0.3.11:

  • FeishuApiClient:tenant_access_token 换发(POST /auth/v3/tenant_access_token/internal)、 WS 长连接端点引导(POST {domain}/callback/ws/endpoint,AppID/AppSecret 直换,解析 ClientConfig PingInterval 等,默认 120s)、群角色查询(GET /im/v1/chats/{id} → owner_id + user_manager_id_list,ChatRoles.isOwnerOrManager 供入站 admin 判定)
  • FeishuSender:POST /im/v1/messages?receive_id_type=chat_id,content 为 JSON 字符串 ({"text":...},勿双编码);飞书 API 恒 HTTP 200+业务 code——成功判定 = 2xx 且 code==0; token 失效(401/99991663/99991665/20013/20005)→ 强制重换一次并重试一次(D7 鉴权层重试) 单测 15 例(MockWebServer:请求体/鉴权头/错误分类/角色判定/content 编码/token 重换)。
  • feat(im): F3a 飞书 protobuf 帧编解码器 FeishuFrame(批次4) (#307)

飞书长连接 WS 为二进制 protobuf 帧(非文本 JSON)——手写最小 proto2 wire format 编解码(零依赖,对照官方 SDK proto/ws.proto + src/ws.rs):

  • Frame{SeqID=1 u64, LogID=2 u64, service=3, method=4, headers=5 repeated{key,value}, payload_encoding=6, payload_type=7, payload=8, LogIDNew=9};未知字段按 wire type 跳过(向前兼容)
  • 工厂:ping(客户端心跳,service=service_id)/ pong(服务端 ping 回显 seq/log/service)/ eventAck(事件处理后回 ACK:回显 + biz_rt 头 + code JSON payload) 单测 8 例:ping/pong/event/ack 往返、字段保持、未知字段跳过、截断拒绝。F3b WS 网关复用。
  • feat(im): F3b 飞书长连接 WS 网关 + ReconnectingGateway 二进制帧支持(批次4) (#308)

ReconnectingGateway 增量二进制支持(QQ 文本路径零影响,现有测试全绿):

  • 心跳重构为 HeartbeatPump(文本/二进制两实现),新增 configureHeartbeatBytes(飞书 protobuf ping)
  • 新增 onMessage(ByteBuffer) 钩子 → onGatewayPayload(byte[])(默认空,文本平台不覆写)+ sendBytes
  • 静默看门狗对二进制入站同样生效

FeishuGatewayClient(继承骨架,复用量连/看门狗):

  • resolveEndpoint 每次重连经 FeishuApiClient.fetchWsEndpoint 引导(失败返回 null → 骨架退避)
  • onGatewayOpen 按引导 PingInterval(缺省 120s)发二进制 ping(service=URL service_id 参数,缺省 0)
  • 帧分发:CONTROL ping → 回 pong(回显 seq/log/service);DATA event → 透传 FeishuEventSink 后回 ACK(code 200 停推 / 处理异常 500 平台重推,防重复靠 F4 事件去重) TestWsServer 增二进制帧收发(receivedBinary/sendBinary)。 单测 5 例(端点引导→心跳 ping/service 解析/pong 回显/事件透传+ACK 200/异常 ACK 500/引导失败退避)。
  • feat(im): F4a 飞书入站归一 + 处理器 + 角色判定(批次4) (#309)

FeishuInboundMessage(归一模型:chatType group/user + chat_id oc_* + target feishu:...)

  • FeishuInboundParser(事件 v2 信封 → im.message.receive_v1 → 文本消息;content 为 JSON 字符串 需解 {text:..};非 text/媒体丢弃 D6;chat_type p2p→user;sender open_id 回退 user_id)
  • FeishuAdminResolver(角色判定接口——飞书事件无角色,需查 chats API)
  • FeishuRoleResolver(实现:单聊恒非管理;cache TTL 30s/容量 10k;并发单飞 inflight; token 失效 onAuthFailure 重换一次;supplyAsync 后台执行不阻塞 WS/服务器线程)
  • FeishuReplySink + FeishuInboundProcessor(R4 源过滤 user-only / R6 限频 100/s / fail-closed 会话门槛 D11 / R12 双 runSync 编排:门槛在 WS 线程,角色异步回后再进 服务器线程命令层,绝不阻塞服务器线程等网络——对齐 AGENTS Folia 红线)
  • feat(im): F4b 飞书 Adapter 装配——FeishuBuiltinAdapter + BuiltinImDriver/Provider 挂载(批次4) (#310)

FeishuPlatformConfig(im.yml platforms.feishu,app_id cli_+app_secret,usable 判定)

  • FeishuBuiltinAdapter(组合根:RefreshableTokenProvider(fetch=tenant token) + FeishuSender + FeishuInboundProcessor(FeishuRoleResolver) + FeishuGatewayClient,健康 key builtin.feishu, HealthListener 桥接连接状态;target feishu::<chat_id> 解析出站)
  • BuiltinImDriver 生产构造注册 feishu 槽(会话绑定实时读,reconcile 与 QQ 并行独立)
  • BotMessageServiceProvider:builtin 后端可用判定改为「QQ 或飞书任一 usable」
  • im.yml schema 增 feishu 段(enabled/app_id/app_secret) 测试:FeishuPlatformConfig 3 例、Provider 增飞书可用选 builtin 1 例。
  • fix(im): 飞书 @ 消息命令不响应——剥离 @_user_N 占位符 (#311)

实测根因:飞书把 @机器人/@成员在 text 消息 content 中转为 @_user_N 占位符 (如 "@_user_1 $h"),命令层要求 $ 前缀 → @ 消息无法识别(普通 $h 正常)。 修复:FeishuInboundParser 解出 text 后剥离 @user\d+ 占位符再 trim(纯 @ 无文本 → 空丢弃),句中 @ 剥离两侧文本保留。 单测 3 例:@ 前缀命令可解析/纯 @ 丢弃/句中 @ 保留两侧。

Файлы

OrzMC-1.0.24-dev.406.jar(3.14 MiB)
Основной
Скачать

Метаданные

Канал релиза

Beta

Номер версии

1.0.24-dev.406

Загрузчики

Folia
Paper

Версии игры

26.2

Загрузок

0

Дата публикации

04.09.2026

Загрузил

ID версии

Главная