TODOseq plugin for Obsidian

TODOseq (to-do-seek) is a task management plugin for Obsidian that uses keyword based task declarations in the Obsidian markdown pages, similar to how tasks are declared in Logseq.
This plugin is currently awaiting review and approval for publication in the Obsidian Plugins directory.
For early access, download the latest release filesmain.js
,manifest.json
,styles.css
to<obsidian_vault_path>/.obsidian/plugins/todoseq
and restart Obsidian.
The plugin scans your Obsidian Vault for tasks declared using task keywords and collects them into a single task list view.
# Example Tasks.md
- TODO this is a task
- TODO this is another task
- DOING this is an active task
- DONE this is a completed task

Clicking on the task description will navigate to the page and location where the task is declared.
Clicking on the task keyword will cycle to the next state based on the the following lifecycle sequences
- TODO → DOING → DONE
- LATER → NOW → DONE
- WAIT/WAITING → IN-PROGRESS → DONE
- CANCELED/CANCELLED/DONE → TODO
All other task keywords, including custom task keywords will transition to DONE when clicked.
Clicking on the task checkbox will move the task to DONE regardless of the current state.

To change a task to a specific state right click (long press on mobile) on the task keyword.

Changes made to the task state in the TODOseq task list view are automatically updated on the source page. The task list view will also automatically update as pages are updated to maintain the correct state, content, and location reference of each task.
Logseq task compatibility
Task types
TODOseq natively supports the following task keywords used by Logseq.
TODO
DOING
NOW
LATER
WAIT/WAITING
CANCELED/CANCELLED
IN-PROGRESS
DONE
When coming from Logseq all entries in a markdown file are managed as blocks which are bullets in the markdown file, so your task structure may look something like:
- TODO this is a top level task
- TODO this is a task in a child block
- Some other text that is not a task
- TODO another task in a sub block
Task due dates
Logseq style Scheduled and Deadline dates declared on subsequent lines are also supported.
- TODO this is a task with scheduled and deadline dates
SCHEDULED: <2025-09-01 Mon>
DEADLINE: <2025-09-30 Tue>

Task priority
The #A, #B, #C priority tags are automatically recognized by TODOseq
- TODO [#A] high priority task
- TODO [#B] medium priority task
- TODO [#C] low priority task

Extensions to the Logseq task style
Task declarations
TODOseq supports additional task declaration locations. A starting bullet is not required and task keywords are recognized at any indent level or spaces or tabs. Scheduled and Deadline dates are recognized when at the same indent level as the task declaration.
TODO task without bullet
TODO indented task without bullet
SCHEDULED: <2025-07-01 Tue>
- TODO task at indented bullet
SCHEDULED: <2025-07-01>
- [ ] TODO task with a markdown checkbox
Tasks on lines with the checkbox - [ ]
prefix have special handling so the checkbox is updated when the task state is updated. Only checkboxes that are immediately followed by one of the task keywords are recognized by TODOseq, all other checkboxes are ignored.
Additional keywords
You can add you own additional keywords in the settings that will be recognized as tasks, this is can be really used to identify specific types of task. All keywords must be in upper case. e.g.
FIXME, HACK, SOMETIME, NEVER, DELEGATED, MUST-DO