diff options
| author | Danilo M. <danix@danix.xyz> | 2026-10-16 20:58:18 +0200 |
|---|---|---|
| committer | Danilo M. <danix@danix.xyz> | 2026-10-16 20:58:18 +0200 |
| commit | 23a7b36d0d20ef1f809db0b5d69f1416021afb91 (patch) | |
| tree | aa7c2ed18b1ca1aaf9eed22944a45a4435f92522 /desktop/modules/notes/README.md | |
| parent | fc3d2a5812f55824b83eb884fa34930fca41d2fa (diff) | |
| download | quickshell-23a7b36d0d20ef1f809db0b5d69f1416021afb91.tar.gz quickshell-23a7b36d0d20ef1f809db0b5d69f1416021afb91.zip | |
notes: write and commit failures are reported, not assumed
A review of the branch found four ways the page could report success for
work that never happened, all reachable in ordinary use.
Writes: setText is asynchronous unless blockWrites, and its
saved()/saveFailed() do not fire for every write (a second setText to the
same path loses the signal, which stranded the callback), so a save was
reported before it landed and a failed db.json or body write was never
seen. Both views now block and carry the outcome, so writeDb and writeBody
know the result when they return; a failed create therefore leaves no index
entry. The create path also loads the body before the index, so a failed
body write cannot leave an entry with no text.
Commits: the sync chain swallowed every commit failure with '|| true', so a
failing pre-commit hook or a signing failure pushed an unchanged HEAD and
reported success. It now stages, commits only when something is staged, and
lets 'set -e' fail the chain, with stderr folded in for the whole chain
rather than just the push.
Duplicate notes: the 'awaiting commit' state lived only in a 3 second
timer, so a slower second click re-entered create() and appended a second
note. It is now a page property that outlives the timer, and the button
follows it.
Preview: the shared Switch writes checked itself, dropping the binding, so
the switch stopped following page.preview; resynced on change, the way
StatusRow.qml does.
Also validates a note's file name as digits before read, write or rm, and
clears the index error once the index reads again.
Diffstat (limited to 'desktop/modules/notes/README.md')
| -rw-r--r-- | desktop/modules/notes/README.md | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/desktop/modules/notes/README.md b/desktop/modules/notes/README.md index fa1a537..8efd7bc 100644 --- a/desktop/modules/notes/README.md +++ b/desktop/modules/notes/README.md @@ -37,6 +37,10 @@ git to resolve instead. A change made on two machines at once conflicts here for the same reason it conflicts for `notes.sh`: every machine appends to the one `db.json`. +A write that fails is reported rather than assumed: the writes block, so a +refused or failing `setText` is known when it returns, and a failed commit or +push shows git's own message. + **Git order.** `notes.sh` pulls before it writes and commits after, and the page keeps that order: creating a note pulls first, then writes on what the pull brought in, and the commit and push are the second click. The one |
