Skip to content

v0.4.0

Choose a tag to compare

@github-actions github-actions released this 26 Jul 06:17

Your database is now about half the size. Same features, same search.

The full-text index used to keep its own uncompressed copy of every
command's output (that's just how a default fts5 table works) — on an
output-heavy 5,000-command test DB that shadow copy was 67 MB of a
151 MB file. commands_fts is now an external-content
fts5 table that reads through a view which decompresses the zstd'd
plain text on demand, so text is stored exactly once, compressed.
snippet()/highlight semantics are unchanged.

Measured on an identical 1,000-command workload (both compacted):
28.2 MB → 14.9 MB (−47%). Query latency stays in the 10–30 ms range.
Full story + war stories in docs/how-it-records.md.

Migration: automatic and one-time on first use — the 151 MB test DB
converted in place to 71.6 MB in ~15 s; small day-to-day DBs convert in
well under a second.

Also in this release

  • backscroll prune now runs fts5 optimize before VACUUM — a
    fully-pruned index otherwise keeps its full size on disk (measured:
    a 71 MB DB with 0 rows). Pruning everything now shrinks the file to ~50 KB.
  • New backscroll doctor --reindex: rebuilds the search index from the
    stored raw outputs if it ever looks incomplete.

Downgrade note: if you run a pre-0.4 binary against a migrated DB,
recording, list, show, and stats keep working, but search errors
until you're back on ≥ 0.4.0 (the index now needs a decompress function
only newer binaries register). If you mixed versions for a while, run
backscroll doctor --reindex once afterwards.


Install: brew install soren-achebe/tap/backscroll · deb/rpm/tarballs below · go install github.com/soren-achebe/backscroll@latest