ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

Wekan 2015 年度版本演进史:从 v0.7 到 v0.10 的看板功能奠基与技术路线选择

Wekan 2015 年度版本演进史:从 v0.7 到 v0.10 的看板功能奠基与技术路线选择 Wekan 2015 年度版本演进史从 v0.7 到 v0.10 的看板功能奠基与技术路线选择【免费下载链接】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/wekanWekan 是一款基于 Meteor 构建的开源看板kanban应用其 2015 年发布的 v0.7 至 v0.10.1 五个版本奠定了今天看板产品形态的基石卡片标签/成员/归档/星标、Markdown 与 emoji、多选批量操作、头像体系、Trello 导入、拖拽、子路径部署与官方 Docker 镜像分发。本文以 old-CHANGELOG/2015.md 发布记录为主线结合当前仓库的源码与测试逐版本还原这些能力从玩具项目走向可用工具的过程并对照今天仓库中的实现说明它们如何演化为现在的产品功能。2015 年发布概览与本文史料说明本文件是 CHANGELOG.md 的 2015 年历史分卷。仓库在迁移时见 old-CHANGELOG/2015.md 开头说明将 CHANGELOG 中 2015 年的发布记录原样搬移到本文件以保证主 CHANGELOG 文件体积足够小、便于打开并明确声明Nothing here has been changed: a release section is a record。也就是说本文以下逐条功能描述均为当时发布时的原始记录可视为历史事实。2015 年共发布 5 个版本按月份分布如下2015Releases091v0.9122v0.10、v0.10.1另需说明v0.8 与 v0.7.1 在发布表中未单独计月v0.8 与 v0.7.1 依序位于 v0.9 与 v0.10 之间记录中未标注精确日期。本文按时间线自 v0.7 起逐版本展开。v0.7 / v0.7.1从玩具项目到有用工具的转型起点v0.7看板核心交互与编辑器能力的首次集中落地v0.7 被作者自评为从玩具项目向有用工具过渡的开始This release starts the transition from a toy project to something useful其贡献分两类安全与性能改进以及一批至今仍是看板核心的功能。性能与体验修复打开卡片的速度优化此前每次打开卡片都会重新生成整个 DOM而实际上只有弹层popover是新的v0.7 改为仅重建弹层显著降低打开卡片的延迟。新功能清单v0.7为卡片添加/移除标签Add and remove labels to cards为卡片分配/取消分配成员Assign and unassign members to cards归档卡片Archive cards当时尚不支持恢复看板星标Board stars评论与卡片描述支持 Markdown 与 emoji文本编辑器中的 emoji 自动补全部分键盘快捷键例如CtrlEnter提交多行输入框。此外v0.7 首次引入了对 Sandstorm 平台的基础支持并从该版本起分发spkSandstorm PacKage安装包。Sandstorm 是彼时主推的以应用为粒度的自托管平台Wekan 对其的早期支持为后续 v0.9、v0.10 中持续深化的 Sandstorm 集成头像、grain 标题/URL 暴露等埋下伏笔。v0.7.1三个 Bug 修复v0.7.1 是紧随其后的补丁版本修复了三个问题服务端卡片排序意外丢失Unexpected lost of the card sorting on the server side创建看板时的 Bug当看板为空时自动聚焦新建列表的表单。这三项修复也印证了 v0.7 大规模功能上线后稳定性收敛的节奏先铺功能再修边界。源码佐证这些 2015 年的功能今天长什么样虽然代码库历经重写v0.9 即是一次大重写但标签、成员、归档、星标等概念在今天的仓库中依然是一等公民卡片/看板模型见 models/cards.js、models/boards.js标签labels、成员members、归档archived等字段均由 models/boards.js 与 models/cards.js 的 SimpleSchema 定义并持久化。看板星标board.stars相关逻辑分布在客户端 client/components/sidebar/sidebar.js 与 client/components/boards/boardsList.js收藏/星标看板入口中。键盘快捷键v0.7 的CtrlEnter后来扩展为完整的快捷键体系。今天的客户端存在 client/lib/keyboard.js 统一处理快捷键注册与分发帮助弹层定义于 client/components/main/keyboardShortcuts.jade——这正是 v0.9 中按?查看快捷键列表见下文的实体载体。Markdown 渲染仓库中的 packages/markdown 包承载 Markdown 解析与渲染卡片描述与评论均复用该能力。v0.8附件封面、成员提及与首批本地化v0.8 继续夯实看板软件的基础特性基础卡片附件若附件是图片则生成缩略图并可作为卡片的封面cover在看板总览视图中展示成员提及与自动补全在卡片描述与评论中通过用户名提及并自动补全当时尚没有通知系统作者坦承这让该功能价值打了折扣过滤视图当时的过滤维度是标签与已分配成员两类看板级标签的创建与删除此前标签是固定列表v0.8 起允许在看板层面自由增删看板背景颜色自定义。同时v0.8 是第一个引入用户界面本地化localization的版本。从源码结构看这一决定直接影响到了今天的多语言体系仓库 imports/i18n 下存放着 246 个*.json翻译文件与 TAPi18n 封装imports/i18n翻译源文件为 imports/i18n/data/en.i18n.json其余语言通过 Transifex 协作平台维护。测试目录中亦有大量逐语言翻译完整性测试如allTranslationCompleteness.test.cjs、auditedTranslationReviews.test.cjs等位于 tests 目录可见本地化从 2015 年起便是产品的长期主线。v0.9重写、账户体系与官方分发渠道的建立大规模重写与全新的用户界面v0.9 是 2015 年的里程碑This release is a large re-write of the previous code base标志着新用户界面的开始并持续改进整体性能与安全。账户系统从不可用到完整闭环v0.9 之前密码重置、改密、邮箱确认此前皆不可能all of which were previously impossible。v0.9 引入全新用户账户系统包括忘记密码重置修改密码启用邮箱确认。从当前仓库看账户与安全体系早已远超 2015 年的规模登录、注册与密码重置的基础逻辑在 server/authentication.js 与 server/accounts-common.js锁定期与登录策略由 packages/wekan-accounts-lockout 实现密码重置邮件中的链接由服务端依据ROOT_URL构建见 server/00checkStartup.js 中的启动期校验若未设置 ROOT_URL 会提示邀请与密码重置邮件链接不可用。v0.9时代重置密码/改密/邮箱确认这三板斧正是这套体系的起点。头像系统上传、Gravatar 与首字母v0.9 提供头像自定义支持上传图片、从 Gravatar 选择或使用用户姓名首字母在 Sandstorm 平台上则使用 Sandstorm 暴露的头像。今天的实现可追溯至 models/avatars.js服务端Meteor.avatars集合与头像二进制存储与客户端 client/components/users/userAvatar.js含initials()计算首字母头像、setAvatarUrl设置 Gravatar 链接等逻辑。Sandstorm 分支由 packages/wekan-accounts-sandstorm 承载。卡片多选与批量操作v0.9 引入卡片多选以支持批量动作例如移动选区内的全部卡片或为它们统一附加标签/成员。自动草稿保存与服务端同步v0.9 引入与服务端同步的自动草稿保存。今天的实现载体是 models/unsavedEdits.js客户端通过UnsavedEditsAPI 将未提交的字段草稿fieldName/docId/value/userId持久化到unsaved-edits集合字段级 Schema 中的autoValue自动写入createdAt/modifiedAt。这与测试cardDescriptionDraft.test.cjs、commentDraft.test.cjs位于 tests覆盖的描述草稿评论草稿场景一一对应说明该能力在今天的仓库中依然活跃。键盘导航与?快捷键清单v0.9 支持键盘导航按?可查看可用快捷键列表。对应的现代实现即上文提到的 client/lib/keyboard.js 与 client/components/main/keyboardShortcuts.jade。归档内容的恢复v0.9 支持恢复已归档的看板、列表与卡片v0.7 只能归档不能恢复v0.9 补齐闭环。分发渠道的正式建立自 v0.9 起Wekan 开始在 GitHub Release 页与 DockerHubmquandalle/wekan分发官方 Docker 镜像并配置了 Heroku 一键安装同时深化了与 Sandstorm 内置分享模型的集成。这一定位延续至今仓库根目录仍维护着多套部署编排文件例如 docker-compose.yml、docker-compose-mongodb-v7.yml、docker-compose-ferretdb-v1-postgresql.yml 等覆盖 MongoDB 与 FerretDB 各类后端以及 Dockerfile、start-wekan.sh、stop-wekan.sh、status-wekan.sh 等运行脚本。测试套件中dockerNoVariantImages.test.cjs、dockerComposeBackends.test.cjstests 目录持续守护镜像与编排配置的正确性。版本新增语言v0.9 新增中文、芬兰语、西班牙语、韩语与俄语支持。文中特别感谢了ePirat、nata-goddanti、ocdtrekkie等贡献者以及为 Wekan 设计图标icons的neynah。v0.10Trello 导入、邮件邀请与移动端优化v0.102015-12-22是 2015 年功能最密集的版本Trello 看板导入包括卡片历史、已分配成员、标签、评论与附件邮件邀请通过邮箱地址邀请新用户加入看板迷你卡片编辑器自动补全以开头触发看板成员自动补全以#开头触发标签自动补全小屏幕 UI 改进让 Wekan 可在移动 Web 上使用初始渲染加速将数据随初始 HTTP 响应下发而不是等待 DDP 连接打开从而加速首屏渲染图片附件粘贴支持Sandstorm 集成向 Sandstorm shell 暴露 Wekan grain 的标题与 URL子路径部署支持将 Wekan 部署在域名下的子路径中。新增语言阿拉伯语、加泰罗尼亚语、意大利语与俄语。感谢AlexanderS、fisle、floatinghotpot、FuzzyWuzzie、mnutt、ndarilek、SirCmpwn、xavierpriour等贡献者。源码佐证Trello 导入从单板 JSON 到后台作业化Trello 导入在今天的仓库中已扩展为完整的功能族直接印证并超越了 v0.10 的导入范围卡片历史、成员、标签、评论、附件全部包含服务端导入实现核心类TrelloCreator位于 models/trelloCreator.js。其构造函数维护 Trello ID 到 Wekan 实体 ID 的映射表labels、lists、cards、attachments、checklists、comments、members并统一使用_now()提供的时间戳写入所有实体便于按导入批次整体追溯_user()则负责将 Trello 成员映射为 Wekan 用户。文件中的checkActions/checkBoard/checkCards/checkLabels/checkLists/checkChecklists等check校验方法对导入数据做严格的结构校验。客户端导入 UI 与流程见 client/components/import/import.jsTrello.json单板与.zip包导入、成员映射 UI client/components/import/trelloMembersMapper.js、Trello 实时 API 导入入口importTrelloApi与 client/features/importing.js导入组件装配。后台作业化当前仓库将大规模 Trello 工作区导入多看板附件设计为服务端持久化作业见 models/trelloImportJobs.js作业文档保存队列、进度、按看板的结果与错误日志用户可离开页面后返回继续查看进度、在 API 错误后恢复或取消并删除已导入看板出于安全考虑Trello API key/token 永不写入该文档仅在服务端内存中保留服务重启后续传需客户端重新提供。源码佐证子路径部署与 ROOT_URL支持在域名子路径下部署这一能力今天由服务端对ROOT_URL的全面处理保障启动期校验 server/00checkStartup.js若未设置ROOT_URL明确提示邀请邮件与密码重置邮件中的链接将无法正确构建通用附件服务器 server/routes/universalFileServer.js其中注释明确说明使用绝对 URL 进行重定向以保证在带路径前缀的ROOT_URLsub-URL 部署下附件依然可访问server/routes/cardOgTags.js 也基于ROOT_URL构造卡片 Open Graph 标签文件 URL 迁移 server/migrations/fixAllFileUrls.js确保所有附件与头像 URL 通用化与ROOT_URL/PORT无关多租户支持 server/lib/tenantResolver.js在按域名分发租户时为各租户注入其自身的ROOT_URL到客户端运行时配置WebApp.addRuntimeConfigHook场景。v0.10.12015-12-30Sandstorm 补丁v0.10.1 是 2015 年收官补丁修复 Sandstorm 平台上的两个问题拖拽失效Drag and drop was broken头像不工作Avatars werent working。Sandstorm 分支相关实现可对照 packages/wekan-accounts-sandstorm。2015 年技术路线回望五个版本构建的地基把 2015 年五个版本放在一起看可以清晰识别出今天 Wekan 的几条主线在当年即已确立看板核心模型标签、成员、归档、星标、附件、过滤v0.7/v0.8——这些概念至今仍是 models/boards.js、models/cards.js 的核心字段编辑与协作体验Markdown/emoji、提及自动补全、自动草稿、键盘快捷键v0.7/v0.8/v0.9账户与身份密码重置/改密/邮箱确认、头像体系上传/Gravatar/首字母v0.9数据可迁移性Trello 导入v0.10并在此后发展为包含.zip批量、成员映射、后台作业的完整导入族分发与部署Sandstormspkv0.7、官方 Docker 镜像与 Heroku 一键安装v0.9、子路径部署v0.10——对应今天仓库中的 Dockerfile、docker-compose.yml 与多套 FerretDB 编排文件本地化从 v0.8 起步到 2015 年底已覆盖中文、法、德、日、西、意、俄、韩、阿拉伯、加泰罗尼亚等语言imports/i18n 中 246 个翻译文件即其长期累积的成果。值得强调的是v0.9 被作者称为对旧代码库的large re-writev0.8/v0.9/v0.10 又层层叠加了账户、多选、草稿、导入等复杂机制2015 年末仓库已经形成的重写—稳定—再扩展节奏与 old-CHANGELOG/2015.md 记录的发布间隔09 月、12 月各 1 次另有 v0.8/v0.7.1 穿插完全吻合。对于想从源码理解 Wekan 演进史的读者建议以本文为索引依次阅读 models/cards.js、models/trelloCreator.js、models/unsavedEdits.js、imports/i18n 与 server/00checkStartup.js即可在今天的代码中找到 2015 年每个功能点的直接后代。【免费下载链接】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),仅供参考
返回列表