Skip to content

v0.2.2

Latest

Choose a tag to compare

@github-actions github-actions released this 06 Jul 22:53

Fixed

  • The GUI no longer exits silently when an action hits a configuration
    error (for example a quarantine dir inside the downloads dir); failures
    now land in the status bar and Log like any other error.
  • Name-only sources ([NoDelete] additions) are credited on hash-verified
    files, so the claims table's unique column truthfully shows what
    retiring a list would free.
  • CRC32 rescues additionally require a size match, removing the chance of
    a random 32-bit collision protecting an unrelated file.
  • Duplicate list labels with differing content (two same-named MO2
    installs) are announced instead of silently dropping the second copy.
  • GUI actions refuse early with a clear message when no downloads
    directory is configured yet.

Changed

  • Reports bulk-load the hash cache: one query instead of one per file.
  • The GUI's Hash Candidates hashes and refreshes the report in a single
    pass over the disk instead of two.
  • Hashing pipelines reads with computation; access stays strictly
    sequential, so spinning disks see no extra seeking.
  • The hash cache uses SQLite WAL mode: no per-file fsync, and concurrent
    readers no longer block the writer.
  • Standalone executables are onedir bundles (one folder, both executables,
    shared runtime), which trip far fewer antivirus heuristics than the
    previous self-extracting stubs.
  • Every subcommand accepts --log-level (restore, purge,
    update-manifests, and check-update previously lacked it).
  • hash --limit 0 now means "hash nothing" instead of "no limit".
  • CSV export orders rows by the same status ranking the report displays.

Added

  • In-depth documentation: docs/usage.md covers every
    command and config key, docs/gui.md tours the desktop
    app; the README slimmed to an overview.
  • A tracked modsweep.example.toml template (the
    personal modsweep.toml is no longer tracked).
  • py.typed: the package advertises its inline type annotations to type
    checkers.

Internal

  • The GUI module became a package (texts / icons / workers / editor /
    window).
  • ruff and pyright run in CI; the suite grew to 241 tests at 98% branch
    coverage, including property-based invariants for version ordering and
    the matcher contract, and much deeper end-to-end and GUI coverage.

Full changelog: https://github.com/zspatter/mod-sweep/blob/main/CHANGELOG.md

Note: the windows-gui / windows-cli single-file zips and the linux.zip were added after the initial release (the tagged workflow predates them; from v0.2.3 CI builds all of them directly). The Windows pair was built from the v0.2.2 tag source; the linux.zip is a repack of the CI-built linux.tar.gz with permissions preserved - identical binaries, NexusMods-compatible container.