Toggle and customize Markdown task states by clicking the checkbox, with per-state colors, an optional date tag, and a drag-to-reorder click cycle.
Features
- Cycle task states with a single checkbox click, in Reading view, Live Preview, and Source mode.
- Six cyclic states plus a non-cyclic
[:] NOTE state, each with its own Markdown marker, name, and color.
- Per-state customization: name, checkbox color, text color, and strikethrough.
- Drag-and-drop reordering of the intermediate states, which also changes the click cycle.
- Optional date on any task: pick it from a calendar button or a command, shown formatted in Reading view.
- Configurable date format, language, and tag colors.
- Everything is stored as plain Markdown in the note, and no other plugin is required.
- Works with
-, *, and + task bullets, nested tasks, and blockquote task lines.
- Works on desktop and mobile.
State cycle
Clicking a task checkbox advances it to the next state:
| Marker |
State |
Default color |
[ ] |
TODO |
grey |
[!] |
PRIORITY |
green |
[>] |
PROGRESS |
amber |
[*] |
STANDBY |
purple |
[-] |
CANCELLED |
red |
[x] |
DONE |
grey |
The cycle runs TODO → PRIORITY → PROGRESS → STANDBY → CANCELLED → DONE → back to TODO.
TODO is always first and DONE is always last. The four intermediate states (PRIORITY, PROGRESS, STANDBY, CANCELLED) can be reordered by drag-and-drop in the settings, which changes the click cycle accordingly.
NOTE state (non-cyclic)
[:] NOTE stays outside the click cycle.
- Apply it by typing the
[:] marker on a task line. Clicking its checkbox leaves the state unchanged.
- Customize its name and color in the settings, under "Non-cyclic State".
Task dates
Each task can carry a date, written on the task line as the inline field [data:: YYYY-MM-DD].
- In Reading view, a small calendar button appears next to each task checkbox. Click it to open a date picker with Clear, Today, Cancel, and Apply.
- In the editor, run the command "Add or update task date" to set the date on the task at the cursor. You can assign it a hotkey (there is a shortcut button in the settings).
- In Reading view the date is displayed formatted and styled as a tag, while the raw
[data:: ...] text stays in the note.
Customization
Open Settings, go to Community plugins, and select Task States.
Task State Names and Colors
- Rename any state. The Markdown markers themselves are fixed.
- Set each state's checkbox color (the circle in front of its marker).
- Set the task text color for STANDBY, CANCELLED, and DONE.
- Toggle strikethrough on the task text for CANCELLED and DONE (shown as a wavy line in the state color).
- Drag the intermediate states by the handle to set the click cycle order.
Non-cyclic State
- Name and color for the
[:] NOTE state.
- Format: the date pattern, for example
DD MMMM, YYYY, DD/MM/YYYY, or MMMM D, YYYY.
- Locale: the language code, for example
pt-br, en, es, or fr.
Date Tag Colors
- Background color and opacity of the date tag.
- Color and opacity of the formatted date text.
Date Hotkey
- A button that opens the hotkey settings already filtered to the date command.
Restore Defaults
- Resets names, colors, text colors, strikethrough, cycle order, and all date settings.
Usage
- Open a Markdown note with task items, for example
- [ ] Task.
- Click directly on the checkbox to advance the state.
- Type
[:] for a NOTE, or use the calendar button or command to add a date.
How it works
- In Reading view, the plugin intercepts checkbox clicks, finds the matching task line in the note, and rewrites that line's marker.
- In Source mode and Live Preview, it resolves the clicked line in the editor and updates that task marker directly.
- Names, colors, text colors, strikethrough, and tag colors are applied through CSS variables set on the document, so changes take effect immediately.
- An unknown marker is normalized to
[ ] (TODO) on the next click, except the non-cyclic [:] NOTE marker, which is preserved.
Compatibility
The date is stored as the inline field [data:: YYYY-MM-DD], which the Dataview plugin can read. The formatted display in Reading view works on its own and does not require any other plugin.
Installation
From Obsidian
- Open Settings, go to Community plugins, and turn off Restricted mode.
- Browse the community plugins, search for "Task States", install it, and enable it.
Manual
- Download
main.js, manifest.json, and styles.css from the latest release.
- Copy them into
<vault>/.obsidian/plugins/task-states/.
- Reload Obsidian and enable the plugin in Settings, under Community plugins.
License
Released under the MIT License. See LICENSE.