Easton41 downloadsPlugin for manage ToDos from Sasun Huevich with some customized features for a localized workflow of all ToDos across the Obsidian vault.
An open-source Obsidian plugin that gathers selected tasks across your vault into a master list, organized by status, project, and priority.
Mark a note as a #task to automatically organize its tasks under Open and Completed. Import tasks from other notes using a configurable tag, group them by project, and check them off from the dashboard without losing their original location. This plugin was inspired by todo-list.
main.js and manifest.json directly in <your vault>/.obsidian/plugins/master-todo-list/.Add this comment anywhere in a Markdown note:
<!-- %% Master ToDo List %% -->
Tasks written directly in the dashboard do not need an import tag. Supported local checkbox formats are - [ ], * [ ], - [x], - [X], * [x], and * [X].
The plugin automatically organizes tasks under ### Open and ### Completed, with #### Project name headings inside each section. Other non-task text is kept above the generated sections. Use a dedicated dashboard note, since its task layout is managed by the plugin.
Add #dashboard as a separate, space-delimited tag on each task you want to import:
- [ ] Confirm interface mappings #dashboard
- [x] Collect requirements #dashboard
Untagged tasks in other notes are not imported. A note's folder or project property controls grouping, not whether its tasks are selected. Notes containing the dashboard activation comment are treated as dashboards rather than task sources.
Open Settings > Master ToDo Tab > Task import tag, enter your preferred tag, and click Apply. The default is #dashboard; names such as #focus and #work/tasks are also supported. A leading # is added if omitted.
The setting is saved for the vault and applies to all dashboards. Applying a change rescans tasks automatically. It does not rename tags in source notes: old-tag-only tasks stop being imported, while tasks carrying the new tag are included. Dashboard-local tasks are retained.
By default, an imported task uses its source note's immediate parent folder as its project name. For example, Projects/Client/Meetings/Notes.md groups under Meetings.
To override the folder name, add a text property named project to the source note using Obsidian's Properties panel. Alternatively, add YAML frontmatter at the very top of the note:
---
project: SIUMED - Dentrix
---
All imported tasks from that note use this project name. Notes in different folders can share a group by using the same property value. Empty or non-text project properties fall back to the folder name. Root-level notes without a project name use Unassigned.
Dashboard-local tasks use the dashboard note's own project property or immediate parent folder. Projects are sorted alphabetically within Open and Completed; empty groups are omitted, and stale generated project headings are removed when project names change.
Example dashboard:
### Open
#### SIUMED - Dentrix
- [ ] Confirm interface mappings #dashboard
### Completed
#### SIUMED - Dentrix
- [x] Collect requirements #dashboard
Within each project, tasks are sorted in this order: 🔺, ⏫, 🔼, 🔽, ⏬, then tasks without a priority marker.
Checking or unchecking an imported task updates the original checkbox in its source note. The original task stays in place, and the tagged copy moves to the appropriate status section. Source-note changes also refresh the dashboard.
Synchronization handles ✅ YYYY-MM-DD completion dates and reordered priority/tag metadata, including changes made by other plugins. Completing a task carries its completion date back to the source; reopening removes that date. Source formatting and block IDs are preserved during checkbox updates.
Source references are stored in the plugin's data, not appended to task text. Old %% ToDoListSource: ... %% annotations are removed on refresh after updating and reloading the plugin. Recovery of old open/completed duplicates is limited to uniquely tracked sources with matching completion dates. If a source cannot be identified safely, it is left unchanged.
In editing mode or Live Preview, right-click an imported task line and choose Go to original task. The plugin opens the source note and selects the task, locating moved tasks by their block ID or matching task text when possible.
The menu option applies to tracked imports, not dashboard-local tasks. If the original note is missing or the task cannot be located safely, a notice is shown instead of opening an unrelated task.