The README grew a section per feature and is a good reference, but nothing said where to begin. docs/wiki now has a getting-started page, a guide that walks through one day with the workspace and explains each part where it comes up, and a page per part of the app, each with screenshots of what it describes. Three pages are read out of the code rather than written, so they cannot drift from it: the keys and commands from Help.svelte and commands.ts, the same lists `:help` draws; the settings from .env.example, which gains a heading for the vault, trash and history settings so they no longer sit under mail; and the API from the README's table. `make wiki` writes them, and `--check` fails when one is stale or a link between pages leads nowhere. `--publish` lays the pages out for a GitHub wiki: links without `.md`, images beside them, `[[` escaped so the wiki does not take a command's help text for a link to a page. The screenshots are taken by `make screenshots`: the debug binary on a temporary data directory, with a password made up for the run, filled with an example workspace over the API, and a headless Chromium driven over the DevTools protocol through the views the docs show. Nothing outside the temporary directory is touched but docs/images, and the pictures are cut to 256 colours, a third of their size, which a dark UI does not show. The README opens with the banner, a CI badge, the guide, the features grouped by what they are for, and six of the screenshots.
4.3 KiB
Boards and the agenda
The board
Every space except the diary has a board. b, the board button on the rail, or
:board swaps the tree for it, and q swaps back.
A new board has three lists: backlog, doing and done. The lists mean
something by where they stand, not by their names:
- the first list is the inbox, where new cards land;
- the last list is done. A card is finished exactly when it is in the last list: moving it there stamps it, moving it out reopens it;
- the lists between are work in hand, which the agenda shows.
:list <name> adds a list in front of the last one, :name! renames the list
under the cursor, and :list! deletes it with its cards. Done cards older than
a week fold away until z shows them.
| key | what it does |
|---|---|
h / l |
to the list on the left / right |
j / k |
down / up the cards |
J / K |
move the card down / up its list |
H / L |
move the card to the list on the left / right |
Space |
into the done list, or back out to the inbox |
o, c |
a new card on this list |
Enter |
the card's notes |
D |
due date |
R |
rename the card |
z |
show done cards older than a week |
F |
a letter over every card; type it to jump there |
x, dd |
delete the card |
q, Esc |
back to the tree |
Capturing a card
c anywhere outside the board opens :card on the command line. The card goes
into the inbox of the space you are in, or of the first space with a board, and
you stay where you were. From outside the browser, see Capture.
Notes
Enter on a card opens its notes: a document named after the card, made in the
root of the space the first time. Closing it goes back to the board, on the
same card. :card! while reading a document makes a card that points at it.
The link is loose on purpose: deleting the document leaves the card, because the work is still open when its notes are gone.
Due dates
D on a card (or :due <when>) takes a date the way it is said:
| you type | it means |
|---|---|
today, td |
today |
tm, tomorrow |
tomorrow |
fri |
the next Friday, never today |
+3d, +2w |
in three days, in two weeks |
10-31 |
the next 31 October |
2026-10-31 |
that day |
- |
no due date |
Cards that come back
:repeat weekly, or the ↻ button on the rail, makes a card come back once it
is done. The rules are daily, weekly, monthly, yearly, and any +3d,
+2w, +6m or +1y. :repeat - stops it.
Finishing such a card leaves a copy at the bottom of the inbox, with the same
title, notes and rule, due on the next date. The next date counts on from the
old due date, in WORKSPACE_TIMEZONE:
- a card due at noon stays due at noon across a change of the clocks;
- a card due on the 31st comes back on the last day of a shorter month, and on the 31st again where there is one;
- a card finished late skips the dates that have passed;
- a card without a due date counts from the moment it was finished.
The finished card gives up its rule, so reopening it and finishing it again
does not make a second copy. The board and the agenda show the rule as
↻ weekly beside the date.
The agenda
t (or :agenda) gathers what needs you from every board at once.
- late, today and this week: unfinished cards by due date;
- in hand: cards in a list between the inbox and done;
- whether the diary has an entry for today;
- on this day: diary entries from the same day in earlier years. A 29 February is remembered on the 28th in the years that have none.
| key | what it does |
|---|---|
j / k |
down / up, on into the diary entries |
Enter |
to the card on its own board, or open the entry |
Space |
finish the card where it stands |
D |
due date |
H / L |
to the list left / right on its board |
: |
the command line with the agenda kept up, so :repeat acts on the card |
T |
today's diary entry |
t, q, Esc |
close |
The agenda opens by itself once a day when something is late or due. The bar
shows the late and today counts whenever either is above zero. With mail
set up, cards due today are mailed in the morning too; see
Backup and mail.

