mirror of
https://github.com/narrrl/narl-workspace.git
synced 2026-11-04 17:07:00 +01:00
ui: touch parity, saves that survive outages, edits that do not collide
PUT /api/nodes/{id} takes base_updated_at and answers 409 when the node
was saved since; the editor sends it, so a save from another tab, the
phone or the SFTP mount is no longer overwritten in silence. :w! and
:wq! now force the write.
An autosave the server could not take is kept and retried with backoff,
and at once on the online event; network failures say "the server
cannot be reached" rather than "Failed to fetch". At boot that is no
longer shown as a login screen. A session that expires mid-edit shows
the login with a note, and logging back in resumes the open draft.
Folder listings and the media list are read page by page, so more than
500 children are no longer cut off. Search results carry the space and
folder they sit in, and the overview's recent list includes files.
Embedding uploads report progress, like uploads into a folder.
On touch devices vim is off by default. Each row has an actions sheet
(rename, move, share, seal, delete), folders start with a .. row, and
the dock gains today's entry, upload, search all spaces, drop for a
marked node, help, and the board's list, reorder, rename and delete.
The agenda gets a done button per card and a button for today's entry.
Sharing a folder or a file is refused in the client. :mv .. in a search
moves up from the match's own folder. Files dropped outside the list or
editor no longer navigate the tab away. The public share view renders
/n/ links as plain text, and tells a network error from a dead link.
This commit is contained in:
1 parent
ee13ae44fa
commit
2733ac1a3a
15 files changed
+472
-74
No files matched your search
@@ -99,7 +99,14 @@ the space itself. The board has
|
||||
`:board`, `:card <title>` (`:card!` links the open document to it),
|
||||
`:due <when|->`, `:done` and `:list <name>` (`:list!` deletes one).
|
||||
|
||||
On a touch device modal editing is turned off and the same actions are buttons.
|
||||
On a touch device modal editing is off by default (`:set vim` turns it on) and
|
||||
the same actions are buttons: the `⋯` on a row — or a long press — opens what
|
||||
the keys do to it: rename, move, share, seal, delete. A move is picked up
|
||||
there and dropped with the button the dock then shows, in whichever folder
|
||||
is open. Inside a folder the list starts with `..`, the way up. The dock also
|
||||
has today's entry, an upload into the folder, a search across every space,
|
||||
and on the board the card moves, renames and deletes; the agenda has a done
|
||||
button per card.
|
||||
|
||||
## Boards
|
||||
|
||||
@@ -157,7 +164,16 @@ something is late or due, so nothing has to be remembered to be looked at.
|
||||
|
||||
Every change is written to `localStorage` as it is typed and to the server a
|
||||
couple of seconds after typing stops, so `:w` is a habit rather than a
|
||||
necessity. A document made with `o` and left with neither a name nor a word in
|
||||
necessity. When the server cannot be reached the draft stays in the browser
|
||||
and the save is tried again, less often the longer it fails, and at once when
|
||||
the browser says it is back online. A session that runs out mid-sentence
|
||||
shows the login, and logging in again carries on where it stopped, draft and
|
||||
all.
|
||||
|
||||
A document saved somewhere else since it was opened here — another tab, the
|
||||
phone, the SFTP mount — is not written over: `:w` says so, `:e!` takes the
|
||||
other version, and `:w!` writes this one anyway. Search results say which
|
||||
space and folder each match is in. A document made with `o` and left with neither a name nor a word in
|
||||
it is removed again on the way out, so abandoned starts do not pile up. If a tab dies mid-document, opening it again restores the draft and
|
||||
says so — `:e!` throws it away, the way vim handles a swap file.
|
||||
|
||||
|
||||
Reference in new issue
Block a user