Skip to content

Tags: Byron/dua-cli

Tags

dua-core-v2.41.1

Toggle dua-core-v2.41.1's commit message

Unverified

This tag is not signed, but one or more authors requires that any tag attributed to them is signed.
The first release of the directory walk implementation of the `dua-cl…

…i`, to allow its usage in other places as well.

### Commit Statistics

 - 2 commits contributed to the release.
 - 0 commits were understood as [conventional](https://www.conventionalcommits.org).
 - 0 issues like '(#ID)' were seen in commit messages

### Commit Details

 * **Uncategorized**
    - Prepare changelog prior to `dua-core` release (965ce7c)
    - Extract filesystem walker into dua-lib (3b1c8cf)

v2.41.1

Toggle v2.41.1's commit message

Unverified

This tag is not signed, but one or more authors requires that any tag attributed to them is signed.
A one-line change that makes all the difference: Windows TUI performa…

…nce isn't sluggish anymore as the drawing is now buffered!

### Bug Fixes

 - buffer terminal frame output

### Commit Statistics

 - 5 commits contributed to the release.
 - 1 day passed between releases.
 - 1 commit was understood as [conventional](https://www.conventionalcommits.org).
 - 0 issues like '(#ID)' were seen in commit messages

### Commit Details

 * **Uncategorized**
    - Prepare changelog for upcoming release (f18921c)
    - Merge pull request #361 from larsch/fix/buffer-tui-output (c05f608)
    - Buffer terminal frame output (bccddb7)
    - Merge pull request #360 from Byron/windows-performance (f73cc51)
    - Preserve Windows verbatim paths (381824f)

v2.41.0

Toggle v2.41.0's commit message

Unverified

This tag is not signed, but one or more authors requires that any tag attributed to them is signed.
There are two major features: 30x and more performance on Windows, an…

…d `--ignore-from <file>` support.

This makes this release the best one yet, and I do hope that I can last a week or more until the next one.

### New Features

 - add --ignore-from to exclude paths with gitignore-style patterns
   Reads gitignore-syntax patterns from one or more files and leaves everything
   they match out of the report, in both aggregate and interactive mode. This is
   the equivalent of rsync's --exclude-from and restic's --exclude-file, so the
   same pattern file can answer "how much of this would actually be backed up?".
   
   Matching is powered by gix-ignore, which is already a dependency, so negation,
   anchoring, `**` and directory-only patterns all behave exactly like Git.
   Excluded directories are pruned from the walk rather than only hidden, and
   excluded top-level paths are dropped before the walk so they are absent from
   the report instead of appearing as empty.

### Bug Fixes

 - propagate background root device errors
   <!-- agent -->
   Background traversal replaced failed root-device lookups with device ID
   zero. Readable root metadata could then be rejected as cross-device while the
   traversal incorrectly retained a successful error count.
   
   Skip roots whose lookup fails and carry their per-root errors in the traversal
   completion event, restoring the previous statistics and exit status. Keep
   interleaved overlapping and duplicate roots isolated by including each root path
   Arc allocation in private directory-map keys while preserving public traversal
   event types.
 - propagate aggregate root device errors
   <!-- agent -->
   A failed root-device lookup was replaced with device ID zero after the parallel
   traversal rewrite. For a dangling symlink, symlink metadata remained readable
   but failed the device check, hiding the initialization error and producing a
   successful exit status.
   
   Count the lookup failure on its root, mark that root complete for ordered
   output, and omit it from traversal. Flush completed roots after traversal
   because failed roots emit no completion event.
   
   Keep all roots in the shared
   parallel traversal pool; when hard links are deduplicated, per-root attribution
   is scheduling-dependent while the total remains correct, in the name of performance.

### Commit Statistics

 - 14 commits contributed to the release.
 - 2 days passed between releases.
 - 3 commits were understood as [conventional](https://www.conventionalcommits.org).
 - 1 unique issue was worked on: #302

### Commit Details

 * **#302**
    - Avoid per-entry Windows metadata queries (9831b1e)
 * **Uncategorized**
    - Prepare changelog prior to release (2b78d30)
    - Merge pull request #359 from Byron/windows-performance (bdee013)
    - Review (d784e02)
    - Simplify platform-specific walker entries (f94fe6d)
    - Address CI comment about reader type complexity (542e36a)
    - Use Result::is_ok_and in entry checks (29b9c8c)
    - Optimize Windows directory metadata scheduling (e36a66d)
    - Merge pull request #358 from pelazas/feat/ignore-from (1db53ae)
    - Review (af83aa5)
    - Add --ignore-from to exclude paths with gitignore-style patterns (27d16f0)
    - Merge pull request #357 from Byron/crossdev-fix (d7b1503)
    - Propagate background root device errors (b4d944e)
    - Propagate aggregate root device errors (01d7e00)

v2.40.1

Toggle v2.40.1's commit message

Unverified

This tag is not signed, but one or more authors requires that any tag attributed to them is signed.
Even more performance, up to 15%. That's it now, trying to hit 1 week…

… without a release ;).

### Bug Fixes

 - avoid aggregate progress flicker
   <!-- agent -->
   Track whether aggregate progress has actually been rendered before clearing the
   terminal line. Keep sorted multi-root progress visible until final output, while
   clearing before immediate unsorted results, and cover fast roots that previously
   emitted repeated invisible erase sequences.

### Performance

 - parallelize filesystem traversal
   <!-- agent -->
   Split completion-order directory entries into small stealable metadata jobs
   and use idle-aware relay waking with LIFO local queues. Submit all top-level
   roots to the same worker pool, carrying a root index through descendant jobs and
   result batches so aggregate and interactive traversal retain per-root accounting
   without serial barriers.
   
   Also, track pending work per root and emit completion events after all of a
   root's batches are delivered. Flush the longest completed input-order prefix so
   --no-sort prints results immediately without serializing the shared worker pool.

### Commit Statistics

 - 7 commits contributed to the release over the course of 1 calendar day.
 - 1 day passed between releases.
 - 2 commits were understood as [conventional](https://www.conventionalcommits.org).
 - 0 issues like '(#ID)' were seen in commit messages

### Commit Details

 * **Uncategorized**
    - Prepare next release (8163e0e)
    - Merge pull request #356 from Byron/performance (fea714d)
    - Parallelize filesystem traversal (4dba3ad)
    - Avoid aggregate progress flicker (3b7415b)
    - Upgrade ratatui to 0.30.2 (995571d)
    - Upgrade byte-unit to 5.2.5 (f113e06)
    - Upgrade compatible dependencies (86b5db8)

v2.40.0

Toggle v2.40.0's commit message

Unverified

This tag is not signed, but one or more authors requires that any tag attributed to them is signed.
The headline feature is 40% more scanning speed in my particular scen…

…ario. More cores on Linux should now scale much better as well, so I wouldn't be surprised if it's even faster for you.

### New Features

 - Replace jwalk with a work-stealing directory walker for up to 40% more scan speed
   <!-- agent -->
   Replace jwalk and Rayon with a crate-local walker built on crossbeam-deque
   and standard-library threads. Directory reads and metadata collection run on
   stealable worker queues, while a bounded channel limits completed batches held
   ahead of the iterator. The walker never follows symlinks and no longer sorts
   entries because consumers sort their final results where needed.
   
   Provide two delivery modes on the shared implementation: aggregate scans and
   recursive deletion use completion order for maximum throughput and continuous
   progress; interactive traversal uses parent-first delivery so ancestor sizes
   and entry counts grow throughout the scan. Recursive deletion remains parallel
   through scoped standard-library workers.
   
   Raise the macOS default from three to eight filesystem workers based on
   warm-cache measurements.

### Commit Statistics

 - 4 commits contributed to the release.
 - 1 day passed between releases.
 - 1 commit was understood as [conventional](https://www.conventionalcommits.org).
 - 0 issues like '(#ID)' were seen in commit messages

### Thanks Clippy

[Clippy](https://github.com/rust-lang/rust-clippy) helped 1 time to make code idiomatic. 

### Commit Details

 * **Uncategorized**
    - Prepare changelog prior to release (5c9976f)
    - Merge pull request #355 from Byron/workstealing (0b21b22)
    - Thanks clippy (9e36f03)
    - Replace jwalk with a work-stealing directory walker for up to 40% more scan speed (8ada93f)

v2.39.1

Toggle v2.39.1's commit message

Unverified

This tag is not signed, but one or more authors requires that any tag attributed to them is signed.
This release is merely to allow attestations to be used, and you shou…

…ld be able to validate the binary origin with:

- `gh attestation verify ./dua-v2.39.1-aarch64-apple-darwin.tar.gz --repo Byron/dua-cli`

### Commit Statistics

 - 4 commits contributed to the release.
 - 2 days passed between releases.
 - 0 commits were understood as [conventional](https://www.conventionalcommits.org).
 - 0 issues like '(#ID)' were seen in commit messages

### Commit Details

 * **Uncategorized**
    - Prepare next release with attestations (953a87a)
    - Merge pull request #354 from Vam-si-krish/ci/release-provenance (2d11eb9)
    - Review (ddfd0fb)
    - Add provenance attestations for release archives (f374d9c)

v2.39.0

Toggle v2.39.0's commit message

Unverified

This tag is not signed, but one or more authors requires that any tag attributed to them is signed.
The main feature this release is parallel deletion, both for collecti…

…ng files to be deleted as well as the deletion itself. On my local disk, it now reaches 144k files/s overall deletion performance.

### New Features

 - delete files in parallel
   Recursive deletion now uses the same worker count selected with `--threads` for
   the initial filesystem scan, to accelerate the collection of files to be deleted,
   as well as the deletion of files.
   
   <!-- agent -->
   When marked directories are deleted, `dua` now:
   
   1. walks the selected tree without (following symbolic links as usual)
   2. collects regular files and symbolic links;
   3. removes those entries *across the configured workers*;
   4. removes directories from deepest to shallowest after their contents are gone on *a single thread*.
   
   A value of `1` keeps deletion effectively serial. Larger values allow
   independent file removals to overlap, which is most useful for large directory
   trees or filesystems with concurrent metadata operations.

### Bug Fixes

 - open errors and cleanup/gitignored footer labels

### Refactor

 - use jwalk for parallel, symlink-safe deletion
   Replace the hand-rolled stack traversal in delete_directory_recursively
   with a jwalk WalkDir (follow_links=false, skip_hidden=false). This is
   the same walker the rest of dua uses for scanning, so deletion now
   benefits from parallel traversal on multi-core machines.
   
   Behaviour preserved:
   - Symlinks are removed without following them (remove_file on the link).
   - Directories are removed deepest-first so each remove_dir sees an
   empty directory.
   - Error counting and byte accounting unchanged.
   
   Adds unit tests covering: single file, nested tree, symlink safety,
   and missing-path error reporting.

### Test

 - Make traversal tree tests filesystem-independent
   That way, tests will work locally.

### Commit Statistics

 - 10 commits contributed to the release over the course of 4 calendar days.
 - 8 days passed between releases.
 - 4 commits were understood as [conventional](https://www.conventionalcommits.org).
 - 0 issues like '(#ID)' were seen in commit messages

### Commit Details

 * **Uncategorized**
    - Prepare changelog for release (254ea4f)
    - Merge pull request #353 from Solaris-star/fix/43-jwalk-parallel-deletion (0f55a5c)
    - Delete files in parallel (b04f9f3)
    - Review (cd82444)
    - Make traversal tree tests filesystem-independent (48fb6df)
    - Use jwalk for parallel, symlink-safe deletion (7e9d0a8)
    - Merge pull request #352 from l0rush1/main (496bd78)
    - Rustfmt annotation_message match arm (3dba5a4)
    - Open errors and cleanup/gitignored footer labels (f2a957a)
    - Fix: interactive exit code and footer entries/s (1b3f60d)

v2.38.1

Toggle v2.38.1's commit message

Unverified

This tag is not signed, but one or more authors requires that any tag attributed to them is signed.
This release fixes a long-standing bug where `NO_COLOR=1` would make …

…all styling disapear, including

the selection indicator itself. Now it's usable, finally.

### Bug Fixes

 - only strip colors when `NO_COLOR` is enabled

### Commit Statistics

 - 3 commits contributed to the release.
 - 6 days passed between releases.
 - 1 commit was understood as [conventional](https://www.conventionalcommits.org).
 - 1 unique issue was worked on: #238

### Commit Details

 * **#238**
    - Only strip colors when `NO_COLOR` is enabled (ad19f3f)
 * **Uncategorized**
    - Prepare changelog prior to release (9c89430)
    - Merge pull request #351 from Byron/fix-colors (9c9364d)

v2.38.0

Toggle v2.38.0's commit message

Unverified

This tag is not signed, but one or more authors requires that any tag attributed to them is signed.
### New Features

 - notify after interactive work when unfocused
   Interactive scans, refreshes, deletion, and trash operations can take long
   enough that users leave the terminal, but dua previously had no way to signal
   completion without exiting the TUI.
   
   Track terminal focus events and emit sanitized OSC 777 notifications only when
   the terminal is unfocused. Include concise entry, byte, duration, and error
   statistics, and add a notifications config section whose scan_finished and
   delete_finished switches default to true.

### Commit Statistics

 - 7 commits contributed to the release over the course of 6 calendar days.
 - 1 commit was understood as [conventional](https://www.conventionalcommits.org).
 - 1 unique issue was worked on: #347

### Commit Details

 * **#347**
    - Notify after interactive work when unfocused (d800f22)
 * **Uncategorized**
    - Merge pull request #348 from Byron/notify-when-done-and-unfocussed (92f4502)
    - Merge pull request #346 from rlex/apple_silicon_ci (0c81cb8)
    - Review (08d960e)
    - Arm64 osx gh build (2d8b45f)
    - Merge pull request #345 from luhenry/main (11892d5)
    - Add release for linux-riscv64 (a90b5d8)

v2.37.1

Toggle v2.37.1's commit message

Unverified

This tag is not signed, but one or more authors requires that any tag attributed to them is signed.
### Bug Fixes

 - degrade entries title on narrow terminals
   improve the interactive top-bar so narrow terminal
   sizes degrade gracefully. Statistics should disappear when the current path
   needs the space, and the path should compact by removing the fewest consecutive
   middle components needed to fit.

### Commit Statistics

 - 5 commits contributed to the release.
 - 7 days passed between releases.
 - 1 commit was understood as [conventional](https://www.conventionalcommits.org).
 - 0 issues like '(#ID)' were seen in commit messages

### Commit Details

 * **Uncategorized**
    - Merge pull request #344 from Byron/interactive-path-display-degradation (157996b)
    - Degrade entries title on narrow terminals (a83583c)
    - Merge pull request #341 from knightmare2600/main (68989b6)
    - Review - more consistent naming, add name to build array (2ade4e7)
    - Update release.yml (a506c74)