Repository navigation
Releases: leoAnimesh/OpenClean
Release list
OpenClean 0.3.0
What's new since 0.2.1.
Safety fix: Poetry environments and Deno data
In 0.2.x the generic App caches rule treated everything in ~/Library/Caches as a regenerable cache.
Two tools keep data there that isn't a cache: Poetry keeps its virtual environments in
~/Library/Caches/pypoetry/virtualenvs, and Deno keeps localStorage in ~/Library/Caches/deno/location_data.
App caches deleted them immediately, without quarantine. 0.3.0 excludes them, along with every other
~/Library/Caches folder that now has its own rule. Poetry environments are now a separate Review rule
that goes to quarantine, and Deno's localStorage is never touched. If a Poetry project stopped working
after a clean, run poetry install in it to rebuild the environment.
Highlights
- Developer and AI caches: new rules for npx, Bun, Deno, Yarn 2+, Corepack, node-gyp, Electron,
Playwright, Puppeteer, Cypress, uv, Poetry, conda, pre-commit, Go, Cargo, Maven, Coursier, Ivy,
Gradle, SwiftPM, pub, Bundler, Composer, Terraform, JetBrains, VS Code, Cursor and Unity, and for
Hugging Face datasets, PyTorch Hub, Whisper, Keras, TensorFlow Datasets and Kaggle. - Old projects:
node_modules, Python virtual environments, Cargotargetand build output
(SwiftPM, Gradle, Maven, Flutter, Next.js and similar) in projects you haven't changed for 30 days.
These are Review items: nothing is selected for you, and they go to quarantine, so you can restore them. - Project folders: projects in Documents or Desktop are skipped unless you add their folder under
Settings → Project folders. Only build folders that OpenClean recognises can be cleaned there. Your
own files in those folders are still never removed. - Go module cache:
~/go/pkg/modis now cleaned properly. Go makes it read-only, so before deleting
it OpenClean gives you write permission on its folders, the same result asgo clean -modcache. - Scan reminder (optional, off by default): a weekly or monthly read-only scan that tells you how
much can be cleaned. It never cleans anything itself. - Clearer skipped items: after a clean, Smart Scan lists anything it left in place and says why
(open in another app, changed since the scan, protected) and whether scanning again would help. - CLI:
openclean apps listandapps uninstall(to quarantine, with--dry-runand--json),
openclean space largeandspace duplicates(read-only), andopenclean performance. - Languages: the app is now available in German, Spanish, French, Japanese and Simplified Chinese,
following your macOS language. The translations are machine-assisted; corrections from native speakers
are welcome (see CONTRIBUTING.md). The CLI stays in English. - Screenshots: the README now shows every screen and a short Smart Scan demo.
- Cleanup list: the selected category and rule are highlighted like the sidebar instead of in the
system accent colour. - Homebrew: this repository is now a Homebrew tap for both the app and the CLI (see Install below).
All changes
Changes since v0.2.1.
Features
- app: localise the app into German, Spanish, French, Japanese and Chinese (167f853)
- app: project folders in Settings, and say why items were left in place (726d495)
- scan: search chosen project folders and stop the project walk on cancel (9249206)
- rules: clean Go's read-only module cache (39070d2)
- app: optional weekly or monthly scan reminder (a307f03)
- cli: apps, space and performance commands (10eb91c)
- release: Homebrew cask and stable CLI formula, bumped by a release PR (1b72a56)
- rules: developer and ML caches, and old-project cleanup (6a93179)
- scan: find node_modules, venvs, target and build output in old projects (3d2ee03)
Fixes
- app: reopen onboarding on the step it was quit on (5feb73d)
- app: ship compiled translations and lay UI tests out at full size on CI (7265f29)
- app: select Cleanup categories and rules like the sidebar, not in system blue (8acde8b)
- scan: tie the project-folder exemption to each probe and never take a project for a venv (248f106)
- uninstaller: tell a pretend home from the account's real home (3436269)
Other
- process: allow for CI runner stalls in the concurrency hang checks (2859c55)
- languages, translation guide and 0.3.0 highlights (8de0e09)
- re-render the Cleanup screenshot from the test harness (67ee4ac)
- app: record README screenshots from the UI harness (545a9ca)
- screenshots and a demo GIF in the README (a499a7e)
- release notes for 0.3.0 (dfb4dae)
- app: layout and render tests for the main window (ff2f12d)
- project folders, make_writable and the Go module cache (48eda7b)
- rule suggestion and bug report forms, rule pack template, add-a-rule guide (a924537)
- list the new developer, ML and old-project cleanup (bb631f1)
Install
App: download OpenClean-0.3.0.dmg, open it and drag OpenClean onto Applications.
The DMG is a universal build (Apple silicon and Intel) for macOS 14 or later, signed with a Developer
ID and notarized by Apple. On first launch OpenClean walks you through granting Full Disk Access.
Updating: OpenClean checks for updates once a day (Settings → Updates) and installs them in place,
keeping the previous version in History. An update must be signed by the same developer as the app you
have, and Full Disk Access carries over.
CLI: download openclean-cli-0.3.0.zip, unzip it and run openclean-cli/bin/openclean, or
install it:
unzip openclean-cli-0.3.0.zip
sudo mkdir -p /usr/local/bin /usr/local/share/openclean
sudo cp openclean-cli/bin/openclean /usr/local/bin/
sudo cp -R openclean-cli/share/openclean/rules /usr/local/share/openclean/Homebrew: brew install --cask leoanimesh/openclean/openclean (app) or
brew install leoanimesh/openclean/openclean (CLI). The tap moves to a new version shortly after its
release, once its bump pull request is merged.
Verify downloads: shasum -a 256 -c SHA256SUMS.txt in the folder holding the assets.
OpenClean 0.2.1
Changes since v0.2.0.
Fixes
- app: sidebar rows sit under the header and click correctly; retry stapling (0860eeb)
- app: lay out the sidebar rows without a scroll view (14a70b5)
Other
- release: retry stapling the notarization ticket (320e857)
Install
App: download OpenClean-0.2.1.dmg, open it and drag OpenClean onto Applications.
The DMG is a universal build (Apple silicon and Intel) for macOS 14 or later, signed with a Developer
ID and notarized by Apple. On first launch OpenClean walks you through granting Full Disk Access.
Updating: OpenClean checks for updates once a day (Settings → Updates) and installs them in place,
keeping the previous version in History. An update must be signed by the same developer as the app you
have, and Full Disk Access carries over.
CLI: download openclean-cli-0.2.1.zip, unzip it and run openclean-cli/bin/openclean, or
install it:
unzip openclean-cli-0.2.1.zip
sudo mkdir -p /usr/local/bin /usr/local/share/openclean
sudo cp openclean-cli/bin/openclean /usr/local/bin/
sudo cp -R openclean-cli/share/openclean/rules /usr/local/share/openclean/Verify downloads: shasum -a 256 -c SHA256SUMS.txt in the folder holding the assets.
OpenClean 0.2.0
OpenClean's first release: an open-source, transparent cleaner for macOS. Every cleaning rule is
readable YAML, anything that isn't trivially regenerable goes to a quarantine you can restore from, and
there are no accounts or analytics.
Highlights
- Smart Scan: system junk, user caches and logs, browser caches, Trash, Mail attachments, old iOS
backups, developer caches (Xcode, npm, Yarn, pnpm, pip, Cargo, Gradle, CocoaPods, Homebrew) and AI
model caches (Ollama, LM Studio, Hugging Face). - Uninstaller: removes an app together with its
~/Libraryleftovers as one quarantine session, so
an uninstall can be undone. - Space Lens: an interactive disk map, a large & old files finder and a duplicate finder. Removals go
to the Trash and nothing is pre-selected. - Performance and menu bar: live CPU and memory in the menu bar, heavy apps with Quit/Force Quit,
launch agents and maintenance tasks. - Safe by design: Safe / Review / Caution levels, a hard deny-list, checks just before each removal,
and History and Restore for 1–90 days. - Software Update: a daily check against GitHub (can be turned off); updates are verified against
the release checksums and the developer signature, installed in place, and the previous version stays
in History. - CLI:
openclean scan/cleanwith JSON output, for scripts and CI.
The app is signed with a Developer ID and notarized by Apple.
All changes
First tagged release (baseline 0.1.0 from Info.plist).
Features
- Uninstaller, Space Lens, Performance, onboarding, in-app updates and automated releases (13fd8c9)
- com.openclean bundle id and Developer ID signing groundwork (b5dfbdb)
- app: Needs password tag and admin uninstall flow in the Uninstaller (e1f677a)
- uninstaller: uninstall root-owned apps with an administrator password (4d8f1af)
- privilege: typed AppBundleAdminMove root command (a60478a)
- app: Force Quit from the Uninstaller; hide apps that can't be removed (d0cfe76)
- app: Settings page in the sidebar; update fixes (230aa1f)
- app: Software Update sheet, banner and Check for Updates menu item (35269ff)
- updates: coordinator wiring and UpdateModel state machine (2e49496)
- quarantine: replace the running app with a staged update (aced5d9)
- updater: add Updater module for in-app software updates (be2e048)
- app: animated onboarding with Full Disk Access setup (cdaf197)
- app: force quit from the menu bar with a confirmation alert (604985c)
- app: CPU and memory icons in the menu bar (7943df2)
- app: show CPU and memory together in the menu bar (d3525e8)
- app: animate live numbers with rolling digits (3a37ce6)
- app: build Space Lens screens with sunburst map, lists and Trash flow (86c00c0)
- app: add Performance screens and menu bar monitor (d7039cb)
- app: add SpaceLensModel state for map, large files and duplicates (98ac09e)
- coordinator: expose Space Lens scans and move to Trash (23a862e)
- space: add SpaceKit size map, large/old file and duplicate finders (5bd39bc)
- app: build the Uninstaller screens (0516358)
- app: fill in PerformanceModel with demand-driven sampling (8adab71)
- app: add Uninstaller model state and actions (35f19b7)
- maintenance: add login items, launch agents and maintenance tasks (9a79da3)
- privilege: add typed, allow-listed maintenance admin commands (a41c137)
- quarantine: add TrashPolicy and TrashMover for user-picked items (b76c35b)
- kit: add Uninstaller entry points to the coordinator (10e1efb)
- quarantine: uninstall an app and its leftovers into quarantine (6d82116)
- inventory: list installed apps and find their leftovers (75226b4)
- monitor: add SystemMonitor sampling, delta math and Force Quit policy (c24e81f)
- app: native macOS redesign, new app icon and design system (67fd5ef)
- app: native macOS redesign with new theme and app icon (5f39d37)
- app: add SwiftUI screens and ad-hoc signed app bundle (51bc54f)
- app: add observable app model for scan, clean, restore and settings (4542356)
- cli: add clean, history, restore and purge scheduling commands (429d970)
- cli: add openclean scan and rules commands with versioned JSON output (06a12e3)
- rules: add bundled v1 rule packs (125f2f9)
- kit: add coordinator, settings, rule catalog and cleanup plan (2885ccf)
- permissions: detect full disk access and advise re-grant after rebuilds (bb68e26)
- quarantine: add restore, retention purge and launch agent schedule (ddfadf0)
- quarantine: add remover with admin batching and removal guard test (63c2da6)
- quarantine: add pre-delete checks and lsof open-file detection (befad9e)
- quarantine: add session manifest and store (15df958)
- privilege: add quoted admin removal command and osascript executor (ee5caf1)
- probes: add command runner and xcode, homebrew, docker, time machine probes (73a96bf)
- scan: add probe protocol and concurrent scan engine (cadea06)
- scan: add scan models, sizing and path-rule scanner (101b5ab)
- rulekit: add rule linter and app paths (8d0aad2)
- rulekit: add deny-list, path expansion and glob matcher (3c1214e)
- rulekit: add rule models and YAML rule pack loader (3eff230)
Fixes
- app: read free disk space for the coordinator's home (be9d151)
- monitor: restart the process baseline when process sampling restarts (e4433a4)
- update: detach the image when its mount point can't be used (f897d92)
- update: downloads wait for the launch cleanup of Updates/ (ddfc79b)
- spacelens: allow moving symlinks to the Trash as links (db0b503)
- performance: check a launch agent can be quarantined before stopping it (7185df6)
- performance: use the resolved home for launch item roots (faf18d1)
- uninstall: build OpenClean's paths from the resolved home (e537399)
- privilege: never chown anything the user can reach in the admin app move (c6fa1ce)
- app: square, edge-to-edge selection in the Uninstaller app list (3b12fad)
- app: menu bar switch sits at the right edge of its row (46fa5e0)
- app: align the Performance section picker with the content (c50925d)
- app: sidebar selection uses the app palette instead of system blue (320055e)
- app: keep the sidebar always visible (50cba0e)
- app: drop the logo from the CPU and memory menu bar item (879b8a4)
- app: label CPU and RAM in the menu bar (30c934d)
- app: friendlier subtitle when Smart Scan finds nothing (c242756)
- app: menu bar Smart Scan switches to the Smart Scan section (fda6fd4)
- final pre-merge safety fixes (bca3565)
- app: discard scan/clean results when exclusions or Advanced change mid-flight (9608412)
- app: guard double clean and reset stale results on settings change (2a744e1)
- cli: refuse clean --json without --yes; explain held-back items (d7f4657)
- rules: tighten bundled pack excludes and explanations (579e678)
- quarantine: remove launch agent plist when bootstrap throws (1c0e0fb)
- quarantine: contain manifest-derived paths in purge and restore (54e3500)
- processkit: avoid global-queue starvation in command runner (550ded6)
- quarantine: require root-owned sticky ancestor; verify admin removal by ENOENT (be7ba43)
- quarantine: per-item admin outcomes, sticky-aware parent guard, admin requires immediate (032b988)
- quarantine: fail closed on open-file matching and lsof parsing (acf7c4a)
- paths: fold case and canonical equivalence in path keys; byte suffix checks (d6bcd7d)
- paths: compare path containment on UTF-8 bytes (85fa669)
- privilege,rulekit: byte-based canonical path checks (6f8ac88)
- privilege: harden cancel detection, canonical paths, typed RemovalCommand (2d43f1d)
- processkit: add command timeout (9e13d59)
- scan: harden user excludes, canonical home and cancellation (8acdcc4)
- rulekit: treat newline-only text as empty; tighten linter gate tests (6a0e479)
- rulekit: make deny-list fail closed on non-canonical, case-variant and nested-bundle paths (8ff60e5)
Other
- release: sign, notarize and staple releases; PR release dry run; v0.2.0 notes (476299f)
- monitor: format the process-baseline test (f815539)
- document the Uninstaller's administrator app move (e4992f9)
- app: for-in loop for force quitting in the Uninstaller (d7e5cf1)
- brand: calmer hero banner text column (b2b5bc3)
- readme: one hero banner instead of a screenshot grid (80e44f6)
- describe Software Update, its privacy and safety rules (3ed4ff3)
- readme: list Uninstaller, Space Lens and Performance (aeced16)
- spec: align Space Lens spec with the implementation (d27759c)
- stamp the CLI version from the release version (7d923f4)
- point install at release DMG and document versioning (4755f2c)
- release automatically on merges to main (c74af9e)
- add dmg, cli-zip and release-assets make targets (984cdea)
- spec: add Space Lens, large/old files and duplicates design (79dd03c)
- uninstaller: add sub-project 2 design spec (b966513)
- spec: add Performance and menu bar monitor design (288ef44)
- compute next version and release notes from conventional commits (966c154)
- app: wire Uninstaller, Space Lens and Performance modules (27cee6d)
- shrink screenshots below 1 MB and add social preview image (7891227)
- readme: add screenshots, features and badges (5e536ae)
- add openclean-design skill for UI consistency (b9f138e)
- add AGENTS.md and CLAUDE.md agent guidance (bd1e8a6)
- add CI, release workflow, formatting and contributor docs (700f06d)
- cli: enforce temp-home isolation in CLIBinary and scope fixture lifetime (fdd0c36)
- ignore .superpowers workspace (563830f)
- add implementation plan for core + cleanup (c8ff4b4)
- add core + cleanup design spec (18f92b9)
Install
App: down...