:Meteor 3.4 升级、IntegrationBleed 安全修复与卡片 Excel 导出)
WeKan 2026 年 3 月版本复盘v8.35–v8.49Meteor 3.4 升级、IntegrationBleed 安全修复与卡片 Excel 导出【免费下载链接】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 年 3 月发布记录完整梳理该月 15 个版本v8.35 至 v8.49的发布内容并结合仓库当前源码与配置深入讲解其中的四条主线Meteor 3.4 / Node.js 22.22 / MongoDB 7.x 运行时升级、IntegrationBleed 与 RebindBleed 严重安全问题的修复机制、卡片导出 Excel 新功能的落地路径以及附件与头像存储迁移到WRITABLE_PATH/files/下的目录结构变化。读完本文你可以理解 WeKan 在这个月完成了哪些关键升级与修复并在当前仓库中找到对应的实现代码作为验证依据。本月份发布概览这份记录由 CHANGELOG.md 拆分而来对应 wekan/wekan#6580 的动机让主 CHANGELOG 文件保持足够小以便直接打开。按原文档的说法版本小节是发布记录拆分前后读法完全一致。2026 年 3 月的发布节奏如下2026-03发布数05 日120 日221 日323 日227 日130 日131 日5从分布可以看出这个月的发布集中在 3 月 21 日与 3 月 31 日两个峰值其中 3 月 31 日一天发布了 5 个版本v8.45–v8.49主要对应发布脚本与 Docker/Snap 打包链路的连续修复。主线一v8.43 升级至 Meteor 3.4、Node.js 22.22 与 MongoDB 7.xv8.432026-03-27是这个月最重要的运行时升级版本其变更包括升级至 Meteor 3.4、Node.js 22.22、MongoDB 7.x由 harryadel 与 xet7 贡献升级 npm 包wekanteam/exceljs的依赖升级meteorjs/rspackMeteor 官方团队贡献更新build.sh以适配 macOS 26.4并修复build.sh无法正确构建 WeKan 的问题将 Meteor 3 迁移文档移动到docs/Upgrade/目录多项依赖升级与发布脚本更新。该版本同时修复了一批功能性问题卡片导出 ExcelPart 3并顺带修复了附件上传问题移除临时调试日志修复泳道Swimlane、列表List和卡片Card设置颜色功能失效的问题修复工作区设置弹窗内容溢出overflow的问题修复剪贴板上传附件时重命名失败、并保持扩展名元数据同步的问题修复卡片操作弹窗溢出、列表操作弹窗滚动的问题修复搜索功能在 ReactiveCache 与搜索发布publications中保护异步方法避免竞态其他拼写修正等。在仓库中可以找到对应的佐证docs/Upgrade/METEOR3_MIGRATION.md 记录了 WeKan 从 Meteor 2.16 向 Meteor 3 迁移的完整模式与约束同步findOne迁移到findOneAsync等这正是 v8.43 中将迁移文档归档到docs/Upgrade/的那份文档当前位于 docs/Upgrade/ 目录下package.json 中当前依赖meteorjs/rspack版本为^2.2.0、meteorjs/reify为^0.25.4说明 Meteor 3 工具链rspack 打包、reify 模块系统已是项目的正式构建基座搜索相关的异步防护改动对应服务端ReactiveCache与搜索 publications 的调用链客户端侧缓存实现见 imports/reactiveCache.js。主线二v8.35 / v8.36 修复 IntegrationBleed 严重安全问题本月有两次被明确标注为CRITICAL SECURITY ISSUES的发布v8.352026-03-05修复 IntegrationBleed。这是本月唯一的发布由 Rodolphe GHIO 与 xet7 贡献。同版本还包含konecty:mongo-counter与templates:tabs包被内联实现替代Meteor 3 迁移的准备工作、dompurify升级、注释掉管理面板/设置/迁移相关菜单选项以加速 WeKan、优化看板加载、修复 FilesCollection 中 Avatar 与 Attachment 的findOneAsync错误、修复头像无法删除等问题以及多项 dependabot 依赖升级minimatch3.1.3→3.1.5、actions/download-artifact7→8、meteorengineer/setup-meteor2→3、actions/upload-artifact6→7。v8.362026-03-20修复 IntegrationBleed 的 RebindBleed 变体由 Rodolphe GHIO 与 xet7 贡献。当前仓库中 server/lib/ssrfGuard.js 正是这一系列安全加固的实现核心。从源码注释可以确认其防护模型通过dns.lookup({ all: true })解析双地址族A 与 AAAA 记录——源码特别指出此前只解析 A 记录的实现留下了漏洞面将 TCP 连接固定pinning到首次解析出的 IP杜绝二次 DNS 查询从而把 DNS-rebinding 时间窗口压到零rebinding window 0作为fetch的替换实现仅使用 Node.js 内建模块http、https、dns、net。RebindBleed正是针对首次校验 DNS 解析结果与第二次实际建连使用不同结果这一攻击路径的命名ssrfGuard 的解析即固定策略正是对该攻击面的直接封堵。该模块的使用场景SSRF 防护清单在 docs/Security/Remediation/WeKan.md 中也有对应条目ssrfGuard.fetchSafe被应用于附件 URL 校验、头像本地化、Trello API 导入与出站 webhook 等场景。v8.36 还包含大量功能修复值得单独列出新增完成泳道、列表和卡片的复制与移动剩余功能该功能跨版本推进修复关联卡片linked card的泳道路由将不兼容的file-type替换为mime-type修复新建看板后添加列表弹窗误弹出、以及列表为空时的误弹出改进全局搜索相关性并新增精确字段操作符修复列表添加卡片操作与排序持久化修复版本号不可见、列表拖拽把手缺失修复读取默认文件.well-known/assetlinks.json.default报错Android App Links 相关修复已打开卡片无法关闭的问题移除列表头部顶部空白Add Rule与Back按钮颜色由黑色改为主题色以及更多 Rules 按钮样式修复修复 IFTTT 规则归档卡片后的崩溃此时归档区尚未显示该卡片并让在列表后添加只显示当前泳道内的列表修复注册新用户在注册页崩溃的问题修复在所选列表后添加的行为并为归档列表和归档泳道增加确认弹窗修复归档卡片/列表/泳道的查看、恢复与删除逻辑删除列表时不会误删该列表中先于归档列表被归档的卡片修复检查清单checklist与检查清单项的增删以及项翻译未生效的问题修复新增标签并选择颜色时颜色未打勾、选错颜色的问题修复复制卡片与移动卡片功能依赖与清理docker/build-push-action6.19.2→7.0.0、docker/metadata-action5.10.0→6.0.0、docker/login-action3.7.0→4.0.0、移除peerlibrary:blaze-components、移除raix:handlebar-helpers并用原生 Blaze helpers 替代、用原生 JavaScript 工具替代underscore、两次flatted升级、Snap Candidate 与 Helm Chart 均升级至 MongoDB 7.0.31。主线三v8.40–v8.43 卡片导出 Excel 功能落地Export Card to Excel分三个版本推进是 3 月新增功能中迭代最完整的一项v8.402026-03-21Export Card to Excel and related fixes. Part 1v8.412026-03-23Part 2同版本还包含 Meteor 3 迁移配套改动见下文v8.432026-03-27Part 3并顺带修复附件上传问题。当前仓库中该功能的实现位于 models/exportExcelCard.js。从源码可以看到REST 端点为/api/boards/:boardId/lists/:listId/cards/:cardId/exportExcel支持authToken鉴权注释明确其设计目标将单张卡片导出为DIN A4 纵向打印格式的 .xlsx 文件核心导出逻辑委托给models/server/ExporterExcelCard支持按字段ALL_FIELDS、日期格式与时区参数化。配合 package.json 中的wekanteam/exceljs ^4.7.3WeKan 维护的 exceljs 分支依赖可以确认该功能的技术栈。相关测试覆盖见 tests/exportExcelCardContainment.test.cjs 与 tests/chartExcelDateCells.test.cjs。主线四Meteor 3 迁移的配套清理v8.35 / v8.36 / v8.41v8.43 之前3 月还陆续合入了多项为 Meteor 3 铺路的代码清理均出自 Meteor 团队成员 harryadel版本清理项说明v8.35内联konecty:mongo-counter去掉第三方计数器包v8.35内联templates:tabs用原生 Blaze 实现替代v8.36移除peerlibrary:blaze-components减少 Blaze 组件依赖v8.36移除raix:handlebar-helpers改用原生 Blaze helpersv8.36移除underscore改用原生 JavaScript 工具v8.41用 communitypackages 替代useraccounts系列账号体系包迁移v8.41移除未使用的meteorhacks:aggregateMeteor 3.0 迁移清理v8.41Email.send替换为Email.sendAsync适配 Meteor 3 异步邮件 API这些清理与 docs/Upgrade/METEOR3_MIGRATION.md 中记录的双兼容策略改动须同时兼容 Meteor 2.16 与未来的 3.x 工具链一脉相承最终在 v8.43 收口为 Meteor 3.4 的正式升级。主线五v8.47 附件与头像路径迁移到 WRITABLE_PATHv8.472026-03-31将附件attachments与头像avatars的存储路径统一调整为WRITABLE_PATH/files/attachments、WRITABLE_PATH/files/avatars等。仓库中的文档印证了这一目录约定docs/Design/Autoupdate/UCS.md 说明自更新流程会在WRITABLE_PATH下维护files/attachments/与files/avatars/两个目录并重写对应路径字段遗留的 GridFS 二进制会被迁移脚本migrate-gridfs-to-fs.mjs依赖WRITABLE_PATH搬到这两个目录docs/Features/ImportExport/Attachment/AttachmentBackwardCompatibility.md 说明旧版附件下载 URL/cfs/files/attachments/:id仍可通过遗留路由继续工作保证向后兼容。主线六v8.44–v8.49 发布链路的连续修复与数据库回退3 月 30–31 日的 6 个版本集中处理发布工具链与打包问题v8.442026-03-30从 v8.43 的 FerretDB/PostgreSQL 组合回退到 MongoDB 7.x依赖升级发布脚本更新修复 globalSearchsnowsky 贡献修复 myCards 页面崩溃cristomoya 贡献并附带一个值得注意的改进——始终显示全部数据而无需迁移例如 Shared Lists 之前是 Per-Swimlanes lists、孤立的 Swimlanes/Lists/Cards 等数据现在无需执行迁移即可正确展示。v8.452026-03-31发布脚本更新7 个部分GitHub Actions 更新10 个部分dependabotSnap 修复尝试10 个部分。v8.462026-03-31发布脚本更新2 个部分docker-compose.yml从 FerretDB/PostgreSQL 改为 MongoDB。v8.472026-03-31附件与头像路径迁移见主线五。v8.482026-03-31发布脚本更新2 个部分。v8.492026-03-31修复缺失模块meteorjs/reify/lib/runtimemzch 与 kovacs-andras 贡献修复docker-compose.yml尝试修复 Snapxet7 贡献。对照仓库当前状态可以观察到两点其一package.json 中的meteorjs/reify^0.25.4依赖与 v8.49 修复的缺失模块 meteorjs/reify/lib/runtime直接相关该修复保证了 Meteor 3 工具链下 reify 运行时模块可被正确解析其二仓库根目录现提供了一整套 compose 文件覆盖不同数据库后端docker-compose.yml默认FerretDB v1 内嵌 SQLite、docker-compose-ferretdb-v1-postgresql.yml、docker-compose-ferretdb-v1-mysql.yml、docker-compose-ferretdb-v1-mariadb.yml、docker-compose-ferretdb-v1-sap-hana.yml、docker-compose-ferretdb-v2-postgresql.yml、docker-compose-mongodb-v7.yml 与 docker-compose-multitenancy.yml。v8.44/v8.46 期间MongoDB ↔ FerretDB的往返调整反映的是项目在这两个月里对默认数据库形态的持续校准。其余版本要点补全为保证记录完整将剩余版本的关键内容补全如下v8.372026-03-20修复卡片保存不生效的问题comunidadplayasdetijuana、Janfy 与 xet7 贡献。v8.382026-03-21更新CONTRIBUTING.md与SECURITY.md后者 6 个部分修复用户列表为空、部分翻译不可见、组织/团队/人员计数错误、部分按钮主题色错误、新建组织/团队应位于最左列等一系列问题。v8.392026-03-21新增**删除工作区workspace与工作区设置Workspace Settings**功能mimZD 与 xet7 贡献2 个部分修复管理面板 People 页面从任意按钮位置打开锁定弹窗的定位问题。v8.412026-03-23除 Excel 导出 Part 2 与 Meteor 3 清理外还修复了三个功能缺陷——连续新建第二张卡片时应为空标题不应带上第一张卡片的文字、列表视图中拖拽后卡片消失pull/6199KhaoulaMaleh 贡献、看板丢失成员列表或权限的问题marylinereumont、AymenHassini19、muabila 与 xet7 贡献。v8.422026-03-23修复 SSO 登录损坏的问题sbaecker、vladimirdulov 与 xet7 贡献。小结这个月 WeKan 在工程上做了什么按时间线串联2026 年 3 月的 WeKan 呈现清晰的先固安全、再迁运行时、后铺功能的节奏3 月上旬v8.35修复 IntegrationBleed 严重安全问题同时用内联实现替换两个第三方包为去依赖化起步3 月中下旬v8.36–v8.42封堵 RebindBleed 变体其防护实现沉淀在 server/lib/ssrfGuard.js完成泳道/列表/卡片复制与移动的收尾Excel 卡片导出分两批落地SSO、卡片保存、成员权限等基础功能缺陷集中修复3 月末v8.43–v8.49正式升级 Meteor 3.4 / Node.js 22.22 / MongoDB 7.x 并归档迁移文档附件与头像路径统一到WRITABLE_PATH/files/下随后一天内连发 5 个版本修复发布脚本、Docker Compose 与 Snap 打包链路。对需要升级的部署方适用前提提示如下v8.43 起运行时基线为 Meteor 3.4 Node.js 22.22 MongoDB 7.x数据库默认形态在 v8.44 与 v8.46 之间发生 MongoDB ↔ FerretDB 的切换升级时应以对应版本附带的docker-compose*.yml为准使用 Docker/Snap 部署的用户建议直接跳到 v8.49 以获得完整的打包修复。【免费下载链接】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),仅供参考