Every save keeps a full snapshot of the record. There is nothing to switch on and no setting to configure — it applies to every content type.
The timeline
The editor’s history opens a list of versions, newest first, each with when it was written and by whom, and a badge:
| Badge | Means |
|---|---|
| Live | The version currently published |
| Draft | Written by a save, never published |
| Superseded | Was live, and another version replaced it |
At most one version is Live at a time.
Because a save moves the entry to draft while the published version stays live, you can accumulate several draft versions above a live one — and then publish any of them.
On a localized type each language has its own timeline, because a revision is keyed to the row rather than to the translation group.
Comparing
Selecting a version shows a field-by-field diff against the current record.
Two details worth knowing when reading it:
- Empty values collapse. A field going from unset to
""is not shown as a change, because it is not one. - Link order counts. A reordered list of related records is a real difference and appears as one, since the snapshot stores the full ordered link set.
Relations in a snapshot are resolved to their actual titles rather than shown as raw ids. A linked record that has since been deleted or moved to another workspace is flagged as missing rather than having its title displayed.
Restore versus publish
These are different operations, and picking the wrong one is the usual mistake.
Restore re-applies an old version’s content as a new version. Restoring v2 gives you v6, identical to v2, sitting as a draft on top of the timeline. Nothing is rewritten and nothing is lost.
Publish this version makes that version itself live, demoting the previously live one to superseded. If it is an earlier version its content is re-applied to the record first, so what is live matches what is published — but no new version is recorded, so the timeline does not grow a copy every time you do it.
| You want | Use |
|---|---|
| To get old content back and keep editing | Restore |
| To put an old version live immediately | Publish this version |
After publishing an older version, the newest is not the live one
Publish v2 while v5 exists and the top of the timeline is a draft that was never published, while v2 carries the Live badge. That is correct, and the next save puts a version matching the live record back on top.
Publishing a version runs the publish gate. If it fails, the content is left re-applied as a draft — a recoverable state rather than a half-finished one.
Permissions
| Action | Needs |
|---|---|
| View the timeline and a version | content:read |
| Restore a version | content:update |
| Publish a version | content:publish |
What it does not do
History is append-only, and never pruned
Versions cannot be edited or deleted, which is the point — but it also means nothing prunes them. There is no retention policy, no cap and no archival: a busy type with large rich-text bodies grows its revision table indefinitely. It is the table to watch on a long-lived installation.
Permanently deleting an entry does take its history with it.