Releases: xdu-project/xdu
Releases · xdu-project/xdu
Release list
xdu v0.5.2
What's Changed
feature
- Ship portable Linux baseline for RHEL8/9 (#24) — gnu tarballs build in
manylinux_2_28containers (glibc 2.28 floor) with a fail-closed guard; HPCCM recipe returns tobookworm-slim - Add HPCCM recipe and simplified containers (#23)
- Emit timestamped severity-tagged indexer logs off-TTY (#22)
- Move repo references to xdu-project org
fix
- Honest crawl progress on huge trees (#21)
docs
- Redesign access-scoped queries around a served index
- Order roadmap with baseline first, S3 before bulk ops
xdu v0.5.1
What's Changed
Fix:
- All four binaries answer
-V/--versionfromCargo.toml(#18)
Harness (factory self-improvement, no product impact):
- Slug-affecting questions now precede branch creation
- Promoted
issues/file commits with the GOAL - Expansion-safe
--verify-fileretune path forset_phase.py - Release bump confirms via
xdu --version - Approving verdicts retire the blocked reason
xdu v0.5.0
xdu v0.5.0
- Eight-column index: each row now carries owner, group, permission bits, mtime, and ctime behind format version 2.
xdu-findgains--owner,--group,--mode, and--mtime-older/newer-thanfilters, and csv/json output carries the new fields (#17). - Indexes stamp a format version and all readers refuse an index whose version they do not understand instead of misreading its rows; the remedy is a re-crawl (#16).
- Glob is now the default path-match dialect in
xdu-find(#15). - In-list file preview overlay in
xdu-view(#14). - Packaging: RPM spec for EL-based systems (#12); container build restored with an explicit C++ toolchain (#13).
v0.4.2
Patch release. Headline: the container build is restored — ghcr.io/glentner/xdu:latest
republishes from this version with all four binaries, including xdu-rm.
Fixes
- Restore container build with explicit C++ toolchain (#13) — the slim builder ships no
tool literally namedc++, so the bundled-DuckDB compile aborted; the builder now installs
g++with the requirement stated at the install, and both build jobs have timeout headroom. - Make
xdu-rm --limitselection deterministic (ORDER BYon every limited deletion). - Statically link the Parquet reader;
rm_testsdrives the built binary (no more stale-binary
green suite, no DuckDB extension autoinstall on air-gapped nodes). - Make the man-page literal gate assert content, not layout (whitespace-normalized matching;
duplicated literals asserted by count).
Refactor
- Harden and optimize the index-build crawl (#9).
- Remove
cruft.shexample script.
Docs
- Repurpose
ROADMAP.mdinto a forward-looking feature roadmap. - Record the CI-red root cause and the stale-binary test defect.
- Add a Prose and comments directive with commit widths.
Harness
- Adopt spec-driven software factory; commit-msg hook reflows bodies to 80 columns.
- Review-gate hardening (human sign-off, build-state cleanliness, CI-rollup gating, and more —
see the[harness]commits since v0.4.1).
v0.4.1
Bug Fixes
- Root partition display: Files from the
__root__partition (files sitting directly in the scanned top-level directory) are now merged as individual entries alongside partition directories in xdu-view, instead of appearing as a confusing__root__entry- Root files display as non-directory entries (no ▸ prefix) and cannot be entered
- Tree mode file preview works correctly for root files
- Both list and tree modes correctly exclude
__root__from partition aggregation
Housekeeping
- Remove stale
#[allow(dead_code)]onDirEntry.path(used in tree mode) - Update
--sorthelp text to includeage-asc/age-descmodes - Simplify
query_root_files()to useQueryFilters::to_full_where_clause()
Full Changelog: v0.4.0...v0.4.1
v0.4.0
What's New
Interactive Tree View (Miller Columns)
- New tree view mode (
tto toggle) with macOS Finder-style Miller columns for navigating the directory hierarchy - Adaptive column count: min 20px wide, max 5 columns, scales with terminal width
- All 3 data columns (size, count, atime) rendered in tree mode with dynamic widths
- Mode switch preserves position — switching between list and tree restores selection context
g/Gkeybindings for jump-to-top/bottom in both list and tree modes
File Preview Pane with Streaming Pager
- Selecting a file in tree view shows type, size, atime, and a plain-text content preview
- Streaming pager with sliding-window buffer (100K lines) replaces the static 64KB preview
- Pager mode activated with
<space>/→/Enter; less-like navigation (j/k,d/u,g/G) - Status line shows global position, total loaded lines, and EOF indicator
File Type Detection
- Multi-layer heuristic detection: magic bytes (with ELF/Mach-O enrichment), shebang parsing, text sub-type sniffing (JSON/XML content, 60+ extension mappings), and UTF-8/binary fallback
- Fixed
text/*MIME types falling through to binary instead of rich detection layers
Bug Fixes
- Strip ANSI escape sequences from file preview to prevent rendering artifacts
- Fix stale content lingering in preview pane when switching to shorter files
- Fix premature EOF in streaming pager caused by partial buffer reads
Build & Packaging
- Static
libstdc++linking for portable Linux binaries (with RPATH override for HPC environments)
Full Changelog: v0.3.0...v0.4.0
v0.3.0
What's New
Shared-Pool Concurrent Crawler
- Refactored crawler to use a single shared rayon thread pool across all jwalk walkers
- C driver threads consume partition work items; N rayon pool threads handle directory reads via work-stealing
- Thread budget: N pool + C drivers + 1 main
Progress Display Enhancements
- Per-partition crawl speed (1-second rolling window) and peak speed
- Global aggregate speed and peak on the summary bar
- Driver thread ID suffix (
[T0],[T1], etc.) on active partition bars
CLI Improvements
--apparent-size: report file length instead of disk usage--block-size/-k: round sizes up to filesystem block size (useful for NFS)XDU_JOBSandXDU_INDEXenvironment variable fallbacks- Atomic
.partial→.parquetfinalization with stale chunk pruning
Documentation
- Updated WARP.md and README.md to reflect current architecture
- Created ROADMAP.md with 8-phase development plan
v0.2.2
v0.2.1
Fixes
- Fix clippy warnings for CI compliance
- Use
&Pathinstead of&PathBufin function signatures - Use
std::io::Error::other()(Rust 1.92+) - Remove needless borrows in test code
Documentation
- Add pre-release checklist to WARP.md to prevent future CI failures
- Update WARP.md with xdu-rm documentation
v0.2.0
What's New
xdu-rm: Bulk File Deletion
New command for enforcing retention policies at scale. Delete millions of stale files with parallel processing.
# Delete files not accessed in 60 days with 16 threads
xdu-rm -i /var/lib/xdu/home --older-than 60 -j 16 --forceKey features:
- Parallel deletion via
-j/--jobs(default: 4 threads) - Safe mode (
--safe): Re-stats files before deletion to protect recently accessed files - Dry-run (
--dry-run): Preview what would be deleted - All query filters from xdu-find:
--pattern,--partition,--min-size,--max-size,--older-than,--newer-than
Safe Mode
The --safe flag protects against stale index data. When enabled, xdu-rm verifies each file's current atime/size before deletion:
# User accessed file after indexing? It won't be deleted.
xdu-rm -i /var/lib/xdu/home --older-than 60 --safe --forceDocumentation
- Comprehensive README section for xdu-rm
- Common workflow examples for retention policies
- Guidance on when to use
--safemode
Testing
- 15 new integration tests covering all xdu-rm functionality
- Critical test: safe mode correctly protects recently accessed files