Files
narl-workspace/docs/wiki/Spaces-and-Documents.md
T
nvrl 4eb663e2d7 docs: a guide, a wiki and screenshots
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.
2026-10-21 12:07:32 +02:00

4.3 KiB

Spaces and documents

Spaces

A space is a top-level area: diary, work, uni, or whatever you make. Each has its own tree of folders, its own board and its own search, so work and uni do not get mixed up.

  • 1 … 9 and 0 switch to a space by its place in the bar; Tab and Shift-Tab step through them.
  • w shows every space at once, with what was last written in each. hjkl move, Enter goes there.
  • :space! <name> makes a space, :name! <name> renames the one you are in, and :rmspace puts it in the trash with everything in it.
  • :set noboard turns the board off for a space, :set board back on.

Every space at a glance

One space has the diary role. It is the diary by role, not by name: rename it and the reminder and the agenda still know which space it is. It cannot be deleted. See The diary.

The tree

Inside a space, folders nest to any depth. The list shows the folder you are in: folders first, then documents and files, grouped by the day they were written.

key what it does
j / k, gg / G move, first, last
l, Enter open the document or file, or go into the folder
h up one level
o a new document here, straight into insert mode
O a new folder here
R rename what is under the cursor
x, dd delete it, into the trash
u bring the last delete back

:cd <folder> walks the tree from the command line (:cd .. goes up, :cd / to the root of the space), and :mkdir <name> makes a folder.

Moving things

  • m picks up the row under the cursor; m again puts it back. M picks up the whole folder you are in.
  • Walk to another folder, in any space, and press p to drop everything picked up there.
  • Shift-1 … Shift-9 sends what is picked up, or the row under the cursor, straight to the root of that space.
  • :mv <folder> moves it into a folder here, :mv .. up one level, :mv / to the root.
  • With a mouse, Ctrl-click picks a row up and Shift-click every row from the cursor to it; drag them onto a folder, a crumb in the bar, or a space.

A move never breaks a link: every document that links to what moved is rewritten to point at its new place. See Writing.

Documents

A document is markdown with a name. It has a real address, /n/<space>/<folder>/<slug>, which the address bar shows and which can be linked to from anywhere behind the login.

A document in the reader

The line under the title says when it was written and last edited, how many words it has, and how many documents link to it. In the reader:

key what it does
j / k, Ctrl-D / Ctrl-U scroll a line, or half a page
]] / [[ the next / previous heading
gO the headings as a list to jump to
zl / zh scroll a wide table or code block sideways
F a letter over every link and button in view; type it to follow
gh earlier versions
gb the documents that link here
i, a edit
q, Esc close

:stats counts words and lines, :copy puts the whole text on the clipboard, :export downloads it as a .md file, and :date 2026-10-01 changes the day it is filed under.

A document made with o and left with neither a name nor a word in it is removed again when you leave it, so abandoned starts do not pile up.

Tiles

Several documents can be open at once, each in a tile of its own.

Two documents in tiles

  • L or Shift-Enter on a row opens it in a new tile; Enter and l open it in the focused one.
  • Tiles share the space the way a tiling window manager does: two side by side, a third splits the newer one, and so on.
  • Alt-h/j/k/l moves the focus between tiles, and Alt-h past the leftmost goes back to the list. Alt-Shift-h/j/k/l moves the tile itself.
  • gt / gT (or :bn / :bp) cycle through them, :ls lists them, and :b <n or name> focuses one.
  • Alt-q (or :close) closes the focused tile, :only every other one, and f makes the focused tile fill the screen.

Opening a document that is already in a tile focuses that tile rather than opening it twice. Each tile keeps its own scroll position and editor, and each space remembers its tiles. Under 768 pixels wide only the focused tile is shown.