Skip to content

Releases: wefalltomorrow/Compactor

Compactor v0.11.4

Choose a tag to compare

@github-actions github-actions released this 08 Sep 10:16

Changed

  • Rework the Settings page into clear Exclusions, Compression, and Display panels.
  • Use a responsive two-column settings layout that collapses to one column on narrower windows.
  • Keep labels, controls, and help text aligned, with shorter worker/thread guidance beneath the relevant controls.

Fixed

  • Prevent Settings controls and help text from running into or overlapping each other at common window sizes and display scaling levels.

Compactor v0.11.3

Choose a tag to compare

@github-actions github-actions released this 08 Sep 09:29

Added

  • Warn when a selected folder contains the DirectStorage runtime (dstorage.dll or dstoragecore.dll).
  • Keep the system awake during compression and decompression without forcing the display to remain on.
  • Detect the target NTFS cluster size for compression eligibility and projected on-disk allocation.
  • Add configurable compression/decompression worker priority: Lowest, Below Normal, Normal, Above Normal, or Highest. Below Normal is the default.

Changed

  • LZX Auto concurrency is deliberately conservative: one worker on CPUs with four or fewer physical cores and at most two workers on larger CPUs. An explicit manual thread limit overrides the LZX Auto policy; the HDD single-thread safeguard still applies when enabled.
  • Worker priority applies only to compression/decompression threads; the GUI and analysis threads remain at normal priority.
  • Analysis uses bounded 4096-file estimation batches instead of allowing the complete candidate set to accumulate before parallel estimation.
  • Skipped files retain counts and size totals without retaining every skipped path, reducing memory use on very large scans.
  • Displayed projected savings are adjusted for the selected WOF algorithm and rounded to the target volume's cluster size while the eligibility decision continues to use the raw sampled compressibility result.
  • Decompression results use the file's actual post-operation on-disk allocation instead of assuming physical size equals logical size.

Fixed

  • Compression and decompression now open each active file while allowing readers but denying concurrent writers and deleters, reducing the risk of racing game/application updates during a WOF operation.
  • File size and modification time are now read from the already-open protected handle before deciding whether a previous analysis estimate is still reusable, closing the remaining change-between-check-and-open race.
  • Correct logical-versus-physical file accounting so sparse/allocation edge cases do not distort folder totals or estimated savings.
  • Skip files whose logical length cannot save an NTFS cluster instead of spending analysis time on files that cannot reduce allocation.
  • Strengthen target validation: only local NTFS folders are accepted; whole-drive roots, network/UNC paths, the active Windows directory, System Volume Information, root $* directories, root Recovery, and legacy LZNT1-compressed target folders are rejected.
  • Correct the GUI allocation breakdown to use actual on-disk bytes for physical categories.
  • Repair the v0.11.3 lockfile so existing dependency checksums remain identical to the known-good v0.11.2 lockfile; only the local package version changes.

Compactor v0.11.2

Choose a tag to compare

@github-actions github-actions released this 07 Sep 10:28
9e00e51

Added

  • In-app viewer for folders containing WOF-compressed files, with path filtering and pagination for large scans.

Changed

  • Auto threading now uses up to eight analysis workers and up to 16 compression workers on SSDs while retaining the single-thread HDD safeguard.
  • Compression reuses the analysis compressibility estimate when file size and modification time are unchanged, avoiding duplicate sampling; changed files are re-estimated before compression.

Maintenance

  • Windows CI validates the embedded JavaScript syntax before building.

Compactor v0.11.1

Choose a tag to compare

@github-actions github-actions released this 07 Sep 07:44
f4d6ea9

Added

  • Configurable maximum worker-thread limit with Auto as the default.
  • HDD single-thread safeguard, enabled by default.

Changed

  • SSD analysis and compression can run concurrently using the configured worker limit.
  • Auto uses up to six workers on storage reported by Windows as having no seek penalty.
  • HDD analysis uses a small number of contiguous sample windows to reduce seek overhead.
  • HDDs use one worker by default; unknown storage also uses one worker.

Maintenance

  • Release workflow now requires the current master commit and blocks publishing while non-draft pull requests targeting master are open.

Compactor v0.11.0

Choose a tag to compare

@github-actions github-actions released this 07 Sep 07:06
ad70aa9

Added

  • Configurable minimum estimated savings threshold in Settings; default is 1%.
  • Estimated post-compaction size and additional savings during analysis.
  • Windows x64 MSVC build and test workflow on stable Rust.

Changed

  • Default compression algorithm is now LZX.
  • Analysis and compression now use the same sampled compressibility threshold logic.
  • Removed blanket file-extension exclusions; files are judged by sampled contents instead of filename.
  • Default exclusions are limited to Windows, System Volume Information, and Windows-managed root $* paths.
  • Exclusion matching is case-insensitive and ignores blank or whitespace-only entries.
  • Compression progress is byte-aware rather than relying only on file count.
  • Incompressible-cache keys now include path, file size, and modification time so changed files are automatically reconsidered.
  • The cache backing file is now incompressible-v2.dat to avoid stale path-only entries.
  • Estimated-savings output has a dedicated legend marker in the GUI.
  • Removed decorative button and navigation glyphs from the GUI.
  • Updated the compression-mode labels to show LZX as the default.

Fixed

  • Correctly treat DeviceIoControl as returning a Win32 BOOL rather than an HRESULT.
  • Correctly surface Win32 errors while handling ERROR_COMPRESSION_NOT_BENEFICIAL as a normal no-benefit result.
  • Open WOF targets with the read-data/write-attributes access required by the operation.
  • Skip encrypted, sparse, offline, reparse-point, and NTFS-compressed special files before WOF classification.
  • Use zero-safe progress calculations and saturating size arithmetic to avoid invalid progress or unsigned underflow/overflow edge cases.
  • Preserve clear stopped and cancelled state handling.

Maintenance

  • Updated GitHub Actions to current actions/checkout and actions/upload-artifact majors.
  • Removed deprecated Cargo config naming and legacy WinAPI struct-macro warnings.
  • Removed unused background helper code.
  • Updated project documentation and package metadata for this maintained fork while preserving upstream attribution.
  • Reworked user-facing documentation and About text to use concise project wording.