Skip to content

Latest commit

Β 

History

429 Commits

Folders and files

NameName
Last commit message
Last commit date
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

Prune

A Windows uninstaller that finishes the job.

Runs a program's own uninstaller, then finds what it left behind β€” files, registry keys, scheduled tasks β€” and removes those too. By default nothing is deleted outright: it is quarantined first, so a bad match is recoverable.


Latest release Platform License Build Telemetry


Prune's dashboard: real SMART drive health, live CPU and memory, installed application count and recent activity

Real SMART data from the drive itself β€” not free space dressed up as health.
This README's screenshot follows your theme, because the app does too.


Why it exists

Windows' own "Apps & features" runs an uninstaller and stops there. What the uninstaller forgets β€” a folder in AppData, a Run key, a scheduled task β€” stays on the disk forever, and nothing in Windows will ever mention it again.

Prune replaces four tools with one: an uninstaller, a disk visualiser, a cache cleaner and a drive-health monitor. Every number it shows is measured on the machine rather than estimated, and it says so when it cannot measure something instead of printing a confident zero.


What it does

πŸ—‘οΈ Applications

Every installed program from all three registry Uninstall hives, plus the Store apps and browser extensions no uninstall list mentions. Real icons, measured sizes, and a warning before removing something that is running. Batches run without a wizard per program β€” the vendor's own silent command where one is published, and the right flag for MSI, NSIS, Squirrel and closed Chromium browsers otherwise β€” and a game is removed before the launcher it uninstalls through. Store apps are removed in-app too, one at a time or in a batch. Optional, as in Revo: a restore point or a full registry backup before each uninstall, and a choice of where leftover files go.

🧹 Deep Clean

74 rules across 29 categories, scanned one at a time so the tree fills in as it goes. A rule that cannot be measured says whether the software is missing or the read needs admin β€” never 0 B.

πŸ—ΊοΈ Disk Map

An interactive treemap of what is actually using the disk, from a full-drive scan that reads the NTFS MFT directly. Largest files, a folder table and a breakdown by type beside the map.

⚑ Startup

Everything Windows launches at sign-in β€” Run keys, Startup folders, scheduled tasks, automatic services and Store startup tasks. The switch writes the same record Task Manager does.

πŸ›Ÿ Quarantine

Files are moved and registry keys exported before removal, browsable and restorable β€” nothing is gone for good until you say so twice. Leftover files can go to the Recycle Bin or be deleted outright instead, if you choose that in Settings; registry keys are backed up either way.

🫧 Duplicates

Duplicate files under a folder you choose, found by size, then a 64 KB sample, then a full hash β€” so almost nothing is read completely.


Screens

The Applications screen: 210 installed programs with real icons, measured sizes, versions and install dates, filterable by Unused, Store, Extensions and Broken Deep Clean: rules grouped by application, each with a plain-English description, and a Loses data badge on the ones that sign you out or clear history
Applications
Every hive, plus Store apps and extensions
Deep Clean
Rules that lose something are marked, and never ticked by default
The Startup screen: 56 sign-in entries grouped by registry hive and Startup folder, showing which are enabled and which are running now The dashboard in the light theme, showing the same drive health and storage cards on a light ground
Startup
Grouped by where an entry lives, because that decides how to remove it
Light theme
Measured against every surface, not inverted

Installing

Download Prune-Setup-<version>.exe from the latest release and run it. The installer opens in Windows' own language β€” 40 are included β€” and on a fresh install asks whether Prune should check for updates, unticked unless you tick it. The -win.zip beside it is the same application without an installer: unzip it anywhere and run Prune.exe.

From 2.5.0 on, that is the last installer you run by hand: with the update check on, a button appears at the bottom of the side bar when a new version is out, and one click installs it and reopens Prune. Releases before 2.5.0 cannot update themselves, and named the installer Prune.Setup.<version>.exe.

Windows will warn you, and here is why

Prune is not code-signed, so the first time you run the installer Windows shows:

Windows protected your PC Microsoft Defender SmartScreen prevented an unrecognised app from starting.

Click More info, then Run anyway.

This warning is about the absence of a certificate, not about anything found in the file. SmartScreen flags every unsigned installer it has not seen before, and unlike a reputation warning it does not go away as more people download it β€” an unsigned binary stays unrecognised. A code-signing certificate is a paid, identity-verified purchase, and Prune does not have one.

You do not have to take that on trust. Every release lists the SHA-256 of both files, and you can check the one you downloaded matches before you run it:

Get-FileHash .\Prune-Setup-*.exe -Algorithm SHA256

Compare the result with SHA256SUMS.txt on the release page. Get-FileHash prints the digest in uppercase and the file lists it in lowercase β€” same hash, compare them case-insensitively. For releases before 2.5.0 the file also names the installer Prune Setup <version>.exe, with spaces, while the download is Prune.Setup.<version>.exe: same file, GitHub turns spaces into dots.

Be clear about what that does and does not prove: it confirms the file reached you byte-for-byte as it was built, so a corrupted or altered download is caught. It does not prove who built it.

From 2.4.1 on, that second question has an answer too. Releases are built by GitHub Actions, and each file carries an attestation: a signed record of the repository, the commit and the workflow that produced it. With the GitHub CLI installed:

gh attestation verify .\Prune.Setup.<version>.exe --repo jimman0I/prune

A file that passes was built by this repository's own workflow from its public source; anything else fails. It is still not a code signature β€” Windows does not read it, so SmartScreen warns all the same β€” but it answers who built the file, which a checksum cannot. Releases before 2.4.1 were built locally and have no attestation.

If you would rather not run an unsigned binary, the alternative is to build it yourself from source: see Building an installer below. The result is the same application.


Nothing leaves the machine

No telemetry, no crash reporting, no analytics, and no update check unless you turn one on. The only HTTP in the app is the window talking to its own backend on 127.0.0.1, behind a guard that checks the Host header before a request body is ever parsed β€” because loopback is not the protection it sounds like, and every web page you have open can reach it too.

The one exception is opt-in: Settings β†’ Check for updates, off by default (the installer asks on a fresh install, unticked). Turned on, Prune asks api.github.com once a day whether a newer release exists, sending a User-Agent and nothing else. If there is one, a button appears at the bottom of the side bar, and only clicking it downloads the new installer from the GitHub release and installs it. Turn on Install updates automatically as well and it downloads in the background instead, and installs the next time Prune closes.

That is checkable rather than a promise: the only code that opens a connection to a host that is not loopback is backend/src/services/updateCheck.js and the updater in electron/updater.cjs, and neither does anything while the update check is off. SECURITY.md says exactly what the updater trusts.


Requirements

  • Windows 10 or 11.
  • Node.js 18+ (development only β€” the packaged app bundles its own runtime via Electron).

Development

# Backend (Express, port 3101)
cd backend
npm install
npm run dev

# Frontend (Vite, port 5174) β€” in a second terminal
cd frontend
npm install
npm run dev

# Electron shell β€” in a third terminal, once both of the above are running
cd electron
npm install
npm start

Run tests:

cd backend && npm test
cd frontend && npm test
cd electron && npm test

1,918 tests: about half a minute each for the backend and frontend, a second for the electron suite. GitHub Actions runs all three on every push and pull request, but run them yourself before pushing β€” one at a time, for the reason CONTRIBUTING.md explains.

Building an installer

cd electron
npm run dist

Produces an NSIS installer (.exe), a portable .zip and a generated SHA256SUMS.txt in electron/dist/. See electron/README.md for how the build pipeline works and what it does differently from a plain electron-builder call, and RELEASING.md for the checklist around it. Published releases are built by GitHub Actions rather than on anyone's machine, so each file carries an attestation of where it came from.

Architecture

  • backend/ β€” Express (ESM), running in-process inside Electron's main process when packaged, or standalone via node src/index.js in development. Zero native dependencies: the registry reader and the PowerShell COM interop used for Recycle Bin sizing both shell out to reg.exe and powershell.exe β€” binaries every Windows machine already has, nothing to bundle or rebuild per platform.
  • frontend/ β€” React + Vite + Tailwind, the Aurora Deck design system (obsidian ground, cyan accent, glass panels), in dark and light. Both palettes are CSS custom properties in src/index.css, and every text tier in each is measured against the surfaces it sits on.
  • electron/ β€” the desktop shell. Quarantine data and settings live under app.getPath('userData'), never inside the install directory, so an upgrade never touches or deletes them.

Known limitations

  • Windows only.
  • Removing a Store app cannot be undone from Quarantine, unlike everything else Prune removes: Remove-AppxPackage takes the app and its data, and the way back is reinstalling from the Store. The dialog says so before you confirm.
  • Store apps Windows marks as part of the system β€” the Security interface, the app installer β€” cannot be removed, and their rows open Windows' own page instead. A batch takes only the Store apps Windows explicitly marks as removable; one it has not said either way stays out.
  • About one program in ten still uninstalls with its own wizard: anything whose installer Prune cannot positively identify runs exactly as registered, because a wrong silent flag is worse than a visible dialog.
  • A Chromium browser that is open when its uninstall runs shows its own dialog rather than being closed for you β€” the silent option closes every window without asking. Microsoft Edge and the WebView2 runtime always show Microsoft's dialog: other programs, Windows Search among them, depend on WebView2.
  • Leftover scanning is heuristic (name and publisher matching), not a full before/after filesystem snapshot.
  • Delete permanently, if you choose it for leftover files in Settings, means exactly that: they cannot be restored from Quarantine or the Recycle Bin. It is off by default, the review says so before you confirm, and a guard refuses Windows, a drive root, Program Files itself, your profile's own folders and Prune's quarantine whatever the scan found.
  • A full registry backup before uninstalling covers HKLM\SOFTWARE and HKCU\Software β€” about 140 MB here β€” and only the newest three are kept.
  • The installer is unsigned, so SmartScreen warns on first run and keeps warning β€” see Installing.

Contributing and security

  • CONTRIBUTING.md β€” how to run it, how code is written here, and how to work on the parts that delete things without deleting your own.
  • SECURITY.md β€” where to report a vulnerability privately, and what is in scope.
  • RELEASING.md β€” the release checklist.
  • CHANGELOG.md β€” release notes.

License

MIT β€” see LICENSE. Use it, fork it, sell it; keep the copyright notice. It comes with no warranty, which is worth reading rather than skipping for a program whose job is deleting things.

About

A Windows uninstaller that finishes the job: runs the program's own uninstaller, then finds and quarantines what it left behind. Plus a disk map, cleaner, startup manager and SSD health. No telemetry.

Topics

Resources

Contributing

Security policy

Stars

34 stars

Watchers

0 watching

Forks

Releases

Packages

Used by

Contributors

Languages