Keep a Changelog · Semantic Versioning

What changed, and when.

Rendered from the product repository’s CHANGELOG.md. It is the one dated surface on this site, which is what makes the feed honest rather than decorative.

1.4.1

3 November 2026

Fixed

  • The desktop app now checks published release notices when it opens, returns to view or reconnects. An urgent release blocks an older copy at once; a normal release gives notice and becomes required on the next start. Update uses the signed installer.
  • The desktop updater checks after a release announcement or when the app returns to view, without its former six-hour timer.
  • The package notes now explain that selected personal files go to the Recycle Bin, while uninstalling a program is permanent.

1.4.0

3 November 2026

Added

  • Large or old files. Section 19 scans Downloads and folders you add. You choose each file; it always goes to the Recycle Bin. A file changed since the scan is refused.
  • Program review. Section 26 uninstalls programs you select, and section 27 offers folders an uninstalled program left behind.
  • Old tool releases and the browser model. Section 28 removes superseded tool copies. Section 29 sets Chrome's policy for its on-device AI model.

Changed

  • Emulator leftovers, automation browser caches and scratch folders are covered. Elevated program reports show when each program last ran.

Fixed

  • Program folders still in use, and the desktop app's own data, are no longer offered as leftovers.

1.3.2

28 September 2026

Changed

  • The version is 1.3.2, the desktop app’s number. The app bundles this engine and the two keep one number; the app’s 1.3.2 fixes its Google sign-in. No section, target, flag or protection changed.

1.3.1

25 September 2026

Changed

  • The maker lines name the team. The end-of-run line, the walkthrough and the usage header read by the windowsweep team; --version and the session log’s header read Author: The windowsweep 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 contact form lives there.
  • 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. A report written earlier keeps what it recorded.
  • 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. The address stays where it is a contact channel: the crash message and --feedback.

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. The row is measured from this package.

1.3.0

17 September 2026

Changed

  • The documentation address the tool carries is now the documentation site, https://windowsweep-docs.aoneahsan.com, instead of the README on GitHub. The site has served the same pages over HTTPS since 12 September 2026.
  • 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. The deletion chokepoint stays where it was: running a process and raising privilege are a different job from refusing a path.
  • modules/self_test_contract.ps1 takes self-test group [18] out of modules/self_test_extra.ps1, same fixture, same checks. Both moves are verbatim, and each was watched failing on a planted defect before it was believed.
  • The self-test grew by the two new files, because two of its groups check every engine file by name. No check was added, changed or removed - the suite is the same suite, counting one more file twice.

Fixed

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

1.2.0

8 September 2026

Added

  • targets[].newest_write_utc in --scan --json. The newest of write, access and creation time under a target — the same rule the idle gate uses — or null when the target holds no files. It costs no extra walk.
  • protected in --list --json. Every protected subtree resolved for this machine, and the same four category sentences the console prints, from one constant, so the machine-readable copy cannot quietly promise less.
  • excluded[] in the summary, naming every path an exclusion actually kept, once each.

Changed

  • --exclude-path is honoured in every section, not only section 17. It was parsed globally and read by exactly one consumer, so someone who excluded a folder was protected in one section and silently not in the other twenty-five. It is now enforced at the deletion chokepoint itself. No deletion behaviour widens: the flag only ever refuses more.

Fixed

  • --help said --permanent covers “Sections 18/19”. It reaches 18, 19 and 23. Someone who passed it believing it applied to two sections would have had section 23’s orphaned application data deleted outright instead of recycled.
  • Section 22 declared a developer flag with no behavioural branch, so the catalogue advertised something that changed nothing.

1.1.0

4 September 2026

Added

  • Section 22 — global packages audit. What npm, pnpm, yarn, bun and deno installed globally, with size and idle days, and the exact uninstall command. It never uninstalls anything.
  • Section 23 — orphaned application data. Top-level folders no installed program, Store package or running process claims. Interactive, Recycle Bin, and it fails closed: an unreadable uninstall registry produces zero candidates rather than treating everything as orphaned.
  • Section 24 — installed programs not modified for N+ days, report only, with the winget command where one resolves it.
  • Section 25 — startup items audit. Run keys, both Startup folders, logon tasks and WMI startup commands in one table. It changes nothing.
  • --select and --select-file. Answer an interactive section’s selection in advance, by index or by full path — a person did choose, earlier.
  • --notify. A Windows notification when a run ends. It never changes the exit code and never writes to stdout.
  • --list --json prints the section catalogue, so a front end reads it instead of hard-coding it.

Fixed

  • An exclusion set returned as an unrolled array had a case-sensitive .Contains, so a folder named slack would have slipped past the Slack entry. Found by a new check before the section shipped.
  • Section 24’s idle measurement read last-access, which is live on many systems, so every install folder looked touched today and the section could never report anything.

1.0.1

3 September 2026

Fixed

  • Sections 17, 18 and 19 no longer pre-select every item under --yes. The selection prompt now appears even with auto-yes, defaults to none, and section 17’s final confirmation is never auto-answered.
  • Sections 18 and 19 report the tier recycle instead of permanent.
  • --install-task and --install-alias refuse to run under npx and print the global-install steps: the npx cache is evicted and the task would break later.
  • The engine exits 130 when a run is interrupted, not only the Node launcher.
  • --uninstall-data always asks; --yes no longer removes your history unattended.

1.0.0

3 September 2026

Added

  • 22 numbered sections (0–21). Section numbers became a public contract from this release on.
  • Developer mode, asked once on the first interactive run and saved.
  • A dry-run that writes nothing, a read-only scan, and --list-targets.
  • One deletion chokepoint refusing drive roots, Windows, Program Files, the profile root, personal folders, credentials, toolchains and browser or editor state — never following junctions, handling paths beyond 260 characters, skipping open files.
  • Batch policy, admin awareness, session reports, a weekly scheduled task, a self-test, and crash bundles that stay on disk.

The full file, including every entry’s detail: CHANGELOG.md (opens in a new tab). This page is a rendering of it, never a second copy that can disagree.