Releases: Xia-Qi2450/pyhash
Releases · Xia-Qi2450/pyhash
Release list
v1.1
[1.1.0] - 2026-07-30
Added
--quick/-qflag onhash— when a directory already has a
checksum log, files whose size and modified time still match the log
are trusted as unchanged and skipped, instead of being re-read and
re-hashed. Only new or actually-changed files are hashed. Falls back to
a full hash automatically if the cached log is missing, corrupt, or was
written with a different algorithm.- Move/rename detection in
check— a missing file and a new file whose
hashes match exactly are now reported asMOVED: old_path -> new_path
instead of as an unrelatedMISSING+NEWpair. A pure move does not
affect the command's exit code, since nothing was actually lost. Can be
disabled with--no-detect-moves/-nmto restore the previous
MISSING + NEW behavior. Note: only pairs against new files inside
directories that already have a log — a file moved into a brand-new,
never-hashed directory is not detected as a move. tests/smoke_test.pyextended with coverage for--quick(full reuse,
partial reuse after a real change) and move detection (both threaded
and sequential paths, plus--no-detect-moves).
v1.0.0
[1.0.0] - 2026-07-25
Initial release.
Added
hashcommand — recursively scans a folder or drive and writes achecksums.jsonlog inside every directory it visits, containing each file's hash, size, and modified time.checkcommand — re-hashes files and compares them against the logs, reportingOK,MODIFIED,MISSING, andNEWper file, plus a summary and a nonzero exit code when issues are found.- Self-healing logs: re-running
hashrefreshes every log and removes stale logs for directories whose tracked files have all been deleted. - Support for five hash algorithms:
md5,sha1,sha256(default),sha512,blake2b. - Threaded hashing via
--workersfor faster scans on large drives. - Directory/file exclusion via
--exclude-dirsand--exclude-files(glob patterns), with common noise directories (.git,node_modules,__pycache__,.venv,$RECYCLE.BIN, etc.) excluded by default. --no-recursiveand--include-hiddenflags for finer scan control.- Optional
--reportflag oncheckto export a full JSON summary. - Halo spinner during directory scanning, tqdm progress bar during hashing/verifying, and color-coded terminal output (auto-disabled for non-TTY output or via
--no-color). tests/smoke_test.py— end-to-end regression test covering hashing, clean verification, and modified/missing/new detection.- GitHub Actions CI workflow running the smoke test across Ubuntu/Windows/macOS and Python 3.10/3.13.
- GitHub Actions release workflow building standalone executables (Windows/macOS/Linux) via PyInstaller and attaching them to tagged releases.