Skip to content

V1.3 - #4

Merged
Par-python merged 3 commits into
mainfrom
v1.3
May 15, 2026
Merged

V1.3#4
Par-python merged 3 commits into
mainfrom
v1.3

Conversation

@Par-python

Copy link
Copy Markdown
Owner

Summary

v1.3.0 release. Four user-facing additions plus a hash-cache speedup. Public API is preserved.

  • --sort / --reverse on the default scan. Sort the category breakdown by size (default), count, stale-size, stale-count, or name. Scan-only flags, 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. ~40× speedup on warm re-scans in local testing.
  • bigfiles audit subcommand. Severity-coded "what's eating your disk" view — heaviest category, top extensions, installer junk, top-N concentration, stale share. Reuses the existing scan + analyzer pipeline; no new flags.
  • TUI: / to filter and o to reveal. / enters filter mode (live substring match on the current view). Esc cancels, Enter keeps. Filter clears on ascend/descend. o reveals the selected entry in the OS file manager (open -R on macOS, explorer /select, on Windows, xdg-open on Linux). Existing keybindings unchanged.
  • README refreshed: new sections for audit, the dupes cache, expanded TUI keybindings, and the new flag rows.
  • Cargo.toml: version → 1.3.0.

Why

  • --sort is a small, high-leverage UX win — category-by-count and alphabetical views are common asks.
  • The dupes cache turns bigfiles dupes from an occasional-use tool into something you can run frequently. The user-visible behavior is identical; the runtime is just much faster on warm cache.
  • audit lowers the cognitive cost of the first run. Most people don't know what to look for; audit answers "what should I care about?" in five lines.
  • TUI filter + reveal are the two missing affordances a daily-driver browser needs.

Deliberately not in this release

  • TUI in-place delete and dupes-in-subtree views. Both touch destructive or new scan logic and deserve their own design pass with confirmation flows. Tracked separately.
  • bigfiles audit --json. Easy to add later; out of scope for v1.3.

Backward compatibility

Public API preserved:

  • analyzer::analyze(...) — unchanged
  • dupes::find(...) — unchanged

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, Insight, Severity}
  • New CLI flags on the default scan (--sort, --reverse) and on dupes (--no-cache, --clear-cache)
  • New subcommand: audit

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.

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 (~40× faster); --no-cache disables it; --clear-cache wipes
  • Smoke: bigfiles audit ~/Documents/bigfiles produces severity-coded output with appropriate insights
  • Smoke (TUI): / filters live, Esc clears it, Enter keeps it; o opens the OS file manager on the selected entry

After merge

  • Tag v1.3.0 and publish to crates.io (cargo publish).
  • Reply to DD_ZORO_69 on the Reddit thread with the walker-benchmark numbers (already drafted earlier in the v1.3 work).
  • Consider a short r/rust follow-up post highlighting the audit subcommand and the dupes-cache speedup — both are demoable and tell a clear story.

@Par-python
Par-python merged commit dad775b into main May 15, 2026
4 checks passed
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