Fix a typo without losing history
Correct a published post without rewriting history. Two ways to do it, and how to read any revision back.
Why revisions, not edits
Morse never overwrites a post. Every change is a new revision appended to the entry, and every earlier revision stays readable forever. An entry keeps two pointers, the public head (what readers get) and the draft head (what you are working on). Fixing a typo moves the public head, it does not erase anything.
entry 0 revision 0 public "Hello from Morse" <- still readable revision 1 public "Hello from Morse" (fixed) <- public head
Everything below assumes you have the publication and collection from Launch a blog set as your active context. Check with morse status.
Publish a corrected revision in one step
Edit the file, then publish it straight to the public head:
sed -i.bak 's/no backend/no backend at all/' hello.md morse revision publish-direct 0 --file hello.md --epochs 14
Uploading 100 bytes to Walrus... Blob uploaded (0xa3d0...2c1f). Submitting transaction... Published revision #1 on entry #0. (tx: 7Kq2mRv1...9v8) network: testnet
One upload, one transaction. The old blob and the old revision are untouched.
Or stage a draft first
For anything bigger than a typo, stage the change as a draft, read it back, and only then publish it. Drafts are real revisions on chain, they are just not the public head.
morse revision append-draft 0 --file hello.md --epochs 14 morse entry list --drafts-only morse revision publish-from-draft 0 2
The second argument of publish-from-draft is the draft revision's index. morse entry get 0 shows it as draftHead; entry list --drafts-only only tells you which entries have a pending draft. The 2 above assumes you also ran the one-step publish, which made revision 1; on a fresh entry the draft would be revision 1. Publishing does not promote the draft in place: it appends a new public revision that reuses the draft's blob, so here the entry ends with revisions 0 to 3 and revision 3 is the public head. Pass --file if you want to replace the content at the moment of publishing.
entry add-encrypted starts as a draft and stays one: published revisions are always public and unencrypted, so team-only content is read from the draft with entry decrypt. See Encrypt a post for your team.Read any earlier revision
entry read takes an optional revision index. Without it you get the public head.
morse entry read 0 # public head morse entry read 0 0 # revision 0, the original morse entry read 0 0 --out original.md diff original.md hello.md
That diff is the whole point. Anyone with the entry id can produce it, with no help from you.
What readers see
A reader app that follows the public head sees the corrected post immediately. A reader who cares can fetch the entry record from Sui and walk the revision list, each revision pointing at its own Walrus blob and naming the address that wrote it. The demo blog shows this as a Revisions panel next to the post.
| Operation | Command | Moves public head | Keeps history |
|---|---|---|---|
| Publish corrected text now | revision publish-direct | Yes | Yes |
| Stage, review, then publish | revision append-draft + publish-from-draft | On publish | Yes |
| Delete the entry | entry delete | n/a | No, and the id is retired for good |
--epochs for anything you want readable next month, and expect testnet resets.