Skip to main content

Release feed

Every windowsweep release, newest first. Subscribe in any feed reader with feed.xml. The full notes for each release are on the changelog.

windowsweep 1.4.1

Fixed

  • The desktop app now reads published release records on start, resume and reconnect.
  • Removed the desktop updater's six-hour network timer.
  • Corrected the package's release notes and documentation for section 19's Recycle Bin rule and section 26's permanent uninstall action.

windowsweep 1.4.0

Added

  • Section 26 - uninstall the programs you pick.
  • Section 27 - folders uninstalled programs left behind.
  • --json candidates can carry a label.
  • Section 4 also clears what emulators leave behind.
  • --browser-profile-roots "P1;P2" (config browserProfileRoots) for section 7.
  • --temp-roots "P1;P2" (config tempRoots) for section 10.
  • Section 24 shows when each program last ran.
  • Section 19 is now a data scanner: large or old personal files.
  • Section 28 - superseded tool releases and old downloaded updates.
  • Section 29 - Chrome's on-device AI model.

Changed

  • Idle age uses write time where last-access is live.
  • More folders are protected roots.

Fixed

  • --exclude-path now also holds inside the tool's own exceptions.
  • Section 23 no longer offers folders that still belong to something.
  • --json is one line again on every run.

windowsweep 1.3.2

No change to what is cleaned, how it is decided, or what is refused: the engine is 1.3.1's, file for file. The version moves so the desktop app and the engine it bundles keep one number, and desktop-v1.3.2 fixes the app's Google sign-in.

Changed

  • The version is 1.3.2, the desktop app's number.

windowsweep 1.3.1

No change to what is cleaned, how it is decided, or what is refused. This release names the team as the tool's maker instead of one person, and points the web address it prints at the product's own site.

Changed

  • The maker lines name the team.
  • The web address the tool prints is the product's own site, https://windowsweep.aoneahsan.com, instead of a personal site: the Web: row of --version and --feedback, the session log's header and the walkthrough.
  • The report credits keep their four keys and their string type, so a reader of schema_version: 1 keeps working: author.name is the windowsweep team, author.website is the product's site, and author.email and author.linkedin are empty strings.
  • The Email and LinkedIn rows of --version are gone, and so is the email address in the usage header and the session log's header.

Fixed

  • The README's install-size row inside the 1.3.0 package said 44 files and about 396 kB unpacked; that package held 46 files and about 400 kB, because the two files 1.3.0 split out were never counted.

windowsweep 1.3.0

No change to what is cleaned, how it is decided, or what is refused. This release moves one printed address, splits two files that had grown past the project's own 500-line ceiling, and corrects the version rows inside the published package.

Changed

  • The documentation address the tool carries is now the documentation site, https://windowsweep-docs.aoneahsan.com, instead of the README on GitHub.
  • lib/external.ps1 takes Invoke-External, Test-CommandPresent, Test-ProcessRunning, Test-IsAdmin, Test-CanElevate and Invoke-Elevated out of lib/safety.ps1, which is back under 500 lines.
  • modules/self_test_contract.ps1 takes self-test group [18] out of modules/self_test_extra.ps1, same fixture, same checks.
  • The self-test grew by the two new files, because groups [3] and [4] check every engine file by name.

Fixed

  • The README at-a-glance rows inside the published package were stale at 1.1.0 through the 1.2.0 cascade.

windowsweep 1.2.0

Added

  • targets[].newest_write_utc in --scan --json.
  • protected in --list --json.
  • excluded[] in the --json summary, naming every path an exclusion actually kept, once each.

Changed

  • --exclude-path is honoured in every section, not only section 17.

Fixed

  • 🔴 --exclude-path only ever refused the path you named, never anything inside it.
  • 🔴 A dry-run counted files a real run would skip.
  • --help said --permanent covers "Sections 18/19".
  • Section 22 declared Dev = $true with no behavioural branch, so --list --json advertised a developer flag that changed nothing.
  • 🔴 --scan parsed --developer and --not-developer and then never read them.
  • The hibernation target's one-line note contradicted the section's own explanation two lines below.

windowsweep 1.1.0

Added

  • Section 22 - global packages audit.
  • Section 23 - orphaned application data.
  • Section 24 - installed programs not modified for N+ days.
  • Section 25 - startup items audit.
  • --select L and --select-file P.
  • --notify.
  • --json additions.
  • --list --json prints the section catalogue - sections, tiers, batch policy, the safe batch, the profiles and the walkthrough order - so a front end reads it instead of hard-coding it.
  • Section 1 gained the Hugging Face model cache (~\.cache\huggingface\hub, pruned by the idle gate, developer-gated).
  • Section 17 recognises .nx, .mypy_cache, .ruff_cache, .tox, .eggs, .output and .serverless, and treats .cache as an artefact only when a Gatsby or Parcel config sits beside it.
  • docs/sections.md records the candidate targets that are researched but not shipped because the software is not installed on the build machine, and why C:\Intel was inspected and rejected.

Fixed

  • Get-OrphanExclusions returned its exclusion set as an unrolled array, whose .Contains is case-sensitive, so a folder named slack would have slipped past the Slack entry.
  • Section 24's idle measurement used the newest of write, access and creation time.

Changed

  • The target table is collected from the section catalogue instead of a literal 0..21 range, so a new section is reachable by --scan, --list-targets and the safety checks the moment it is declared.
  • Profile audit is now 0, 21, 22, 24, 25.
  • Self-test: 27 more checks (151 total) cover the catalogue, section 23's fail-closed gate and derived exclusions, section 22 declaring nothing deletable, the scripted-selection flags, the --json and catalogue shapes, the progress-line format, the global-package verdict, the startup-state rule and the artefact list.
  • Self-test: ten more checks cover the argument parser, section lists, docker size text, the layout-guard leaf test, the --json shape, superseded versions, the Chromium layout, workspace storage, stale artefacts and the report exporters.
  • AI-INTEGRATION-GUIDE.md ships in the npm package and is mirrored on the documentation site: the contract an agent or a script relies on - the safe command sequence, what --yes never covers, exit codes, the --json line, output paths and the guarantees.
  • A documentation site at windowsweep-docs.aoneahsan.com (Docusaurus on GitHub Pages), mirroring docs/.

windowsweep 1.0.1

Fixed

  • Sections 17, 18 and 19 no longer pre-select every item under --yes.
  • Section 19's title no longer names Desktop; only Downloads is scanned.
  • Sections 18 and 19 report the tier recycle instead of permanent in --list.
  • --purge-all from a console asks you to type purge once per run, as documented; --yes remains the confirmation in batch runs.
  • A running editor's VSIX download cache is cleared as documented: it is its own target without the running-editor guard.
  • --install-task and --install-alias refuse to run under npx (exit 3) and print the global-install steps; the npx cache is evicted and the task or alias would break later.
  • The engine exits 130 when a run is interrupted before it finished; previously only the Node launcher did.
  • --uninstall-data always asks; --yes no longer removes your history unattended.

Changed

  • Internal rename Write-Log -> Write-LogLine (18 call sites) so PSScriptAnalyzer's PSAvoidOverwritingBuiltInCmdlets passes under PowerShell 7 in CI.
  • Self-test: four new checks prove the --yes asymmetry at the helper and at the section 17/18/19 call sites, and that every picker call in modules/ carries -NoAutoYes (114 checks).
  • Keywords trimmed to twelve (temp-files dropped).

windowsweep 1.0.0

First release. The Windows member of the cleanup family beside linux-cleanup and macleanup.

Added

  • 22 numbered sections (0-21): package-manager caches, build-tool caches, test-runner browsers, Android emulators, Docker, editor caches, browser caches, desktop-app caches, Windows user caches, user temp, Recycle Bin, Windows Update cache, the Disk Cleanup engine, DISM component-store cleanup, the hibernation file, event logs, stale project build artefacts, partial downloads, large stale personal files, disk-image compaction and a disk-usage report.
  • Developer mode.
  • A dry-run that writes nothing (--dry-run), a read-only scan (--scan) and --list-targets.
  • One deletion chokepoint that refuses drive roots, Windows, Program Files, the profile root, personal folders, credentials, toolchains and browser/editor state, asserts every deletion lies inside its declared target root, never follows junctions or symlinks, handles paths longer than 260 characters and skips files another program has open.
  • Batch policy.
  • Admin awareness.
  • Session reports as schema-versioned JSON with Markdown and HTML export, a reports manager, run history (--stats), history pruning and --json for scripting.
  • Weekly Scheduled Task (--install-task) and a PowerShell profile alias (--install-alias).
  • Self-test (--self-test): script syntax, ASCII-only source, the protection lists, a real junction fixture, the dry-run guarantee, keep-newest, long paths and the extension-leftover rule.
  • Crash bundles written locally on unexpected exit; --debug-bundle and --report-issue for bug reports.
  • Node launcher for npx windowsweep, a .cmd launcher for machines without Node, and a ci workflow that runs the self-test and a dry-run on both Windows PowerShell 5.1 and PowerShell 7.