Task Planner

unlisted

by Selfish

Manage tasks with drag-and-drop planning, Today focus, backlog, overdue tracking, and weekly time horizons.

2 starsUpdated 4mo ago
View on GitHub

Task Planner

Obsidian Plugin GitHub release CI codecov License: GPL v2

A professional task management plugin for Obsidian that helps you track tasks across your vault, organize your day with intelligent planning, and manage your workload effectively.

Note: This plugin is a fork of Proletarian Wizard by cfe84. See LICENSE for attribution.

Features

Planning Board

  • Kanban-style planning view with time-based horizons
  • Today section with Todo, In Progress, and Done columns
  • Future planning with configurable day, week, month, quarter, and year horizons
  • Drag and drop tasks between time periods
  • Custom horizons filtered by tag or specific dates
  • WIP (Work In Progress) limits to manage daily workload

Task Management

  • Track tasks from any markdown file in your vault
  • Support for multiple task statuses: Todo, In Progress, Complete, Canceled, Delegated
  • Priority levels: Critical, High, Medium, Low, Lowest
  • Due date tracking with flexible attribute syntax
  • Pin important tasks to keep them visible
  • Subtask support with collapsible groups

Dataview-Compatible Syntax

Task attributes use the Dataview inline field format:

- [ ] Buy groceries [due:: 2025-01-15] [priority:: high]

This syntax is compatible with the popular Dataview plugin and is the Obsidian community standard.

Smart Attribute Conversion

Type shorthand attributes and Task Planner automatically converts them to Dataview format when you move to the next line:

  • @today[due:: 2025-01-17]
  • @tomorrow[due:: 2025-01-18]
  • @high[priority:: high]

This auto-conversion can be disabled in settings if you prefer manual control.

Installation

From Obsidian Community Plugins

  1. Open Obsidian Settings
  2. Navigate to Community Plugins
  3. Search for "Task Planner"
  4. Click Install, then Enable

Manual Installation

  1. Download the latest release from GitHub
  2. Extract to your vault's .obsidian/plugins/task-planner/ directory
  3. Enable the plugin in Obsidian Settings > Community Plugins

Usage

Creating Tasks

Add tasks anywhere in your markdown files using standard checkbox syntax:

- [ ] Unchecked task
- [x] Completed task
- [>] In progress
- [-] Canceled
- [d] Delegated
- [!] Attention required

Adding Attributes

Add due dates, priorities, and other metadata:

- [ ] Review quarterly report [due:: 2025-03-31] [priority:: high]
- [ ] Schedule team meeting [due:: 2025-01-20] [selected:: true]

Using Hashtags

Use standard hashtags to categorize tasks. Custom horizons can filter by these tags:

- [ ] Buy groceries #shopping #household
- [ ] Review PR #work #urgent

Commands

  • Open planning: Opens the planning board view
  • Open todo report: Opens the completed tasks report
  • Mark todo as checked/unchecked: Toggle task completion
  • Mark todo as ongoing/unchecked: Toggle in-progress status
  • Complete line attributes: Expand shorthand dates and priorities

Settings

Configure Task Planner in Settings > Task Planner:

  • Planning Board: Configure visible time horizons (days, weeks, months, quarters)
  • Custom Horizons: Create tag-filtered or date-specific columns
  • Task Attributes: Customize attribute names (due, completed, selected)
  • Filtering: Ignore specific folders or archived content

Development

Prerequisites

  • Node.js 22+
  • npm

Quick Start

# Install dependencies
npm install

# Development build with watch mode
npm run dev

# Production build
npm run build

# Run all validation (lint, types, format, tests)
npm run validate

Available Scripts

ScriptDescription
npm run devDevelopment build with watch mode
npm run buildProduction build
npm run testRun tests
npm run test:watchRun tests in watch mode
npm run test:coverageRun tests with coverage report
npm run lintRun ESLint
npm run lint:fixRun ESLint with auto-fix
npm run formatFormat code with Prettier
npm run format:checkCheck code formatting
npm run typecheckTypeScript type checking
npm run validateRun all checks

Project Structure

src/
  commands/       # Editor commands
  core/           # Core business logic
  events/         # Event handling
  lib/            # Shared utilities
  settings/       # Plugin settings
  types/          # TypeScript types
  ui/             # React components
  views/          # Obsidian views
__tests__/        # Test files
  __mocks__/      # Mock implementations

Testing

We use Jest for testing with comprehensive Obsidian API mocks:

# Run tests
npm run test

# Run tests in watch mode
npm run test:watch

# Generate coverage report
npm run test:coverage

Code Quality

  • Prettier for code formatting
  • ESLint with React and TypeScript plugins
  • TypeScript with gradual strictness

Contributing

Contributions are welcome! Please read our Contributing Guidelines before submitting a Pull Request.

We use Conventional Commits for commit messages:

feat(planning): add drag-and-drop reordering
fix(parser): handle empty attributes correctly
docs: update installation instructions

Quick start:

  1. Fork the repository
  2. Create your feature branch (git checkout -b feature/amazing-feature)
  3. Make your changes and run npm run validate
  4. Commit using conventional commits
  5. Push and open a Pull Request

License

This project is licensed under the GNU General Public License v2.0 - see the LICENSE file for details.

Attribution

This software is based on Proletarian Wizard by cfe84 and contributors, licensed under GPL v2.0.

Support

  • Report issues on GitHub Issues
  • Join the discussion in the Obsidian community forums

For plugin developers

Search results and similarity scores are powered by semantic analysis of your plugin's README. If your plugin isn't appearing for searches you'd expect, try updating your README to clearly describe your plugin's purpose, features, and use cases.