From Task Progress Bar to Task Genius: Evolving a Task Management Tool

As I mentioned in my Refactoring Plugins post, I've been working on improving my Obsidian plugins. I've now completely reimagined my popular Task Progress Bar plugin and evolved it into Task Genius. This transformation took just over twenty days of intense refining and represents not just a rebranding, but a fundamental shift in how tasks can be managed within Obsidian.

Why the Evolution?

While refactoring Task Progress Bar, I discovered several limitations that prompted a more comprehensive rethink:

  • Limited Task Status Support: The original plugin only recognized basic completed/uncompleted statuses, missing the nuanced workflow states many users needed
  • Inflexible Progress Visualization: Users wanted more control over how progress was displayed and calculated
  • Isolated Functionality: The plugin worked well for progress tracking but lacked integration with broader task management workflows
  • Rigid Implementation: The codebase wasn't modular enough to support the range of features users were requesting
  • Minimal Task Interactivity: Users wanted more ways to interact with and modify tasks directly

The evolution to Task Genius addresses these limitations while maintaining backward compatibility with the original plugin's core functionality.

Key Enhancements in Task Genius

Comprehensive Task Status Management

If the original Task Progress Bar was based on whether tasks were completed or not, Task Genius is now based on task statuses. It supports in-progress, planned, abandoned, and custom states, with theme support for statuses that's compatible with most features of the Tasks plugin.

The most significant evolution is the move from simple task completion to a rich task status ecosystem:

  • Customizable Task Statuses: Beyond just completed/uncompleted, Task Genius now supports in-progress, planned, abandoned, and custom states
  • Status Theming Support: Pre-defined status collections that align with popular task management systems. You can select status markers from themes like Minimal, Border, and others through a dropdown interface
  • Visual Status Indicators: Custom task marks that visually represent different statuses
    • For example, supporting TODO, IN-PROGRESS, DONE as task markers instead of the original checkbox
  • Task Status Switcher: Cycle through task states with a single click, such as switching from TODO to IN-PROGRESS to DONE
    • Fully compatible with all Obsidian commands
    • Support for child task status changes triggering parent task status changes
    • Keyboard shortcut support for task status switching

Below I'll showcase the Task Genius progress bar and task status switcher components:

Task Status Switching Demo

Task Genius supports multiple task statuses, not just completed/uncompleted. Click on the task below to cycle through different states:

Loading TaskItem...

Here are examples of tasks with different initial states:

Loading TaskItem...
Loading TaskItem...
Loading TaskItem...
Loading TaskItem...

Task Progress Visualization Demo

Task Genius can display progress based on task statuses, including hierarchical parent-child task relationships:

In Obsidian, the progress bar follows the parent task, not the entire task module

Loading TaskGenius demo...

Advanced Progress Tracking

For progress visualization, I've made improvements in several areas:

  • Conditional Progress Bars: Show or hide progress bars based on tags, folders, or metadata
  • Customizable Progress Text: Define custom text for different percentage ranges
  • Heading-Level Progress: Track progress at both the task and heading levels
  • Hierarchical Task Relationships: Parent tasks can automatically update based on child task completion
  • Progress Bar Themes: Different task statuses use different color variables in the progress bar. For example, TODO tasks use the var(--color-todo) color variable
  • Style Settings Support: You can use the Style Settings plugin for fine-grained control over progress bar styling

Integrated Task Enhancement Tools

Beyond progress visualization, Task Genius now supports:

  • Task Status Switcher: Cycle through task states with a single click
  • Priority Management: Add and modify task priorities with keyboard shortcuts
  • Date Management: More conveniently manage dates for tasks, such as 2025-03-20
  • Smart Task Cycling: Configure how new tasks behave when first created

Technical Implementation Advances

The architectural improvements are just as significant as the feature enhancements:

  1. Modularized Codebase: Each feature exists in its own module for better maintainability and testing
  2. Improved Type Safety: Refactoring, refactoring, and more refactoring
  3. Performance Optimizations: Smarter rendering and update cycles to prevent crashes with complex task structures
  4. Enhanced Error Handling: Maximum compatibility when unexpected content is encountered

User-Driven Development

The transformation from Task Progress Bar to Task Genius was largely driven by user feedback and requests, but also partly self-driven:

  • Users wanted more granular control over which tasks were counted in progress calculations
  • Many requested ways to interact with tasks beyond just seeing progress
    • For example, automatically completing parent tasks

These needs and ideas prompted me to rethink how Task Progress Bar was implemented, eventually evolving into Task Genius.

Afterword

The journey from Task Progress Bar to Task Genius is also a key part of my recent refactoring work. I use Task Genius as a core GTD tool, combined with other plugins like Dataview, to implement a complete GTD workflow.

For current article and plugin updates, I rely on the Task Genius plugin for tracking. I hope you'll enjoy this new Task Genius plugin too! See you next time.