data-peek
Features

Time Machine

Snapshot every SELECT, scrub back through past runs, and diff any two results

Time Machine

Every successful SELECT in a query tab is snapshotted locally — automatically, no setup. Scrub back through past runs, view any old result read-only, and diff any two runs cell by cell. Run a query before a migration, run it after, diff the two: a before/after audit that used to need a scratch file and discipline.

Opening the Timeline

Press Cmd+Shift+H (macOS) / Ctrl+Shift+H (Windows/Linux), or click the Time Machine button in the editor toolbar. A timeline strip appears above the results grid with one chip per captured run, showing the capture time and row count, plus a row-count sparkline across runs.

  • Click a chip to view that run exactly as it was — the grid switches to read-only with a banner: run time, row count, duration
  • Click Live to come back to the current result

Runs of the “same” query share a timeline: SQL is grouped by a normalized fingerprint, so WHERE id = 1 and WHERE id = 2 land in one history.

Diffing Two Runs

Select a run, then Option-click (or Shift-click) another. data-peek diffs them with the same cell-level engine that powers Watch Mode:

  • Changed cells highlight amber with the old value preserved
  • Added rows band green
  • Removed rows are counted in the banner

The diff banner counts what moved (+6 added · −2 removed · 14 cells changed) and says how rows were matched: keyed by <primary key columns> when a key could be resolved, or keyed by position as a fallback.

What Gets Captured

Only deliberate, single-statement, successful SELECT runs in query tabs. These never pollute the timeline:

  • Watch Mode ticks
  • Notebook cells
  • AI assistant runs
  • Table-preview page flips

Works with all supported databases — PostgreSQL, MySQL, SQL Server, and SQLite.

Privacy and Storage

Snapshots are privacy-aware by construction:

  • Masked columns are stored redacted. Columns matching mask rules (email, password, ssn, token by default) are written as [MASKED] — redacted before rows are ever persisted. See Data Masking.
  • Storage is capped. 2,000 rows per snapshot, 50 runs per query, and a 512 MB global budget with oldest-first eviction. The database self-vacuums.
  • Local only. Snapshots live in a local SQLite database on your machine; nothing leaves it.

Values are normalized once at capture (timestamps → ISO strings, binary → hex preview) so a diff between two snapshots never lies about a timestamp cell.

Settings

Settings → Time Machine shows exactly what’s on disk — run count, query count, and bytes used — with:

  • Snapshot query results - Global toggle for capture
  • Delete all snapshots - One-click wipe (click twice to confirm)

Truncated snapshots are marked in the timeline: a chip captured from a 100,000-row result notes that the first 2,000 rows were stored.

On this page