v1.0.2
Patch release: a page save is now atomic, and a page tells you it has a past.
One save, one transaction (#72)
A page save writes several things — the markdown projection, the version
snapshot, the tag index, and the canonical CRDT document that CLAUDE.md calls
the source of truth. Those were separate autocommitted statements, so a crash
between them could leave the canonical document a revision behind its
projection, and the projection is what wins on next open. The rule said the
Y.Doc was authoritative; nothing enforced it across a crash.
A save is now one transaction: it all lands or none of it does. Verified by
failing at each seam and confirming the page is untouched — same text, same
version count, same canonical document.
Two details that matter more than they look:
- The embedding stays outside the write lock. Re-indexing for search chunks
and embeds, and holding a write transaction open across that would queue every
other writer — you, an agent, and the live-editing flusher — behind a model
load. Search is a cache rebuildable from the text, so it runs just after the
commit instead. BEGIN IMMEDIATE, not deferred. A save reads before it writes, and a
deferred lock upgrade can fail outright when a second writer exists — which
here it always does. It also closes a check-then-insert race on new page slugs.
Tested on both SQLite backends: the bundled apsw and the standard library.
A page tells you it has a past (#73)
Every edit was already versioned, with a diff, and nothing on the page said so —
the only "History" on screen was the browser back button's label. An article now
carries one quiet line: Edited 3 minutes ago — 4 earlier versions you can go
back to, linking straight into the history with it already open. A page with a
single revision says so plainly and links nowhere, because there is nothing
earlier to see.
The safety net was real and unreachable, which for someone who has just pasted
over a paragraph is the same as not having one.
Install
brew tap VerinFast/waikiki && brew install --cask waikiki
or pipx install waikiki for the server and MCP endpoint on any platform.
Installed copies update themselves.