Anatomy of a revision
Each revision records:- The prompt (or “manual edit” for Code mode changes).
- The agent that ran it (Claude Code, Codex, Gemini CLI, or “manual”).
- The plan (if Plan mode was used).
- The diff of files changed.
- The build result (success or fail).
- A named label (auto-generated; you can override).
The timeline view
Open History from the project sidebar. You’ll see:Common operations
Inspect a revision
Click any row. See the prompt, the plan, the file diff, and a “Preview at this revision” button.
Roll back
Click “Restore this revision”. The project’s current state becomes that revision; the rolled-back changes become a new revision (so the undo is itself recoverable).
Compare revisions
Pick two revisions, see the diff between them. Useful for understanding “what changed in the last hour.”
Branch from a revision
Click “Branch from here”. Creates a new branch at that point so you can experiment without affecting main.
Rename a revision
Click the auto-generated label and rename. Useful for marking milestones (“v1 release”, “before billing rewrite”).
Tag a revision
Add tags (“stable”, “demo-ready”). Easier to find later than scrolling timestamps.
Schema changes and rollbacks
Important caveat: rolling back code does not undo schema migrations. If revision #140 added apriority field to tasks, rolling back to #139 leaves the field in the database — the new code path that uses it is gone, but the field stays.
For most cases this is fine (the field becomes orphaned but harmless). For destructive schema changes (renaming tables, dropping fields with data), rollback requires a separate cleanup mutation. vly will warn you when a rollback is “schema-incompatible” and explain what to do.
Limits
After the retention window, older revisions are archived (still inspectable, but rolling back may take longer).
Related
Branching
Experiment safely from any revision.
Undo / redo
The keyboard-driven sibling.
GitHub integration
Sync revisions to a Git repo.
