Task Language Parser
The task creator and the Cognition Bar (⌥ R) read short tokens out of what you type. Everything that isn’t a token becomes the title, and a row of hints under the input shows what was picked up as you go.
Write report !high %Work @@School #essay @tomorrow @3pmThat creates Write report — high priority, in the Work block, filed under
School, tagged essay, due tomorrow at 3:00 PM.
Type below to see what the parser returns. This runs the same code as the app, so dates resolve against your current time and the hints match what you’d see under the input.
Tokens
Section titled “Tokens”| Token | Sets | Examples |
|---|---|---|
! |
Priority | !high !h · !medium !m · !low !l · a lone ! means high |
!! |
Critical | !! |
% |
Block | %Work · %Early Morning · %"Deep Work" |
@@ |
Category | @@School · @@"Side Projects" |
# |
Tag (repeatable) | #essay #q4 |
@ |
Due date / time | @tomorrow @3pm @10/24 |
Tokens can go anywhere on the first line, in any order, separated by spaces.
Priority and critical
Section titled “Priority and critical”!high, !medium and !low (or !h, !m, !l) set the priority. A bare !
followed by a space is shorthand for high. !! on its own marks the task
critical, which is separate from priority — you can use both.
Blocks
Section titled “Blocks”% assigns the task to a block. One-word names need
nothing extra: %Work. The built-in multi-word blocks — %Early Morning and
%Late Night — also work as-is. For any other name with a space, wrap it in
quotes: %"Deep Work".
Categories
Section titled “Categories”@@ sets the category: @@School, or @@"Side Projects" for names with
spaces. Straight and curly quotes both work.
Each #word adds a tag. Tags may contain letters, numbers, _, . and -.
Dates and times
Section titled “Dates and times”@ takes a single word — no spaces — and understands:
| You type | Means |
|---|---|
@today · @tomorrow |
That day |
@tonight |
6:00 PM |
@3pm · @3:30pm · @15:30 |
A time |
@10/24 · @10/24/2026 |
A date (M/D rolls to next year once it has passed) |
@2026-10-24 |
An ISO date |
@2026-10-24T15:30 |
An ISO date and time |
Combine a date token with a time token to get both: @tomorrow @9am.
When only part is given:
- Time only → today at that time.
- Date only → 11:59 PM that day.
Ranges
Section titled “Ranges”Give a task an end time with a dash or arrow inside one token:
Standup @9am-9:15amFocus block @1pm->3pmOr, at the very start of the input, put to, till, until or -> between
two @ tokens:
@9pm to @1am Night shiftIf the end comes before the start and has no date of its own, it rolls over to the next day — so the example above ends at 1:00 AM tomorrow.
Things to know
Section titled “Things to know”- Only the first line is parsed. Anything on later lines is kept as-is in the title.
- An unrecognised token ends parsing. If a token can’t be read — say
@someday— the hints show it as unfinished and the rest of that line is left out of the title. Fix or remove the token before saving. - Words that merely contain the symbols are fine. Only words that start
with
!,%,@or#are treated as tokens, some@example.comstays in the title.