Skip to content

Releases: xdu-project/xdu

xdu v0.5.2

Choose a tag to compare

@glentner glentner released this 13 Sep 20:26
v0.5.2
7bc476e

What's Changed

feature

  • Ship portable Linux baseline for RHEL8/9 (#24) — gnu tarballs build in manylinux_2_28 containers (glibc 2.28 floor) with a fail-closed guard; HPCCM recipe returns to bookworm-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

Choose a tag to compare

@glentner glentner released this 09 Sep 20:10
v0.5.1
3461eb3

What's Changed

Fix:

  • All four binaries answer -V/--version from Cargo.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-file retune path for set_phase.py
  • Release bump confirms via xdu --version
  • Approving verdicts retire the blocked reason

xdu v0.5.0

Choose a tag to compare

@glentner glentner released this 08 Sep 21:09
v0.5.0
f03a41f

xdu v0.5.0

  • Eight-column index: each row now carries owner, group, permission bits, mtime, and ctime behind format version 2. xdu-find gains --owner, --group, --mode, and --mtime-older/newer-than filters, 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

Choose a tag to compare

@glentner glentner released this 07 Sep 01:24
v0.4.2
e9c4f06

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 named c++, 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 --limit selection deterministic (ORDER BY on every limited deletion).
  • Statically link the Parquet reader; rm_tests drives 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.sh example script.

Docs

  • Repurpose ROADMAP.md into 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

Choose a tag to compare

@glentner glentner released this 16 Feb 06:10
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)] on DirEntry.path (used in tree mode)
  • Update --sort help text to include age-asc/age-desc modes
  • Simplify query_root_files() to use QueryFilters::to_full_where_clause()

Full Changelog: v0.4.0...v0.4.1

v0.4.0

Choose a tag to compare

@glentner glentner released this 16 Feb 05:44
v0.4.0

What's New

Interactive Tree View (Miller Columns)

  • New tree view mode (t to 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/G keybindings 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

Choose a tag to compare

@glentner glentner released this 15 Feb 23:20
v0.3.0
c73f328

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_JOBS and XDU_INDEX environment variable fallbacks
  • Atomic .partial → .parquet finalization 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

Choose a tag to compare

@glentner glentner released this 18 Jan 04:31
v0.2.2
5719448

Fixes

  • Fix release workflow for x86_64 Linux musl cross-compilation
  • Install x86_64-linux-musl-cross toolchain for C++ support (required by DuckDB)
  • Include xdu-rm binary in release archives

v0.2.1

Choose a tag to compare

@glentner glentner released this 18 Jan 04:27
v0.2.1
d0a7400

Fixes

  • Fix clippy warnings for CI compliance
  • Use &Path instead of &PathBuf in 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

Choose a tag to compare

@glentner glentner released this 18 Jan 04:12
v0.2.0
2ad977b

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 --force

Key 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 --force

Documentation

  • Comprehensive README section for xdu-rm
  • Common workflow examples for retention policies
  • Guidance on when to use --safe mode

Testing

  • 15 new integration tests covering all xdu-rm functionality
  • Critical test: safe mode correctly protects recently accessed files