History
Every change to your accounts, categories, payees, transactions, transaction splits, recurring templates, financial institutions, and reports is logged in a per-table history. Each insert, update, and delete is captured automatically by a database trigger — no manual snapshot needed.
What you see here
Each row is one change. From left to right:
- I / U / D — Insert, Update, or Delete
- Table · label — what changed (e.g. "Payee · Bakery")
- Time — when the change happened, relative to now
Rows are sorted newest first. Use the Older → / ← Newer buttons to page through.
Restoring
Tap any row to open the restore prompt. You'll see:
- The exact timestamp the new book will mirror
- A summary of the change you tapped
Confirming creates a new book named <source>-restored-<date>-<time>.db with the data as it was at that timestamp. The current book is not touched — you can keep working in it, or switch to the restored copy from the prompt.
The restored book inherits the source's password (if any) automatically.
What's preserved
- Tracked tables (Account, Category, Payee, Transaction, …) get their "as-of" state.
- Reference tables (Currency, AccountType, Settings, exchange rates, …) are copied from the source's current state — they rarely change and aren't useful to roll back.
- Dangling references are preserved: if a Category was deleted between the restore timestamp and now, the restored Transaction keeps its reference to that ID. The UI shows the placeholder text for orphans.
- Running balances are recomputed from scratch — the stored value isn't tracked in history (it's derived).