v0.4.0
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 prunenow runs fts5optimizebeforeVACUUM— 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