Skip to content

Project History & Archives

Before every generation, Whittl snapshots your entire project to archives/vN_<timestamp>/. If something goes wrong — the AI broke a feature, the autofix spiraled, you hate the new direction — you restore the last good version with two clicks. Nothing is permanently lost.

How it works

Every time the AI is about to modify your project, Whittl:

  1. Creates a fresh archive folder: archives/v7_20260417_143022/
  2. Copies all tracked files into it (code, assets, data, metadata)
  3. Writes a .metadata file with: the user prompt, timestamp, backend used, file diff summary
  4. Proceeds with generation

If generation succeeds, you have a clean snapshot of where you were. If it fails or you hate the result, the archive is there.

Accessing history

Click the History tab in the preview panel (alongside Code / Assets / Terminal / Help).

You see every archive newest-first, with version number, line count, file count, and timestamp:

Whittl Project Archives panel showing nine snapshots v1 through v9, each with line count, file count, and timestamp. The newest entry v9 also shows the user prompt "works on tablet" that triggered that generation.

Each entry shows the prompt that led to the generation when one was given, so you can pick the right rollback point by memory rather than by archive number.

Restoring

Click Restore on any entry:

  1. Whittl takes a fresh snapshot of the CURRENT state first (so Restore is itself reversible)
  2. Copies all files from the selected archive back into the project root
  3. Reloads the editor

You've rolled back. Old archives aren't deleted — you can restore forward again if you change your mind.

What's archived

Everything inside the project folder except archives/ itself (no recursive archiving):

  • All .py files
  • assets/ — images, sounds, fonts
  • data/ — runtime state (SQLite DBs, saved games, user data)
  • project.json — metadata
  • README.txt
  • ui/, core/, etc. — all subfolders

What's NOT archived

  • archives/ (obviously)
  • __pycache__/ folders (regenerated on next run)
  • .venv/ if you use per-project virtual environments (recreated by pip)
  • External assets outside the project folder

Pruning old archives

Archives add up. A project edited for a week will have ~50 archives taking your project size times 50.

Archives are plain folders — delete archives/vN_... entries directly in your file manager to reclaim space. Safe: you just lose those specific rollback points, everything else stays intact. Keep the newer ones if you think you might want to roll back.

If your project is mostly text (a few hundred KB of Python), 50 archives is ~20 MB. Not usually worth pruning. If you're handling large media assets in assets/, prune more aggressively.

Archives vs Undo

  • Undo (Ctrl+Z) — reverses edits within the current file. Character-level history. Standard editor undo.
  • Archives — reverses entire generations across all files. Point-in-time rollback.

Use Undo for "I just typed something wrong." Use Archives for "the last generation went sideways."

Archives vs Templates

  • Archives — automatic, per-project, time-based snapshots inside the project itself.
  • Templates — manual, distributable, versioned exports for reuse in new projects. See Sharing as a Template.

"Restore Original" after a failed auto-fix

If an auto-fix cycle exhausts its rounds without getting the code green, Whittl offers a chat prompt with two buttons: Restore Original / Keep Current. "Original" here means the backup taken just before this one auto-fix cycle started — not v1 of the project.

  • Restore Original — roll back to the pre-cycle state. The broken auto-fix attempt is discarded.
  • Keep Current — keep the (still broken) code as-is. Useful if you want to inspect what went wrong or hand-fix it yourself.

This prompt only appears in the specific "auto-fix gave up" flow. For general rollback across any number of generations, use the History panel described above.

What's next