Commit Graph
4 Commits
Author SHA1 Message Date
nvrl c6c5e9e144 plan: b, t and C open their own view alone or beside what is there, q closes one view
S still puts the board, the agenda and the calendar on the plan screen.
From the documents, b, t or C opens the plan with only that view; on the
plan they add the view beside the others, or focus it if it is there.
q and Esc close the focused view the way they close a document's tile,
back along the trail, and only closing the last view leaves the plan.
2026-10-23 00:48:50 +02:00
nvrl 4542b9692e search: Esc on the line gives it up, Esc in the list lets go of it
Typing after / only tries a search: Esc, or back, puts the list back as it
was before the line opened, and only Enter keeps the results. In the list,
Esc lets go of one thing at a time, so after the document it clears the
search, with the cursor kept on the row it was on; back on a phone does the
same before going up a folder. A late answer to an older search no longer
lands over a newer one, and closing the last document puts the folder back
in the address bar.
2026-10-22 22:58:27 +02:00
nvrl 650fc40fa7 keys: Ctrl moves between tiles, Ctrl-Q jots from anywhere, the plan gets a screen of its own
Alt never reached the app, so the tile keys are Ctrl-h/j/k/l and
Ctrl-Shift-h/j/k/l, taken before vim sees them, and h/l walk the tiles
while reading. Ctrl-Q lowers the scratchpad from the editor straight
into the last note, and raises it back to the document, still writing.
The drawer sits in the porthole's opening with a full rim. The board,
the agenda, the calendar and a card's back live on a plan screen that
S goes to and comes back from, so documents and views never share the
screen. The calendar fits its tile instead of scrolling.
2026-10-22 16:51:50 +02:00
nvrl b1107013ee store: one workspace, made of parts
The Workspace class held every piece of client state in one 2500-line
file. It is now a root that composes nine parts, each in web/src/lib/state/:

- tree: spaces, folders, the list, search, marks, and what is done to nodes
- tiles: the tiles on screen, the focus trail, and the views among them
- drafts: document drafts and autosave, and text written in place
- cards: the board, the agenda, the card back, and the card verbs
- diary: today's entry, the calendar, stepping between days
- scratch: the scratchpad drawer and its ways out
- sheets: what floats over the tiles, and what each sheet lists
- vault: the vault status and unlocking
- prompts: the [y/N] question, the password box, Proton's check

The root keeps what belongs to no one part: the session, the status
line, guard, what has the focus, and the focused tile's open/draft/
editing. The keyboard layer still sees one `workspace`; call sites read
`workspace.cards.card`, `workspace.tree.nodes` and so on. Behaviour is
unchanged.
2026-10-22 16:14:38 +02:00