Home · Docs · Saving + Versions · Version history

Version history

Every checkpoint snapshot of a doc is preserved. Open the History panel, scrub through the timeline, preview any past version, restore in one click.

Every snapshot of a document is preserved. Open the History panel, click a version, the canvas swaps to a side-by-side diff against the current doc. Restore it in one click; the restore itself creates a new version, so it’s reversible.

Opening the panel

MethodWhat happens
Click the clock icon in the doc toolbarRight-side History panel opens
Press Esc while the panel is openPanel closes

The panel is a side panel like Comments / AI / Share — it doesn’t take over the doc area unless you click into a version.

The timeline

The list shows a unified audit feed for the document, not just versions. Each entry has an icon, a label, and a subtitle (actor + relative time):

Entry typeWhat it represents
VersionA point-in-time snapshot of the content (clickable)
RestoreSomeone restored an earlier version
ShareThe doc was shared with a person, group, or org
Public toggleThe public link was enabled or disabled
ViewSomeone (else) viewed the doc — visible if the audit log records it

Only Version rows are clickable. The others are read-only timeline markers.

When versions are created

A new entry is added to the version table when:

The dedup trigger in the DB collapses identical snapshots — if the version you’d be creating matches the previous one byte-for-byte, it’s skipped. So a “preview, edit nothing, preview again” sequence doesn’t multiply versions.

The most recent version row is automatically labeled “Current” while its content matches what’s in the live editor. As soon as you type, the label reverts to a standard version timestamp because the doc has diverged.

Previewing a version

Click any version row and the full canvas swaps from the editor to a side-by-side diff view:

Version saved · 5 May 2026, 14:08 · Lee

Kyoto, days 1-3

We land in Kyoto on the 12th14th and have three full days before Osaka. The bamboo grove at Arashiyama is best at dawnArashiyama rewards an early start, Fushimi Inari takes a morning, and the Nishiki food markets are worth a slow afternoon.

The diff is Markdown-aware:

This keeps the diff readable for prose changes (you see the words that changed inside a paragraph) while clearly flagging structural changes (a deleted bullet point, a moved code block) at block level.

Color convention:

Restoring

Two buttons sit at the top of the diff view:

ButtonEffect
RestoreOverwrites the current doc with the previewed version’s content. The restore is itself a new version, so it’s reversible.
ExitCloses the diff view, returns to the editor.

You can also press Esc to exit without restoring, or click the same row in the History panel again (which toggles the diff off).

Clicking the “Current” anchor in the panel always returns you to the live editor.

Switching documents

The previewed version is scoped to the current doc. Switching documents clears the preview and closes the diff view — different doc, different timeline.

Retention

Versions are retained for as long as your plan covers. See Plans for the per-tier durations.

When a version is purged (because retention expired), the timeline entry stays but its content pointer is unlinked — clicking it will surface “Could not load that version.”

What versions don’t capture

Not capturedWhy
Per-keystroke historyVersions are at edit/preview checkpoints, not every save (every save is durable already; see Autosave)
Cursor positions or selectionsOnly the document content is snapshotted
Comments, share state, settingsThese have their own timelines and aren’t part of the body version
Image binary contentsVersions store the Markdown body; image URLs stay live as long as the image isn’t deleted