北京时间今天凌晨 5 点 33 分,据 Flarum 官方社区消息,Flarum 2.0.0-rc.7 正式发布。
和刚刚过去的 rc.6 不同,这一版几乎没有继续扩充功能,而是专门处理 rc.6 发布后在真实论坛中发现的问题。
整个 rc.7 只有 5 项修复。
换句话说,Flarum 2.0 现在已经基本进入“停止加东西,只确认还有没有发布阻塞问题”的阶段。
官方对这一版的定位也很明确:如果接下来没有再发现必须阻止发布的问题,rc.7 就可能直接成为 Flarum 2.0.0 正式版。
修复 1.x → 2.x 升级时的循环依赖
这一版最重要的修复,是解决部分论坛从 Flarum 1.x 升级到 2.x 时遇到的扩展循环依赖。
在安装 Audit、FoF GeoIP、FoF Ban IPs 等一组相关扩展时,依赖关系可能绕成一个闭环,最终导致升级过程直接报错:
Circular dependencies detected… aborting.
这不是单纯的扩展“不兼容”,而是会直接阻塞升级流程。
排查后发现,其中一条后端依赖实际上并不需要存在,因此 rc.7 移除了这条多余依赖,在不影响原有功能的情况下打断了依赖环。
如果你之前升级 rc.6 时正好遇到 Circular dependencies detected,rc.7 主要就是来解决这个问题的。
队列暂停功能补了一轮容错
rc.6 新增了队列暂停功能,不过部分第三方队列驱动没有提供完整的连接名称时,会出现一种比较尴尬的情况:
队列其实已经暂停了,但命令随后报错,后台又无法正确识别这个暂停状态。
严重时甚至连批量恢复命令都不知道应该恢复哪个队列。
rc.7 给这部分逻辑补上了默认名称和额外容错,让第三方队列实现也能更可靠地使用暂停和恢复功能。
如果你的论坛使用 Redis、Horizon 或其他自定义队列方案,这项修复值得关注。
子目录安装的论坛,站内链接恢复正常
rc.6 调整了论坛内部链接的处理方式,但对安装在子目录中的论坛产生了一个回归。
比如论坛地址是:
https://example.com/forum
点击帖子里的其他主题链接时,有可能错误丢掉 /forum,最后被带回首页或错误地址。
rc.7 已修复这一问题。
正常安装在域名根目录的论坛基本不会遇到,所以这更像是一个比较隐蔽、但对特定站点影响很直接的问题。
删除帖子后,不再留下无意义的失败通知任务
还有一个修复发生在通知队列。
过去如果一条回复已经触发通知任务,但在队列真正处理之前帖子又被删除,那么通知任务执行时会因为找不到原帖子而失败。
这种任务其实已经没有继续执行的意义,却会留下一条失败记录。
rc.7 现在会识别这种情况并直接丢弃任务,不再反复失败或污染失败任务列表。
还有一个很小的 UI 修复
没有设置图标的标签,其颜色方块之前和文字存在轻微的垂直错位。
rc.7 把它重新对齐了。
是的,这基本就是第五项修复。
也正因为更新内容已经缩小到这种程度,反而更能说明当前 2.0 所处的阶段:
主要功能已经冻结,现在是在收尾。
真正重要的是:官方准备让社区决定能不能发布 2.0
rc.7 公告中最值得注意的,其实并不是上面这几个 Bug。
Flarum 团队接下来准备向社区提出一个非常直接的问题:
2.0.0-rc.7 是否已经可以成为 2.0.0?
官方计划在接下来的几天发起社区投票。
不过这次投票并不是单纯问大家“感觉怎么样”。
官方更希望参与投票的人,是真的已经:
- 升级了 rc.7;
- 跑过自己的扩展组合;
- 看过真实用户访问;
- 确认论坛在实际环境中正常运行。
所以现在如果你有可以测试的 Flarum 2.0 论坛,哪怕升级之后什么问题都没遇到,也很值得反馈一句:
到了 RC 的最后阶段,“没有发现问题”本身就是非常有价值的测试结果。
什么问题才应该阻止 2.0 发布?
官方这几次公告一直在强调一件事:
不是所有 Bug 都需要挡住 2.0。
真正应该阻止正式版发布的,主要是:
- 数据丢失;
- 安全问题;
- 升级流程无法完成;
- 严重功能回退;
- 没有合理绕过方案的关键故障。
至于:
- 小型 UI 问题;
- 一些操作体验不够顺手;
- 可以通过 CSS 或扩展解决的问题;
- 不影响核心使用的小 Bug;
则完全可以留给 2.0.1 或之后的版本。
毕竟 RC 的目标不是做到“世界上再也没有 Bug”,而是确认:
现在还有没有严重到不应该发布 2.0 的问题。
扩展开发者:前端测试环境也顺手修好了
rc.7 公告里还顺带提到了一个扩展开发相关的改进。
Flarum 官方文档一直提供使用 bootstrapForum() 编写前端测试的方式,但以前这套测试配置在 Flarum 自己的 framework 仓库里运行比较正常,搬到普通第三方扩展项目中却可能解析不到 Flarum Core。
现在随着 @flarum/jest-config 2.0.2 发布,这个问题已经解决。
扩展开发者可以在 js 目录中安装:
yarn add --dev @flarum/jest-config@^2.0.2
测试环境就能够从 Composer 的 vendor/ 目录解析 Flarum Core 及相关依赖。
对于普通站长来说这没什么存在感,但对准备给扩展补测试的开发者来说,会方便不少。
如何升级?
如果你已经在使用 Flarum 2.0 RC,可以继续按照官方建议升级:
composer update -W
php flarum migrate
php flarum cache:clear
仍然建议:
- 升级前做好备份;
- 有条件先在测试环境验证;
- 检查自己使用的扩展是否正常;
- 特别留意从 1.x 升级的站点和使用第三方队列的站点。
下一版会不会就是 2.0.0?
从 rc.6 到 rc.7 的变化其实很能说明问题。
rc.6 还一次合并了 100 多个 PR,集中处理性能、查询、队列、界面和 CJK 搜索等大量内容。
到了 rc.7,只剩下 5 个真实使用过程中发现的问题需要修。
而且官方已经明确表示,正式版之前不打算继续增加新功能或主动改变现有行为。
所以接下来真正需要观察的只有:
rc.7 能不能在足够多真实论坛上稳定运行。
如果答案是肯定的,也没有新的发布阻塞问题出现,那么它的下一站就很可能不是:
2.0.0-rc.8
而是:
2.0.0
Flarum 2.0 这次确实已经到最后一段路了。💙
—
本文仅整理 rc.7 中不分值得关注的内容,并非官方公告全文翻译。
完整的 5 项修复、对应 PR、社区投票说明以及后续进展,请阅读 Flarum 官方英文原文:
Flarum 2.0.0-rc.7 released - the release candidate for 2.0
https://discuss.flarum.org/d/39731-flarum-200-rc7-released-the-release-candidate-for-20