History
How to save checkpoints, what a restore really does, and how branches let you try an alternate draft.
The History tab in the right-hand dock holds two things: a timeline of checkpoints, and the list of branches. Checkpoints are moments you can return to. Branches are alternate drafts of the story's content.
Save a checkpoint
Open History and name the moment
Type a name into "Checkpoint name". It is required, and it is what the row will say later, so "before the rewrite" beats "checkpoint 4".
Press Save checkpoint
The checkpoint is recorded against the branch you are currently on, with your name and the time.
Saving needs the editor role. If nothing has changed since the last checkpoint on this branch, you get a notice: "No changes since the last checkpoint, saved as a named marker anyway." The row is created either way.
The timeline lists newest first and shows the author beside the time. A
checkpoint written by an agent run reads Agent (started by Ada), so you
can tell an automated save from one a person made.
The timeline is per branch. Its heading names the draft you are on. Switch branches and you see that branch's checkpoints, not the project's whole history. This is deliberate: you can only restore to a point that belongs to the draft you are actually in.
Restore an earlier state
Restoring is owner-only, and it changes what everybody sees. Press Restore on a row, read the dialog, confirm.
What a restore does:
- Returns every chapter's content to the state at that checkpoint: scenes, beats, script text, staging, cast, variables, HUD config, flow positions.
- Brings back chapters whose rows were deleted since the checkpoint, with their original content.
- Reloads every connected client onto the restored state. Nobody keeps editing a version that no longer exists.
What a restore does not do:
- It does not delete newer chapters. Chapters created after the checkpoint stay. Restore rewinds; it does not truncate the project down to a snapshot.
- It does not touch anything administrative. Members and roles, the project name, uploaded assets, published versions, share links, and AI usage all live outside the story documents and are untouched. A deleted asset does not come back.
- It does not undo a publish. A version you already published is a frozen bundle. See Publish and versions.
- It is not a per-person undo. The whole project's content goes back, not one collaborator's edits.
Restore is not itself reversible by a second restore. Before restoring, save a checkpoint of the current state. Then the "before" is on the timeline too, and you can go forward again.
If the checkpoint belongs to a branch that has since been merged or discarded, restore refuses and says so: merged drafts are frozen, and you restore from the branch you are working on.
Branches
A branch is an alternate draft of the story's content. Fork one when you want
to try an act two without touching the version everyone else is reading. The
project always has a branch called main, and main cannot be discarded.
Create a branch from the History tab: name it, press New branch, and you land
on it. The URL gains a ?branch= parameter. Being on a branch is private
routing state, so switching does not move anybody else.
Chapter structure is shared across branches. The chapter list, chapter titles, and chapter order live outside the branched documents, so adding, renaming, deleting, or reordering a chapter on a branch changes it everywhere. Only the content inside chapters diverges.
That makes branches good for additive drafting and bad for restructuring. Write an alternate ending on a branch. Do not reorganize the whole book on one.
Merging
The merge button appears when you are on a branch, and it names its target:
merge goes into the branch this one was forked from, which is main only if
you forked from main. Merging needs the editor role.
The merge is a union. Nothing is deleted from the target, no conflict is ever raised, and concurrent edits to the same document interleave the same way live co-editing does. There is no diff view to approve first, so the review step is reading the branch before you press the button.
When it lands, the source branch is marked merged and you are moved onto the
target. If the merge fails partway, the message names the documents that
failed, and the draft you were on is untouched.
Branches created by an agent run go through a longer merge path and carry a bot icon in the list. Merge those from the review banner: see Runs and review.
Discarding
Discard on a branch row archives it. The draft leaves the branch list and can
no longer be switched to or merged. Its checkpoints are kept, and nothing on
other branches changes. If somebody discards the branch you are on, you are
moved back to main rather than left editing a draft that no longer exists.
When something has gone wrong
Work through this in order.
- You made the mistake, just now, in the script. Press Ctrl Z (⌘ Z on a Mac). Undo covers your own edits only.
- Someone else made it, or it was many edits ago. Undo cannot reach it. Ask the owner to restore the last good checkpoint.
- The mistake is on a branch. Do not restore. Discard the branch. Nothing
on
mainwas ever touched. - There is no checkpoint before the mistake. Then there is nothing to restore to. Rewrite the chapter, and save a checkpoint first next time.