WeKan 2026-01 版本解读:SnowBleed 与 FloppyBleed 两轮关键安全修复和 Meteor 3 升级过渡
2026/9/14 8:31:17 网站建设 项目流程

WeKan 2026-01 版本解读:SnowBleed 与 FloppyBleed 两轮关键安全修复和 Meteor 3 升级过渡

【免费下载链接】wekanThe Open Source kanban, built with Meteor. GitHub issues/PRs are only for FLOSS Developers, not for support, support is at https://wekan.fi/commercial-support/ . PR source translation to imports/i18n/data/en.i18n.json, other translations at https://app.transifex.com/wekan/wekan项目地址: https://gitcode.com/GitHub_Trending/we/wekan

本文基于 WeKan 仓库归档的 2026 年 1 月发布记录 展开,完整覆盖当月 v8.20 至 v8.27 共 8 个版本的安全修复、功能新增与依赖升级细节。读完本文,你可以理解 WeKan 在 2026 年 1 月完成的两轮关键安全漏洞修复(SnowBleed 系列 14 项、FloppyBleed 系列)、Meteor 2.16 到 Meteor 3 的升级过渡路径,以及发布记录从 CHANGELOG.md 拆分归档到 old-CHANGELOG 目录的机制,并能在当前仓库中定位到这些变更对应的源码与配置文件。

发布记录的归档机制:old-CHANGELOG/2026/01.md 的由来

old-CHANGELOG/2026/01.md 文件开头说明:该月度的发布记录是从 CHANGELOG.md 中整体搬迁出来的,目的是让 CHANGELOG.md 保持足够小、便于打开(对应问题 wekan/wekan#6580)。搬迁不改动任何内容:"发布段落是一条记录,它读起来和当初在 CHANGELOG.md 里一模一样。"

这一归档机制由 releases/changelog-archive.mjs 脚本实现。从该脚本的注释可以看到归档动因:CHANGELOG.md 曾达到 2.6 MB、51,365 行、涵盖 1,070 个版本(最早到 2015 年),在网页上打开和阅读都很慢;而 2026 年仅前 8 个月就有 272 个发布,其中 7 月单月 80 个,按"年"拆分的粒度太粗,因此改为按"月"归档:

  • CHANGELOG.md:仅保留当前月份,加上 "# Platforms"、"# TODO Later"、"# Upcoming" 等章节;
  • old-CHANGELOG/ / .md:当前年份中早于当前月的每个月份各一个文件(本文所依据的 2026/01.md 即属此类);
  • old-CHANGELOG/ .md:已过去的年份各一个完整文件(如 old-CHANGELOG/2025.md)。

脚本明确"不删除、不重写任何条目",归档段落与原先在 CHANGELOG.md 中完全一致。CHANGELOG.md 顶部的 "Older releases" 折叠列表则给出各月归档文件的导航入口,其中 2026-01 一项直接指向 old-CHANGELOG/2026/01.md。

2026 年 1 月发布概览

原文档给出了按天统计的发布表,这里完整继承:

2026-01发布数
161
181
201
211
241
281
312

合计 8 个发布:v8.20(01-16)、v8.21(01-18)、v8.22(01-20)、v8.23(01-21)、v8.24(01-24)、v8.25(01-28)、v8.26 与 v8.27(均在 01-31,一天内连发两个版本)。从结构上看,这个月的发布主线非常清晰:

  • 1 月 16 日与 1 月 18 日:连续修复 SnowBleed 这一组 CRITICAL SECURITY ISSUES(安全修复 1 至 14);
  • 1 月 28 日:单独为 FloppyBleed 的 FileBleed 关键安全问题发布 v8.25;
  • 贯穿全月:Meteor 2.16 升级、Meteor 3 相关的路由器与账户包迁移、依赖替换、Docker/Bundle 构建脚本更新。

v8.20(2026-01-16):SnowBleed 首个修复、拖拽把手回归与 FerretDB 2 文档

SnowBleed 安全修复 1:MigrationsBleed

v8.20 修复了 SnowBleed 组的第 1 项关键安全问题 MigrationsBleed(commit cbb1cd78)。这是当月安全系列修复的起点,后续 v8.21 又跟进 13 项。

新功能:恢复 Toggle Drag Handles,改进 Add List 等按钮位置

v8.20 恢复了"Toggle Drag Handles"功能,并改进了 Add List 等按钮的位置(commit 5cb712be)。在当前仓库中仍可看到这一功能的实现痕迹:

  • client/components/main/header.jade 中的js-toggle-desktop-drag-handles按钮,用于在顶部标题栏切换桌面端拖拽把手;
  • models/boards.js 中的注释说明该开关位于"顶部标题栏的锁形图标处,与拖拽把手切换相邻"。

FerretDB 2 / PostgreSQL 文档与 s390x 防火墙文档

v8.20 分 4 个 commit 新增了 FerretDB 2 / PostgreSQL 文档(感谢 WeKan Libera.Chat IRC 的 juri_ 贡献)。当前仓库中对应的内容位于 docs/Databases/FerretDB/2/PostgreSQL.md,仓库根目录同时提供 docker-compose-ferretdb-v2-postgresql.yml 作为 FerretDB v2 + PostgreSQL 后端的可运行编排示例。同版本还新增了 s390x 防火墙文档,当前仓库对应 docs/Platforms/FOSS/HW/s390x.md。

路由包迁移:kadira:flow-router 替换为 ostrio:flow-router-extra

v8.20 将 kadira:flow-router 迁移到 ostrio:flow-router-extra(PR #6067),原文明确标注这一步"与 Meteor 3 升级相关",并附带一批"让 WeKan 在 Meteor 3 相关路由升级之后仍能工作"的修复(commit 984a2dce)。在当前仓库的 .meteor/packages 中可以看到 ostrio:flow-router-extra 已是实际生效的路由包。

其他更新与修复

  • 依赖更新(PR #6059,dependabot);
  • 依赖更新并以 @wekanteam 命名空间发布为 npm 包(commit a9a89b50);
  • 更新 GitHub issue 模板(3 个 commit);
  • 修复非 ASCII 文件名附件下载错误(PR #6056,brlin-tw 贡献);
  • 泳道拖拽按钮位置改进(TDSCDMA 与 xet7);
  • 移除列表多余的边框样式;
  • 为 Filter、Search、Board View、MultiSelection 恢复按钮文字;
  • 移除 UI 中多余的竖线字符;
  • 修改 find.sh 使其不再搜索翻译文件——原话是"我在找代码,不是找翻译"。当前仓库的 find.sh 中确实保留了这条排除规则:-not -path '*/imports/i18n/data/*'
  • 修复 Change Avatar,并改进 Admin Panel 的 People 列顺序、选中 tab 背景色,修复"无法在 Admin Panel/People/People 中编辑已有用户";
  • 修复 mentions 与 notifications 抽屉(commit 20b5e2ab);
  • 修复 New Board 权限:NormalAssignedOnly、CommentAssignedOnly、ReadOnly、ReadAssignedOnly(Part 1,nazim-oss 与 xet7)。

v8.21(2026-01-18):SnowBleed 修复 2–14 与 Meteor 2.16 升级

SnowBleed 安全修复系列(第 2 至 14 项)

v8.21 一次性修复了 SnowBleed 组剩余 13 项关键安全问题,均由 Aisle Research 的 Joshua Rogers 与 xet7 提交:

序号安全修复项commit
2OrgsTeamsBleedcabfeed9
3ChecklistRESTBleed251d49ee
4MigrationsBleed2cc35d4fe
5PositionHistoryBleed55576ec1
6SyncLDAPBleed146905a4
7AttachmentMigrationBleed053bf1df
8MoveStorageBleedc413a7e8
9ListWIPBleed8c0b4f79
10BoardTitleRESTBleed545566f5
11CardPubSubBleed0f5a9c38
12FixDuplicateBleed4ce181d1
13LinkedBoardActivitiesBleed91a936e0
14RulesBleeda787bcdd

从修复项的命名可以推断出这些漏洞的分布面:组织/团队对象越权、REST 接口上的清单与看板标题操作、LDAP 同步、附件迁移、存储移动、列表 WIP、卡片发布订阅、看板复制、关联看板活动与规则引擎。仓库中 docs/Security/Remediation/WeKan.md 汇总了 WeKan 各类 Bleed 问题的缓解措施分类,可对照理解这类安全修复的验证方式。

新功能:登录与注册页可显示密码

v8.21 新增了"在 Login 和 Register 页面显示密码"的功能(commit d30192f7),属于面向用户的小而实用的功能。

升级至 Meteor 2.16 与构建脚本更新

  • 升级至 Meteor 2.16(PR #6072,harryadel 贡献)——这是当月 Meteor 升级过渡的正式版本锚点,后续 v8.26 的 wekan-accounts-lockout 异步化则直接面向 Meteor 3.0;
  • 更新 Docker 构建命令(commit b88b2768);
  • 更新 Windows Bundle 构建 .bat 脚本(commit f0118d52);
  • 更新 Linux arm64 与 s390x Bundle 构建脚本(commit e2ec5073、980510d7);
  • 依赖版本提升:tar 与 @mapbox/node-pre-gyp(PR #6071,dependabot);
  • 依赖更新(commit 95da8966)。

Bug 修复:剪贴板与数据库迁移循环

  • 修复"复制卡片链接到剪贴板"图标经常不生效的问题(brlin-tw 与 xet7);
  • 修复"从 8.19 到 8.20 的数据库迁移陷入循环"的问题(MaccabeeY 与 xet7)。当前仓库的 migrations/009_fix_v795_due_dates.js 是一个典型的配套迁移工具示例:它修复 v7.95 遗留的 dueDate 字段格式(重命名为 dueAt、修正失效的 board/list/swimlane 引用),文件头部注释即引用了迁移卡死类问题(issue #6069)作为背景。

v8.22(2026-01-20):修复 Add member 与 @mentions

v8.22 是一个纯修复版本,只修复了一个问题:"Fixed Add member and @mentions"(commit ad511bd1)。成员添加与 @提及是看板协作的核心交互,该修复保证了卡片成员管理与评论提及功能在当月一系列 UI 改动后恢复正常工作。

v8.23(2026-01-21):Meteor 社区包依赖替换潮

v8.23 集中完成了一批 Meteor 社区包的替换与移除,为后续 Meteor 3 升级扫清障碍:

变更说明当前仓库证据
percolate:synced-cron → quave:synced-cron(PR #6080)同步定时任务包换维护者分支.meteor/packages 中现为 quave:synced-cron
替换 mousetrap(PR #6082)键盘快捷键库换为现代方案package.json 中为 hotkeys-js ^4.0.7,且 client/lib/keyboard.js、client/lib/escapeActions.js 等使用它
移除 kadira:dochead(PR #6083)文档头信息包移除.meteor/packages 中已无此包
cottz:publish-relations → reywood:publish-composite(PR #6084)组合发布包替换.meteor/packages 中现为 reywood:publish-composite
tar 从 7.5.3 提升到 7.5.6(PR #6085)dependabot 安全提升
依赖更新(commit 04bfa0e6)常规依赖刷新

Bug 修复方面:

  • 修复新建 "Default" 泳道显示为 "key 'default (LOCALE)' returned an object instead of string" 的问题——这是一个典型的 i18n 翻译键被当成翻译值渲染的错误(brlin-tw 与 xet7);
  • 修复"从 8.19 到 8.21 的数据库迁移永久卡住"的问题(MaccabeeY 与 xet7)。与 v8.21 修复的"8.19→8.20 迁移循环"是同一类升级路径问题,说明 1 月中旬的迁移逻辑被连续打磨了两轮。

v8.24(2026-01-24):集合 API 现代化与迁移机制清理

v8.24 继续推进面向 Meteor 3 的代码现代化,重点是集合(Collection)操作 API 的异步化与第三方包去耦:

  • 替换 mquandalle:collection-mutations 为 collection helpers(PR #6086,harryadel)。当前仓库 imports/collectionHelpers.js 即为承接后的本地 helper 实现;
  • 替换 ongoworks:speakingurl 为 limax(PR #6087)。package.json 中 limax ^4.2.3 已作为正式依赖存在,承担 URL slug 生成;
  • createIndex 迁移到 createIndexAsync(PR #6093):Meteor 3 下索引创建改为异步 API,避免在启动路径上阻塞事件循环;
  • 移除 idmontie:migrations(PR #6095):数据库迁移机制去第三方化,迁移逻辑收敛进仓库自身(对应 server/migrations/ 与 migrations/ 中的迁移文件,如 server/migrations/migrateAttachments.js 等);
  • 移除 mquandalle:autofocus(PR #6088 与 PR #6096,分两部分);
  • Debian 13 amd64 上的 VSCode 安全沙箱(2 个 commit);
  • 构建脚本与文档更新到 Meteor 2.16(commit 1d374db0)。

v8.25(2026-01-28):FloppyBleed 关键安全修复与 Docker 多架构

关键安全修复:FileBleed(属于 FloppyBleed)

v8.25 修复了 FloppyBleed 组的 FileBleed 关键安全问题(commit a419d831,Luke Hebenstreit 与 xet7 贡献)。FloppyBleed 是一组与文件上传路径、类型、大小校验和磁盘空间防护相关的问题,在 docs/Security/Remediation/WeKan.md 的缓解措施表中,file类别明确对应 "FileBleed, FloppyBleed, SpaceBleed, MimeBleed",防护手段是"上传路径/类型/大小校验、磁盘空间守卫";其中"磁盘空间不足以容纳上传"会被拒绝,归类为 FloppyBleed 的 blocked 场景。

其他更新

  • 更新代码行数统计(commit 2f25f47d);
  • FerretDB 2 / PostgreSQL 文档位置更新(3 个 commit),当前内容位于 docs/Databases/FerretDB/2/;
  • Dockerfile 更新(commit d298ab74),当前 Dockerfile 即为演进后的构建定义;
  • Docker 镜像支持 Linux amd64/arm64/s390x(6 个 commit)。仓库根目录的 wekan-dockerfile-manifest.yaml 即多架构镜像 manifest 的定义文件,docs/Platforms/FOSS/HW/s390x.md 则记录了 s390x 平台的部署细节;
  • 大部分 Unicode 图标回退到 Font Awesome 4.7 以改善可访问性(commit 7ad04f45):减少常驻显示的按钮,更多操作收敛到 ☰ 菜单。仓库中 packages/wekan-fontawesome/ 即为对应的字体图标包;
  • Snap Candidate 更新到 MongoDB 7.0.29(commit ac70fe28),Helm Charts 同步更新到 MongoDB 7.0.29。仓库中 docker-compose-mongodb-v7.yml 提供 MongoDB 7 后端的编排示例,可作本地验证参考;
  • 修复 autofocus(commit 440f553d)。

v8.26 与 v8.27(2026-01-31):Meteor 3 异步 API 迁移与收尾

v8.26(2026-01-31)

  • wekan-accounts-lockout 迁移到面向 Meteor 3.0 的 async API(PR #6113,harryadel)。账户锁定包位于 packages/wekan-accounts-lockout/,其实现文件 packages/wekan-accounts-lockout/accounts-lockout.js 是这次异步化改造的对象。这是 1 月 Meteor 3 过渡线的收官动作之一;
  • 新增文档:Spreadsheet vs Kanban(分 Part 1 与 Part 2 两个 commit,xet7 贡献);
  • 依赖更新(commit 03439d1b);
  • 修复 Member Settings 菜单的视觉溢出(扩大容器高度,PR #6104,AymenHassini19);
  • 修复 Card copy 菜单不显示的问题(commit 0b891464,xet7);
  • 修复 Rules 视图翻译显示不正确的问题(commit f73eab23,cactus7as 与 xet7)。

v8.27(2026-01-31)

v8.27 与 v8.26 同日发布,内容更聚焦:

  • 更新 Windows 安装文档中的 MongoDB 版本为 7.0.29(commit b55e1bbd);
  • 修复卡片复制/移动操作中的 async/await 问题(PR #6120,harryadel)——与 v8.24 的 createIndexAsync 等异步化改造同属一个技术方向:把同步阻塞调用逐步替换为正确的 async/await 语义,消除竞态与阻塞。

贯穿全月的升级主线:从 Meteor 2.16 到 Meteor 3

把 8 个版本串起来看,2026 年 1 月是 WeKan 构建栈升级的过渡窗口:

  1. v8.20(01-16)开始路由层迁移(kadira:flow-router → ostrio:flow-router-extra),并明确"与 Meteor 3 升级相关";
  2. v8.21(01-18)正式升级至 Meteor 2.16(PR #6072),这是官方 Meteor 2 系列的收尾版本;
  3. v8.23 与 v8.24(01-21、01-24)完成社区包替换(synced-cron、publish-composite、hotkeys 替代 mousetrap、limax 替代 speakingurl)与集合 API 异步化(createIndexAsync)、迁移机制去第三方化(移除 idmontie:migrations);
  4. v8.26(01-31)将 wekan-accounts-lockout 迁到 Meteor 3.0 的 async API。

从当前仓库快照可以验证这条主线的落地结果:

  • .meteor/release 显示当前版本锚点为 METEOR@3.5.2,说明 1 月开启的 Meteor 3 迁移在此后继续推进到 3.x 系列;
  • .meteor/packages 中 quave:synced-cron、ostrio:flow-router-extra、reywood:publish-composite 均已生效,而 percolate:synced-cron、mousetrap 系列包、idmontie:migrations 已不存在;
  • package.json 中 hotkeys-js、limax 等替代依赖已入库,且当前仓库版本号为 v11.72.0,远晚于 2026 年 1 月的 v8.x 系列——这印证了归档记录"发布段落是一条记录"的属性:它忠实保存了 1 月的状态,而仓库本身继续向前演进。

升级与验证建议

如果你的部署环境运行在 v8.19 或更早版本,2026 年 1 月的记录给出了几个值得核对的升级要点:

  • 升级路径:8.19 → 8.20/8.21 的迁移曾被修复过"循环"和"永久卡住"两类问题(v8.21、v8.23),跨越这些版本升级时,应确认迁移完成后进程正常退出而非反复重入;
  • 安全基线:v8.21 之前的版本应尽快升级,以获取 SnowBleed 全部 14 项修复;v8.25 之前的版本缺少 FloppyBleed 的 FileBleed 修复,涉及文件上传校验与磁盘空间防护;
  • 后端选择:若计划使用 FerretDB 2 + PostgreSQL 后端,可参考 docker-compose-ferretdb-v2-postgresql.yml 与 docs/Databases/FerretDB/2/;MongoDB 7 用户可参考 docker-compose-mongodb-v7.yml,并注意 1 月底起安装文档中的 MongoDB 版本口径已统一为 7.0.29;
  • 记录查证:当月每个版本对应的原始段落可在 old-CHANGELOG/2026/01.md 逐条核对,入口链接维护在 CHANGELOG.md 的 Older releases 列表中。

综上,old-CHANGELOG/2026/01.md 记录的不仅是一串版本号,而是 WeKan 在安全加固(SnowBleed、FloppyBleed)与构建现代化(Meteor 2.16 → 3.x、异步集合 API、依赖去第三方化)两条主线上并行推进的完整一个月;仓库中的 .meteor/packages、package.json、migrations/009_fix_v795_due_dates.js、client/components/main/header.jade、docs/Databases/FerretDB/2/PostgreSQL.md 等文件,为这些变更提供了可继续深入的源码级线索。

【免费下载链接】wekanThe Open Source kanban, built with Meteor. GitHub issues/PRs are only for FLOSS Developers, not for support, support is at https://wekan.fi/commercial-support/ . PR source translation to imports/i18n/data/en.i18n.json, other translations at https://app.transifex.com/wekan/wekan项目地址: https://gitcode.com/GitHub_Trending/we/wekan

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询