tiles: the board, the agenda, the calendar and a card's back are tiles

The special workspace was a second layout beside the tiles, with its own
focus, its own Tab, Esc and q, and a returnTo flag to find the way back.
The views are now tile kinds instead: opened beside what is on screen,
walked with Alt-h/j/k/l and gt/gT, closed with q.

- Tile gets a kind: node, board, agenda, calendar or card. view,
  specialFocus, returnTo and the special context are gone.
- A trail of focused tiles: closing one goes back to the one before, so
  q on a card's notes or a calendar day returns to the view.
- A view is never replaced by what is opened from it; that opens beside.
- S tiles the board, agenda and calendar ahead of the documents, or puts
  every view away. :plan, with :special kept as an alias.
- The card sheet is a card tile beside the board, following its cursor;
  leaving it while writing the description saves what is written.
- Spaces remember their views; with a view focused, a space switch takes
  the views along instead of leaving copies behind.
- Card commands check what has the focus rather than the special view.
This commit is contained in:
nvrl committed 2026-10-22 10:18:50 +02:00
1 parent 26b3c686d2
commit 5684614d0a
18 files changed
+522 -512

No files matched your search

+42 -34
View File
@@ -1,38 +1,44 @@
# Boards and the agenda
## The special workspace
## Views
The board, the agenda and the [calendar](Diary.md#the-calendar) share one
workspace of their own, as the desktop's special workspace holds what is
looked at in passing. `S` (or `:special`, or the `special` pill in the bar)
puts it up and away again. It is three tiles: the board on the left, the
agenda over the calendar on the right.
The board, the agenda, the [calendar](Diary.md#the-calendar) and the back of
a card are views: tiles like the documents' tiles, opened beside what is on
screen and walked the same way. `S` (or `:plan`) puts the board, the agenda
and the calendar up together, ahead of the documents with the board focused —
the board on the left, the agenda over the calendar on the right when nothing
else is open — and puts every view away again.
![The special workspace](../images/board.png)
![The board, the agenda and the calendar](../images/board.png)
| key | what it does |
| --- | --- |
| `S` | put the special workspace up, or away |
| `b`, `t`, `C` | to the board, the agenda or the calendar, from anywhere |
| `Tab` / `Shift-Tab` | the next / previous tile |
| `Alt-h` / `Alt-j` / `Alt-k` / `Alt-l` | the tile that way |
| `S` | the board, the agenda and the calendar up together, or every view away |
| `b`, `t`, `C` | to the board, the agenda or the calendar, opening its tile when it is not up |
| `gt` / `gT` | the next / previous tile |
| `Alt-h` / `Alt-j` / `Alt-k` / `Alt-l` | the tile that way; left of the leftmost is the list |
| `l` past the last list, `h` in the agenda, `j` past its end | on into the tile beside |
| `f` | the focused tile fills the screen; again or `Esc` to leave |
| `1` … `9` | switch space, and the board with it |
| `q`, `Esc` | leave, back to where you were |
| `1` … `9` | switch space; with a view focused, the views come along |
| `q`, `Esc` | close the view's tile, back to the tile focused before it |
The keys go to the tile with focus, which wears the light border and its key
lit in its head; the other tiles keep their cursors, dimmed. `b`, `t` and `C`
only ever go to their tile, and `Esc` only ever leaves — or, with a tile
filling the screen, leaves that first. A document opened from the workspace —
a card's notes, a day of the calendar, an entry of the agenda, `T` — comes
back to the tile it was opened from on `q`. Everything in it is read again
each time it comes up.
lit in its head; the other views keep their cursors, dimmed. A view is never
replaced by what is opened from it — a card's notes, a day of the calendar, an
entry of the agenda, a row of the list: that opens in a tile beside it, and
`q` on it comes back to the view. Each view is read again whenever it is gone
to.
Each space keeps its own tiles, views among them. Switching space with a view
focused takes the board, the agenda and the calendar along, the way the
special workspace used to stay up: a digit on the board shows that space's
board, with the agenda still beside it. Switching with a document or the list
focused leaves them in the space, and they are there again on coming back.
## The board
Every space except the diary has a board. `b`, the board button on the rail, or
`:board` shows it in the special workspace, and `Esc` goes back to the tree.
`:board` shows it in a tile beside what is open, and `q` or `Esc` closes it.
It is the board of the space being browsed, or, in a space without one such as
the diary, the last board shown. The head of the board names every space that
has one, with the digit that goes there.
@@ -64,13 +70,14 @@ a week fold away until `z` shows them.
| `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` | leave the special workspace |
| `q`, `Esc` | close the board's tile |
### The back of a card
`Enter` on a card turns it over: a sheet floats over the board with its
labels, its description and its checklist. The card stays the one under the
board's cursor, so `D`, `R`, `H` and `L` act on it as they do on the board.
`Enter` on a card turns it over: a tile beside the board with its labels, its
description and its checklist. It is the card under the board's cursor, so
walking the board leafs through the backs, and `D`, `R`, `H` and `L` act on it
as they do on the board.
| key | what it does |
| --- | --- |
@@ -83,11 +90,12 @@ board's cursor, so `D`, `R`, `H` and `L` act on it as they do on the board.
| `e`, `i`, `Enter` | write the description |
| `a` | put a label on, or take it off (`:label <name>`) |
| `gf` | the card's notes, below |
| `q`, `Esc` | back to the board |
| `q`, `Esc` | close the back, back to the board |
The description is markdown, written in the same editor as a document, vim
and all: `:w` writes it to the card, `:q` or `Esc` in normal mode leaves, and
`:q!` throws away what was not written. A fenced block in a language is
`:q!` throws away what was not written. Leaving the tile while writing keeps
what is written. A fenced block in a language is
coloured the way nvim colours it, written and read.
Labels are lower case, and each name keeps its colour on every card and every
@@ -101,15 +109,15 @@ step open again.
### Capturing a card
`c` anywhere outside the special workspace opens `:card ` on the command line. The card goes
`c` in the tree 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](Capture.md).
### Notes
`gf` on a card, or on its back, 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.
root of the space the first time, in a tile beside the board. 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.
@@ -150,8 +158,8 @@ does not make a second copy. The board and the agenda show the rule as
## The agenda
`t` (or `:agenda`) gathers what needs you from every board at once, in the
special workspace beside the board.
`t` (or `:agenda`) gathers what needs you from every board at once, in a tile
of its own.
![The agenda](../images/agenda.png)
@@ -163,15 +171,15 @@ special workspace beside the board.
| key | what it does |
| --- | --- |
| `j` / `k` | down / up, on into the diary entries, then into the calendar |
| `h` | to the board |
| `j` / `k` | down / up, on into the diary entries, then into the tile below |
| `h` | to the tile on the left |
| `Enter` | to the card on its own board, in the tile beside, 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 |
| `q`, `Esc` | leave the special workspace |
| `q`, `Esc` | close the agenda's tile |
The agenda opens by itself once a day when something is late or due. "Today"
is the day in `WORKSPACE_TIMEZONE`, the same as for the mails, so a browser in
+13 -16
View File
@@ -22,7 +22,7 @@ arguments and `↑` / `↓` recall earlier lines.
| `Alt-h/j/k/l` | focus the tile that way, from the editor too — left of the leftmost is the list |
| `Alt-Shift-h/j/k/l` | move the focused tile that way |
| `L · Shift-Enter` | open the row in a new tile beside the others |
| `gt / gT` | next / previous tile — in the editor too |
| `gt / gT` | next / previous tile — a view too |
| `Alt-q` | close the focused tile — :close; :only closes the others |
| `j / k · ↓ ↑` | move down / up the list — scroll the document when it has focus |
| `gg / G` | first / last row, or top / bottom of the document — a first g, d, ] or [ waits a second in the status line |
@@ -43,14 +43,13 @@ arguments and `↑` / `↓` recall earlier lines.
| `m / p` | pick nodes up, then drop them all into the folder you walk to |
| `M` | pick up the whole folder — again puts it all back |
| `Ctrl / Shift-click` | pick a row up · every row up to it — drag them onto a folder |
| `S` | the special workspace: the board, the agenda and the calendar side by side — S again, q or Esc leave it |
| `Tab · Alt-h/j/k/l` | in the special workspace: the next tile, or the one that way — l past the last list and j past the agenda go on too |
| `t` | agenda — late, due this week, in hand, on every board — in the special workspace |
| `S` | the board, the agenda and the calendar, tiled ahead of what is open with the board focused — S again puts every view away |
| `t` | agenda — late, due this week, in hand, on every board — in a tile of its own |
| `T` | today's diary entry, started if there is none — from templates/day when the diary has one |
| `C` | the diary by month, in the special workspace: h/l a day, j/k a week, H/L a month, . today, Enter opens or starts the day |
| `C` | the diary by month, in a tile: h/l a day, j/k a week, H/L a month, . today, Enter opens or starts the day beside it |
| `[d / ]d` | the diary entry before / after the one open, by date |
| `Ctrl-P` | find anything, in every space — Enter opens the result lit beside them, n goes on |
| `b` | the board, in the special workspace: this space's, or the last one shown — 1 … 9 there shows another's |
| `b` | the board, in a tile: this space's, or the last one shown — 1 … 9 there shows another's |
| `c` | capture a card into this space's inbox, without leaving here |
| `Esc · q` | close the document, and its tile when there are several |
| `/` | full-text search, inside the current space and its text files — Tab or Ctrl-N/P walk the results, Enter opens one |
@@ -64,6 +63,7 @@ arguments and `↑` / `↓` recall earlier lines.
| `:` | command line — Tab / Shift-Tab cycle the matches, then the argument; ↑ ↓ recall what ran before |
| `Ctrl-S` | save, from anywhere |
| `?` | this screen, from the editor too — h/l a column, / filters it down |
| `q · Esc` | in a view — the board, the agenda, the calendar, a card's back — close its tile; the focus goes back to the tile before |
### On a board
@@ -71,13 +71,13 @@ The first list is the inbox, the last list is done.
| key | what it does |
| --- | --- |
| `h / l` | to the list left / right — right of the last is the agenda |
| `h / l` | to the list left / right — right of the last, to the tile beside |
| `j / k` | down / up the cards |
| `gg / G` | first / last card of the list |
| `J / K` | move the card down / up its list |
| `H / L` | move the card to the list left / right |
| `Space` | into the done list, or back out to the inbox |
| `Enter` | turn the card over: its labels, description and checklist |
| `Enter` | turn the card over, in a tile beside: its labels, description and checklist |
| `gf` | the card's notes — a document, made on first use; q comes back |
| `o · c` | new card on this list |
| `D` | due date: fri, tm, +3d, 10-31 … |
@@ -86,7 +86,6 @@ The first list is the inbox, the last list is done.
| `F` | a letter over every card in view — type it to put the cursor there |
| `r` | read the board again, for changes made elsewhere |
| `x · dd` | delete the card (asks y/N) |
| `q · Esc` | leave the special workspace |
### On the back of a card
@@ -104,21 +103,19 @@ The first list is the inbox, the last list is done.
| `R · D` | rename the card, its due date |
| `H / L` | send the card to the list left / right |
| `gf` | the card's notes — a document, made on first use; q comes back |
| `q · Esc` | back to the board |
### In the agenda
| key | what it does |
| --- | --- |
| `j / k` | down / up the cards, then what was written on this day in earlier years, then into the calendar |
| `h` | to the board |
| `j / k` | down / up the cards, then what was written on this day in earlier years, then on to the tile below |
| `h` | to the tile on the left |
| `Enter` | to the card, on its own board beside — or to the entry |
| `Space` | done, where it stands |
| `D` | due date: fri, tm, +3d … — :due on the line |
| `:` | the line, with the agenda kept up — :repeat weekly acts on the card |
| `H / L` | to the list left / right on its board |
| `T` | today's diary entry |
| `q · Esc` | leave the special workspace — a document opened from it comes back here on q |
### In the scratchpad
@@ -156,11 +153,11 @@ do: `:w!`, `:space! <name>`, `:import!`.
| command | what it does |
| --- | --- |
| `:board` | this space's board, in the special workspace |
| `:special` | the special workspace: the board, the agenda and the calendar side by side — S puts it up and away, Tab walks its tiles, 1 … 9 picks the board |
| `:board` | this space's board, in a tile — the last one shown when this space has none |
| `:plan, :special` | the board, the agenda and the calendar, tiled ahead of what is open — S puts them up, and every view away again; 1 … 9 on the board picks the board |
| `:card, :c <title>` | add a card — on the board to the list under the cursor, elsewhere to this space's inbox |
| `:card!` | add a card linked to the open document — gf on it opens the document |
| `:due <when\|->` | due date of the card — on the board, or highlighted in the agenda: today, tm, fri, +3d, +2w, 10-31, 2026-10-31 — - clears |
| `:due <when\|->` | due date of the card — on the board, its back, or highlighted in the agenda: today, tm, fri, +3d, +2w, 10-31, 2026-10-31 — - clears |
| `:repeat <rule\|->` | once the card is done, a copy comes back in the inbox: daily, weekly, monthly, yearly, +3d, +2w, +6m — - stops it |
| `:done` | move the selected card into the done list, or back out to the inbox |
| `:task, :step <text>` | add a step to the open card's checklist, below the cursor |
+5 -5
View File
@@ -13,9 +13,9 @@ an entry written after midnight on a trip still lands on the right day.
## The calendar
`C` (or `:cal`) shows the diary a month at a time, in the
[special workspace](Boards-and-Agenda.md#the-special-workspace) under the
agenda.
`C` (or `:cal`) shows the diary a month at a time, in a
[tile of its own](Boards-and-Agenda.md#views) — under the agenda when `S` puts
them up together.
![The diary by month](../images/calendar.png)
@@ -25,8 +25,8 @@ agenda.
| `j` / `k` | a week forward / back |
| `H` / `L` | a month back / forward |
| `.` | today |
| `Enter` | open the day's entry, or start one dated that day |
| `q`, `Esc` | leave the special workspace; an entry opened here comes back on `q` |
| `Enter` | open the day's entry beside the calendar, or start one dated that day |
| `q`, `Esc` | close the calendar's tile; `q` on an entry opened from it comes back here |
A dot marks a day with an entry. A number says how many when there are more
than one.
+3 -3
View File
@@ -71,9 +71,9 @@ The rail of buttons on the right does the same as the keys, for a mouse.
add a name and press `Enter`. `l` or `Enter` on the folder goes into it, and
`h` comes back up.
6. Press `c`, type `try the board`, and press `Enter`. That is a card in the
inbox of this space's board. Press `b` to see the board, and `Esc` to go
back. It shares a special workspace with the agenda and the calendar: `S`
puts it up and away, and `Tab` walks between them.
inbox of this space's board. Press `b` to see the board in a tile, and
`Esc` to close it. `S` puts it up with the agenda and the calendar, and puts
them away again; `Alt-h`/`j`/`k`/`l` walk between the tiles.
7. Press `T`. That is today's diary entry, started for you.
8. Press `?` for the list of every key and command. `h` / `l` walk its columns, `/` narrows it down, and `Esc` closes it.
+10 -9
View File
@@ -11,9 +11,9 @@ The keys are the desktop's. On a phone, every one of these has a button; see
## Morning: what needs you
The first time you open the workspace each day, the **agenda** opens by itself
when anything is late or due. Any other time, press `t`. It opens in the
**special workspace**, beside the board and the calendar; `S` puts that up and
away from anywhere, and `Tab` walks its tiles.
when anything is late or due. Any other time, press `t`. It opens in a tile
beside what is open; `S` puts it up with the board and the calendar, and puts
them away again, and `Alt-h`/`j`/`k`/`l` walk the tiles.
![The agenda](../images/agenda.png)
@@ -35,7 +35,7 @@ Walk it with `j` and `k`. On a card:
- `H` and `L` move it to the list left or right on its board;
- `Enter` goes to the card on its own board, in the tile beside.
`Esc` leaves the special workspace. The bar keeps showing the `late` and `today`
`Esc` closes the agenda's tile. The bar keeps showing the `late` and `today`
counts while either is above zero. More in [Boards and the agenda](Boards-and-Agenda.md).
## At work: spaces, documents and tiles
@@ -86,7 +86,7 @@ In a meeting someone asks you to renew a certificate. Press `c`, type
`Renew the gateway certificate`, and `Enter`. The card is in this space's
inbox, and you have not left the document you were reading.
Press `b` to see the **board**, in the special workspace. A digit there
Press `b` to see the **board**, in a tile beside the document. A digit there
shows the board of another space.
![The board](../images/board.png)
@@ -94,10 +94,11 @@ shows the board of another space.
The first list is the inbox and the last is done; the ones between are work in
hand. `h`/`l` move between lists and `j`/`k` between cards. `H`/`L` move a
card across, `Space` finishes it, and `D` sets its due date. `Enter` turns a
card over to its labels, description and checklist, and `gf` opens its notes:
a document made for the card the first time you ask. `:repeat weekly`
makes a card come back in the inbox each time it is finished. `q` goes back to
the tree.
card over to its labels, description and checklist, in a tile beside, and
`gf` opens its notes: a document made for the card the first time you ask,
also beside, and `q` on it comes back to the board. `:repeat weekly` makes a
card come back in the inbox each time it is finished. `q` on the board closes
its tile.
### Finding things