Tasks
A task is a bullet with a checkbox, written as a markdown checkbox in whatever document it belongs to: a journal entry, a project page, a meeting note. There is no separate task store. Priority, dates and states are carried by short tags after the checkbox, and the Tasks view in the right sidebar lists every task in the graph, filtered and grouped, and ticks one off in the document it lives in.
[ ] #P1 #D-2026-07-01 Ship the release [Acme]
[ ] #W Chase [Sidney Jones] for the API key
x #C Dropped the idea
Write a task
A task is a - bullet whose text starts with [ ] (open) or [x] (done). It can sit at any
depth of an outline, and Enter at the end of a task starts another one. A - [ ] inside a
code block or the frontmatter is text, not a task.
Three ways to make one:
- Type
- [ ]at the start of a line. - Press Ctrl+Shift+Enter (Cmd+Shift+Enter on a Mac). On a bullet it cycles the state: plain bullet, open task, done task, plain bullet. On a prose line it turns the line into a task, keeping its indentation. It is refused on a heading, in a code block and in the frontmatter.
- On a phone, tap Toggle task on the command bar. It is greyed where the shortcut would be refused.
The checkbox is drawn as a box. Click or tap it to tick the task and again to untick it.
Ticking changes the [ ] to [x] and nothing else on the line: tags, spacing and text stay as
they were, and no completion date is written unless you add one.
Task tags
Tags are recognised only in the run of tokens immediately after the checkbox. A # anywhere
else on the line is plain text, so - [ ] #P1 triage the #P2 backlog has one tag.
| Tag | Meaning |
|---|---|
#P1 #P2 #P3 |
Priority, highest first. There is no level below #P3 |
#W |
Waiting on someone or something |
#D |
Doing |
#C |
Cancelled. A cancelled task is written ticked, - [x] #C …, so it stays out of the open list |
#D-YYYY-MM-DD |
Due date |
#S-YYYY-MM-DD |
Scheduled date |
#C-YYYY-MM-DD |
Completion date |
A bare letter is a state and a dated letter is a date; that is all that tells #D (doing) from
#D-2026-07-01 (due). Tags are case-sensitive: #p1 is text. A date is checked for shape only,
so #D-2026-13-45 is read as a due date and left for you to notice. Where the same kind of tag
appears twice, the first wins. Tags render as plain text in the editor; on a published site they
become badges.
The tag helper
On a task line, type # and a menu opens with the nine tags: Priority 1, Priority 2,
Priority 3, Waiting, Doing, Cancelled, Due date…, Scheduled date… and
Completion date…. Keep typing to filter it (#crit reaches Priority 1, #dead reaches the
due date), move with the arrow keys, and press Enter or Tab to choose. Escape
closes it. The # can be typed anywhere on the line, at the end of the text included: the tag
is written into the run after the checkbox and the # you typed is removed.
Choosing a state that is already set removes it, and choosing a different priority replaces the current one. Choosing a date opens a month calendar: arrow keys move by day and week, Page Up and Page Down by month, Enter picks the day. Days that already have a journal entry are shown in bold. Picking a day writes the whole dated tag, replacing an existing date of the same kind.
Whenever the helper writes, it rewrites the run in a fixed order (priority, waiting, doing,
cancelled, scheduled, due, completion) with single spaces, so hand-typed tags may be reordered.
The menu opens only on a task line and only on a # that starts a word: C# and issue#42
leave it closed.
The Tasks view
Tasks is a tab of the right sidebar, beside Backlinks. Open it with Alt+T, with the Tasks button on the toolbar (on a phone, the button in the top bar), or by selecting the tab. If the tab has been closed, Alt+T or the button brings it back.
The view lists every task in the graph, journals and pages alike, and does not follow the document you are reading: its filter stays where you set it, so opening a task and coming back finds the list as you left it.
Filter by name
The Any name… box narrows the list to one concept. Type a fragment and choose from the suggestions, which cover pages, journal days, aliases and names that are linked but have no page yet, each labelled with its kind. Matching is the same as Quick Find's: names only, any part of the name, case-insensitive, with a scoped name's brackets read as spaces. Choosing a name never opens anything.
A task answers to a name when:
- the task's own line links it,
[[Acme]]; - any bullet above the task in the outline links it, at any depth;
- a heading the task sits under links it, so
# Work on [[Acme]]claims every task in that section,- [ ] Buy milkincluded; - the task is on that concept's own page, without any link.
Aliases are pooled and case does not matter, as with backlinks. The rule falls out of structure, so moving a task under another heading re-files it without editing its text. A task can answer to many names at once; the line under each row shows the chain of document and ancestors that matched.
Use
Filter by state, priority and date
- Open, Doing, Waiting, Done, Cancelled chips: a task is in exactly one state. Waiting outranks doing when a task carries both. The default shows everything unfinished: open, doing and waiting.
- P1, P2, P3, None chips, all on by default. None is a real bucket: tasks with no priority tag.
- Filter by due date: Any date, Overdue (due before today), Due today, or Next 7 days (today to a week ahead). A task with no due date never matches a window.
Turning every chip in a row off shows a message asking you to turn one back on. Reset filters appears in the header whenever the filter differs from the default and puts everything back, the name box included.
Group and order
Group tasks by offers three orders:
| Grouping | Groups | Order within a group |
|---|---|---|
| By priority (default) | P1, P2, P3, No priority | Due date, undated last |
| By document | One per document, by name; a journal by its date | Due date, then priority |
| By due date | Overdue, Today, then each date, then No due date |
Group headings stay pinned while you scroll. There is no grouping by concept, because a task can answer to several and would repeat.
What a row shows
Each row has a checkbox, the task's text with the tags stripped, badges for its priority, state and dates, and beneath it the chain of document and ancestors that made it match. Wikilinks in the text open that page without changing the filter. A done task is struck through.
The header counts the matches. The list shows 100 at a time, with Show more while more remain.
Act from the view
- Tick the checkbox and the change is written into the source document, whether or not that document is open. On a local graph the file on disk changes. The row stays where it is, ticked and struck through, until you change the filter, so the next row does not jump under the pointer. If the task has moved since it was indexed, nothing is written; a notice says so and the document opens at the task instead.
- Click the text to open the document at that line, with the cursor at the start of it.
What the view remembers
The filter, chips, date window and grouping are remembered per graph on this device, and come back after a reload. They never sync. Reset workspace forgets them.
Tasks and protection
A task inside a protected document is never indexed, so it does not appear in the Tasks view even while the document is unlocked (Protected Documents).
Tasks from other tools
An import converts Logseq's TODO, DOING, WAIT and DONE markers, its [#A] priorities,
deadlines and scheduled dates, and the Obsidian Tasks plugin's emoji into these tags
(Importing From Logseq Obsidian Or EtherPK). An agent connected through the Headless Client
can list tasks with the same filters and tick, prioritise and date them (The Headless Client).