Repository navigation
Releases: dpologdvinity/safesweep
Releases · dpologdvinity/safesweep
Release list
safesweep 0.6.6
Added
curl -fsSL https://github.com/dpologdvinity/safesweep/releases/latest/download/install.sh | sh: an installer that
needs no root and no package manager. It checks the release's SHA-256 checksum, installs the program, man page and
completions, and verifies the installed version. It is attached to every release and tested against fake releases,
and on Debian and Alpine against real ones.
safesweep 0.6.5
Packaging only; the program is unchanged.
Changed
- npm publishing uses trusted publishing only: the
NPM_TOKENfallback step is removed, because the packages now refuse token
publishing.
safesweep 0.6.4
Packaging only; the program is unchanged.
Changed
- The npm packages are published with npm trusted publishing (GitHub's identity, no stored token) first; the
NPM_TOKENsecret is only a fallback if that fails. The publishing loop is now a tested script (npm/publish.sh).
safesweep 0.6.3
Fixed
- The interactive explorer used the time it was started at for ages and for the log file's name, however long the session
stayed open. The clock is now refreshed before every scan and key press. - The
artifactssearch no longer walks into a hidden directory that is not a real build directory (for example a
hand-made.venv): it is skipped like any other hidden directory.
Added
artifactsrecognisesnode_modulescreated bybun install --linker isolated(marked bynode_modules/.bun).
Bun's default layout leaves no marker, so those folders are still not recognised. (An earlier change used a.bun-tag
marker; real bun does not create it, so it was replaced after testing against bun 1.4.2.)- The release workflow asks the Homebrew tap to update immediately.
safesweep 0.6.2
Fixes from a second full review, much faster cleanups, and a documentation overhaul. Upgrade recommended.
Fixed
whydropped any process whose name was not valid UTF-8 from the list (this was listed as fixed in
0.3.1, but the fix had never been applied).- The npm launcher could be killed by a signal that arrived just after it started the program, leaving the program running
with nothing to stop it (found by a flaky test on a busy machine). Signal handlers are now installed before the program is started. - A candidate that is, or contains, the temp directory is refused. With
TMPDIR=~/.cache/tmpthexdg-cache
rule would otherwise have deleted the temp directory itself.
Changed
clean --applyis about 12 times faster on many candidates (300 entries: 34.6 s before, 2.8 s now). The list of
what programs have open is re-read at most once a second instead of for every candidate. The trade-off is documented.- Scans judge the candidates of one rule in parallel (
--category pycache: about 4.3 s before, 1.8 s now, on a
busy machine). - CI: staged pipeline (setup, lint, tests on stable and on the minimum Rust 1.88, coverage with a 90% floor, builds of every
package format), a weekly dependency audit, a link check for the documentation, and namespace tests that must run on CI.
The release-tag check is one reusable workflow instead of four copies.
Documentation
- Every public item, module, script, test and workflow is documented, and
missing_docsis enforced. - New
ARCHITECTURE.md,CONTRIBUTING.mdandSECURITY.md; the README is restructured with a quick start, command
reference and FAQ.
safesweep 0.6.1
Release pipeline hardening from a review of the packaging; no change to what scan and clean do.
Fixed
- npm launcher forwards SIGTERM/SIGINT/SIGHUP to the native process (before,
timeout 60 safesweep clean --applykept deleting after the timeout). - Nothing publishes unless the tag is
vX.Y.Z[-pre]and matchesCargo.toml(before, only the crates.io job checked). --categorywithcompletionsormanis an error, like withwhy.
Changed
- apt repo is only rebuilt for the latest stable release, one run at a time; prereleases go to npm's
nexttag and skip apt. .sha256files come from the tarball already on the release; npm packages are built from checksum-verified binaries; checkouts keep no credentials;flake.lockis committed; packaging tool versions are pinned.
safesweep 0.6.0
Added
safesweep completions <shell>and a man page (safesweep man); the.deb,.rpmand release tarballs include them.- Install from the apt repository, Homebrew tap, PyPI, npm/pnpm/yarn/bun, cargo-binstall, Nix,
.deband.rpm.
Changed
- Releases publish to crates.io from CI. Re-running release workflows never replaces published assets.
safesweep 0.5.1
Packaging: install with cargo binstall, Homebrew (dpologdvinity/tap), pipx/uv (PyPI), npm/pnpm/yarn/bun, Nix, or the .deb/.rpm attached here. No code changes.
safesweep 0.5.0
Safety fixes from a whole-repo review. Upgrade recommended.
- Files used by processes in containers or other mount namespaces are now detected (matched by inode), so they are no longer deleted.
- Running as root is refused when HOME belongs to another user (e.g.
sudo -E) or a rule root is a symlink. - Skip reasons and
whyoutput are escaped, so hostile file names or command lines cannot fake output or inject terminal escapes. - TUI scans can be cancelled; a failed manifest write is reported honestly; pycache skips dot-directories.
- Behavior changes: runtime errors exit 1 (not 2);
--categorywithwhyis an error; relative HOME is rejected.
safesweep 0.4.2
TUI: long paths are cut on the left so the distinguishing end stays visible, a Scanning screen shows while the first scan runs, and rows owned by other users are hidden (the status line shows how many).