Skip to content

V1.3 - #3

Closed
Par-python wants to merge 2 commits into
mainfrom
v1.3
Closed

V1.3#3
Par-python wants to merge 2 commits into
mainfrom
v1.3

Conversation

@Par-python

Copy link
Copy Markdown
Owner

Summary

Three features toward v1.3, ahead of the README refresh and version bump.

  • --sort / --reverse on the default scan. Sort the category breakdown by size (default), count, stale-size, stale-count, or name. Scan-only, same warning rule as --top / --json.
  • Persistent BLAKE3 hash cache for bigfiles dupes. Full-file hashes are cached to the OS cache dir, keyed by (path, mtime_ns, size) and hash-algorithm-tagged. --no-cache skips it; --clear-cache wipes it before running. ~40x speedup on warm re-scans in local testing.
  • bigfiles audit subcommand. Human-facing "what's eating your disk" view that surfaces 4–6 severity-ranked insights (heaviest category, top extensions, installer junk, top-N-file concentration, stale concentration). Reuses the existing scan + analyzer pipeline; no new flags.

Why

  • --sort is a small, high-leverage UX win — users have asked for category-by-count and alphabetical views.
  • The dupes cache turns bigfiles dupes from an occasional-use tool into something you can run frequently without paying the full BLAKE3 cost every time.
  • audit lowers the cognitive cost of the first run. Most people don't know what they're looking for; audit answers "what should I care about?" in five lines.

Backward compatibility

Public API is preserved. analyzer::analyze and dupes::find keep their original signatures. New surface added alongside:

  • analyzer::sort_summaries(&mut [CategorySummary], SortKey, reverse)
  • dupes::find_with_cache(&[FileEntry], min_size, &HashCache)
  • bigfiles::cache::HashCache (load / get / insert / save / empty)
  • bigfiles::audit::analyze + render

License note

Added MPL-2.0 to deny.toml's allow list. The cache module uses the dirs crate, which transitively depends on option-ext (MPL-2.0). MPL-2.0 is file-level copyleft and fully compatible with this project's AGPL-3.0-or-later license.

Test plan

  • cargo fmt --all -- --check — clean
  • cargo clippy --all-targets -- -D warnings — clean
  • cargo build --release — clean
  • cargo test --release — 53 pass (was 41 on main; +12 new tests across analyzer, cache, audit)
  • cargo deny check bans licenses sources advisories — clean
  • Smoke: bigfiles --sort name / --sort count / --reverse reorder the category table as expected
  • Smoke: second bigfiles dupes run reads the cache (~40x faster), --no-cache disables it, --clear-cache wipes
  • Smoke: bigfiles audit ~/Documents/bigfiles produces severity-coded output with appropriate insights

Still to come before v1.3 release

  • Feature 4: TUI improvements
  • README refresh: new flags, new subcommand, new behavior notes
  • Version bump in Cargo.toml

@Par-python Par-python closed this May 15, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant