Skip to content

Latest commit

 

History

History
66 lines (48 loc) · 2.81 KB

File metadata and controls

66 lines (48 loc) · 2.81 KB

Changelog

All notable changes to this project will be documented in this file.

The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.

1.0.0 - 2026-07-05

Added

  • Support for comparing tar archives (.tar, .tar.gz, .tar.bz2, .tar.xz) in addition to zip archives and plain directories
  • Unit test suite (pytest) covering the core comparison logic and the CLI
  • hatch test / pytest integration in hatch run lint:check

Changed

  • Migrated packaging from setup.py to pyproject.toml with hatch as build backend
  • Raised minimum supported Python version to 3.11 (developed and tested with 3.13)
  • Added a restrictive lint environment (black, bandit, ruff, flake8, pylint, mypy --strict) via hatch run lint:check
  • Added GitHub Actions workflows for linting across supported Python versions and for publishing to PyPI via Trusted Publishing
  • Relicensed from GPL-3.0-or-later to MIT
  • Unreadable files (broken symlinks, missing permissions) are now skipped with a warning on stderr instead of aborting the whole comparison
  • folderdiff CLI now prints a clean error message and exits with status 2 instead of a raw traceback when the comparison itself fails

Fixed

  • Files with duplicate content could be silently dropped from the result when computing moved/removed/added file sets, hiding genuinely removed or added files whenever another file with identical content existed
  • --prefix had no effect when comparing two plain directories; it only ever worked for the zip-archive side
  • A corrupt zip archive's CRC-32 self-test result was computed but never checked, so a bad archive still crashed later with an unhandled exception
  • Fixed "profix" typo in the --prefix help text
  • Folder-mode relative paths used os.sep while zip entries always use /, so comparing a zip archive against a directory would report every file in a subfolder as changed on platforms where os.sep != "/"
  • A named pipe or other special file in the compared directory tree caused open() to block indefinitely, hanging the whole comparison; such entries are now skipped with a warning instead
  • Zip archive members were read fully into memory before hashing, which could exhaust memory on a maliciously crafted archive; hashing is now streamed in fixed-size chunks

0.0.2 - 2023-03-06

Added

  • added long description to python package

0.0.1 - 2023-03-06

initial release