从任务进度条到任务管理:一个任务管理工具的进化
前段时间我有提及过我正在重构 Obsidian 插件,现在我已经完全重新构想且重构了我的广受欢迎的 Task Progress Bar(任务进度条) 插件,并将其在短短二十来天,打磨且发展成为 Task Genius。这次更名并不是单纯名称上的变更,而是Obsidian内任务管理方式的根本性转变。
为什么要重构?
在重构 Task Progress Bar 时,我发现了几个方面的限制,与此同时,某几个 issue 配合激发了我进行更全面重新思考:
- 有限的任务状态支持:原始插件只识别基本的完成/未完成状态,无法满足许多用户需要的细致工作流状态
- 不灵活的进度可视化:用户希望对进度的显示和计算方式有更多控制
- 功能孤立:该插件在进度跟踪方面表现良好,但缺乏与更广泛任务管理工作流的集成
- 僵化实现:代码库不够模块化,无法支持用户请求的各种功能
- 最小的任务交互性:用户希望有更多方式直接与任务交互和修改
Task Genius 的更新解决了这些限制,同时保持了与原始插件核心功能的向后兼容性。
Task Genius 的主要改进
远比之前全面的任务状态管理
如果说原先的 Task Progress Bar 是基于任务的完成与否,那么 Task Genius 则是基于任务的状态。它支持进行中、计划中、放弃和自定义状态,并且支持状态主题支持,且适配了 Tasks 插件的大部份功能。
这次更新中,给 Task Progress Bar 带来了最显著的进化:从简单的任务完成的进度显示转向更全面的任务状态管理:
- 可自定义的任务状态:除了完成/未完成外,Task Genius现在支持进行中、计划中、放弃和自定义状态
- 状态主题支持:预定义的状态集合,与流行的任务管理系统保持一致,你可以通过下拉框直接选择来自 Minimal、Border 等主题的支持的对应的状态标记
- 视觉状态指示器:直观展示不同状态的自定义任务标记
- 例如支持以
TODO
,IN-PROGRESS
,DONE
等作为任务标记,而不是原始的方框
- 例如支持以
- 任务状态切换器:通过单击循环切换任务状态,例如从
TODO
切换到IN-PROGRESS
,再切换到DONE
- 完全兼容 Obsidian 的所有命令
- 支持子任务的状态变更触发父任务的状态变更
- 支持任务状态的键盘快捷键切换
以下我会简单用组件来直接展示 Task Genius 的进度条,以及任务状态切换器:
任务状态切换器演示
Task Genius 支持多种任务状态,而不仅仅是完成/未完成。点击下面的任务来切换不同的状态:
以下是不同初始状态的任务示例:
任务进度可视化演示
Task Genius 可以根据任务状态显示进度,包括层次化的父子任务关系:
在 Obsidian 中进度条会跟随在父任务的右侧,而不是整个任务模块的顶部
完全可配置的进度可视化
进度可视化的重构,我主要做了以下几个方面的改进:
- 条件进度条:基于标签、文件夹或元数据显示或隐藏进度条
- 可自定义的进度文本:为不同的百分比范围定义自定义文本
- 标题级进度:同时跟踪任务和标题级别的进度
- 层次任务关系:父任务可以根据子任务完成情况自动更新
- 进度条主题:不同状态的任务会使用不同的颜色变量来占据进度条,例如
TODO
任务会使用var(--color-todo)
颜色变量来占据进度条 - 支持 Style Settings:你可以通过 Style Settings 插件来更细粒度的控制进度条的样式
集成的任务增强工具
Task Genius 除了支持上述的进度可视化外,还支持以下功能:
- 任务状态切换器:通过单击循环切换任务状态
- 优先级管理:使用键盘快捷键添加和修改任务优先级
- 日期管理:为任务更方便地管理日期,例如
2025-03-20
等 - 智能任务循环:配置新任务首次创建时的行为
完全的技术重构
- 模块化代码库:每个功能存在于自己的模块中,以便更好地维护和测试
- 改进的类型安全:重构,重构,还是重构
- 性能优化:更智能的渲染和更新周期,避免在复杂任务结构下崩溃
- 增强的错误处理:当遇到意外内容时,会尽可能兼容
用户和自我驱动的开发
从 Task Progress Bar 到 Task Genius 的转变很大程度上是由用户反馈和请求驱动的,但是也有一部分是自我驱动的:
- 用户希望对进度计算中计入哪些任务有更精细的控制
- 一些人要求除了查看进度外还能与任务交互的方式
- 例如自动完成父任务
这些需求和想法,促使我重新思考 Task Progress Bar 的实现方式,并最终演化成了 Task Genius。
后话
从 Task Progress Bar 到 Task Genius 的旅程,其实也是我近期的重构工作中的重要一环,我使用 Task Genius 作为核心的 GTD 工具,并结合了其他插件,例如 Dataview 等,来实施了完整的 GTD 工作流。
当前的文章、插件的更新,我都依赖于 Task Genius 插件来实现追踪。希望你也能喜欢这个新的 Task Genius 插件~再会。