Skip to content

Releases: bysiber/cleardisk

v1.9.0

Choose a tag to compare

@github-actions github-actions released this 06 Aug 15:25

Added

  • Go build cache (~/Library/Caches/go-build). This is GOCACHE, and it is usually several times larger than the module download cache that was already listed. Cleared by go clean -cache; the next build is slower, then it is fast again.
  • Android System Images and NDK (~/Library/Android/sdk/system-images, .../ndk). The existing Android entry covered ~/.android/avd, which is often empty while the SDK beside it holds several gigabytes. Both are listed per subdirectory and never as the whole SDK: deleting ~/Library/Android/sdk would take platform-tools with it, and there is no adb without it. The three Android entries now share a group.
  • VS Code updater cache (~/Library/Caches/com.microsoft.VSCode.ShipIt), a sibling of the VS Code cache directory that was already listed. Squirrel parks downloaded update payloads there and never prunes them.
  • pnpm cache (~/Library/Caches/pnpm). Separate from the package store: pnpm store path resolves to ~/Library/pnpm/store, while registry metadata and the dlx cache live under Caches. Neither covers the other.
  • rustup toolchains (~/.rustup/toolchains), grouped with the other version managers rather than with Rust Cargo — these are the compilers themselves, and removing one uninstalls that toolchain.
  • node-gyp headers (~/Library/Caches/node-gyp) and TypeScript type acquisition (~/Library/Caches/typescript), both of which keep one copy per version indefinitely.

Fixed

  • Repositories kept directly in the home directory were never scanned for project artifacts. Every scan root was a subdirectory of ~, and none of them reached its siblings, so a project in ~/my-project was invisible while the identical project in ~/Documents/my-project was found.

    The home directory is scanned one level down, and deliberately never as a project itself. Handing ~ to the scanner directly would have been worse than the bug: several tools leave a stray ~/package.json behind, which makes the whole home directory match the Node.js type — and .cache and .expo are on that type's artifact list. ~/.cache is the shared cache for uv, Puppeteer, Prisma, Bazel and HuggingFace, not a build directory, and it would have been offered for deletion. Matching at ~ would also have stopped the walk there, so the projects this is meant to find would never have been reached.

  • Artifacts reachable from more than one scan root are listed once. A duplicate row double-counted its size in the totals and made the second clean fail on an already-trashed path.

Changed

  • Total cache paths: 74.

Install

brew tap bysiber/cleardisk
brew trust bysiber/cleardisk
brew install --cask cleardisk

Or download the DMG below and drag ClearDisk to Applications.

v1.8.4

Choose a tag to compare

@github-actions github-actions released this 01 Aug 07:54

Changed

  • Risk levels for the AI tools now describe what deleting actually costs, rather than which app owns the directory.
  • Cursor and Windsurf are marked risky and no longer called caches. Both entries cover the whole ~/Library/Application Support/<app> directory, which for an AI editor is where chat history, workspace state and settings live.
  • Ollama models are marked caution instead of risky. They are downloads that ollama pull restores, and treating them as risky hid the largest entry in the list from the default view.

Install

brew tap bysiber/cleardisk
brew trust bysiber/cleardisk
brew install --cask cleardisk

Or download the DMG below and drag ClearDisk to Applications.

v1.8.3

Choose a tag to compare

@github-actions github-actions released this 31 Jul 22:13

Fixed

  • Claude Code and Claude Desktop data was listed as a deletable cache (#27). Both entries covered ~/.claude and ~/Library/Application Support/Claude in full, where session transcripts, job state, file history, plugins and settings live, and claimed the contents would be re-created. They are now marked risky and their descriptions state that the deletion is permanent.
  • Clean Safe Caches emptied caution entries as well as safe ones, so a single click reached Xcode Archives, Android emulators, editor workspace state and every language-version manager. It now cleans only the entries marked safe.

Changed

  • Universal binary for Apple Silicon and Intel.

Install

brew tap bysiber/cleardisk
brew trust bysiber/cleardisk
brew install --cask cleardisk

Or download the DMG below and drag ClearDisk to Applications.

v1.8.2

Choose a tag to compare

@github-actions github-actions released this 15 Jul 21:15
ec38552

Added

  • Added signed app produced pipeline to avoid xattr -cr ... quirk
  • Updated version derivation from scripts

Install

brew tap bysiber/cleardisk
brew trust bysiber/cleardisk
brew install --cask cleardisk

Or download the DMG below and drag ClearDisk to Applications.

ClearDisk v1.8.1

Choose a tag to compare

@bysiber bysiber released this 13 Jul 16:51

Fixed

  • No menu bar icon; the app appears to do nothing (#22, #16). NSApplication.delegate is a weak reference, and nothing else in the app retained AppDelegate — every other reference to it captured self weakly. Held only by a local in main(), ARC was free to release it after its last use, before or during app.run(), taking the status item and the popover with it. The process kept running (some users still saw notification banners) but there was no menu bar icon and clicks went nowhere. Whether it happened at all depended on the optimiser, which is why it reproduced on some Macs and not others. The delegate is now held for the life of the process.

Install

brew tap bysiber/cleardisk
brew trust bysiber/cleardisk
brew install --cask cleardisk

Or download the DMG below and drag ClearDisk to Applications. The app is ad-hoc signed and not
notarized, so macOS blocks it on first launch. To open it:

  • System Settings → Privacy & Security, scroll down, click Open Anyway, or
  • xattr -cr /Applications/ClearDisk.app in Terminal.

(Homebrew does this for you.)

ClearDisk v1.8.0

Choose a tag to compare

@bysiber bysiber released this 12 Jul 23:48

Added

  • Project scanner expanded from 11 to 23 project types — Python, CocoaPods, Carthage, Xcode, .NET/C#, Godot, Unity, Unreal, Haskell, Elixir, Zig, Crystal, plus the modern JS caches (.next, .nuxt, .svelte-kit, .angular, .turbo, .vite, .yarn/cache). A project now lists each of its caches as a separate row.
  • Cleanup history — every cleaned project cache is logged (what, where, how big, when) and can be reviewed or cleared from the Projects tab.
  • Failed cleans are now reported. If a directory cannot be moved to the Trash, the app says so — and offers to open Full Disk Access settings when the cause is permissions.

Fixed

  • Phantom savings: a clean whose trashItem failed still reported "Recovered X!", credited the savings and wrote a history entry, while the files were untouched on disk. Only bytes that actually reach the Trash are counted now, measured from disk rather than assumed.
  • Unclickable UI after reopening the popover: presenting a .sheet from inside a .transient NSPopover strands SwiftUI's presentation state when the popover auto-closes on focus loss. The project sheets are drawn inside the popover now, and every modal is torn down when the popover closes.
  • Duplicate artifact rows: a directory matching two project types (a Unity project is also a .NET project; a JS+Python monorepo shares dist/, build/, coverage/) was listed once per type, double-counting its size and failing the second clean. Each directory is surfaced once.
  • Data-loss guards: env/, venv/, .venv/ are only ever offered when a real virtualenv is proven (pyvenv.cfg / bin/activate), and Crystal's lib/ only when a shard.lock proves shards install ran. Unity Builds/ and Unreal Saved/ are no longer touched — those are user output, not caches.
  • The large-file scanner no longer looks inside media library packages (.photoslibrary, .fcpbundle, .imovielibrary, …), where deleting a single file corrupts the whole library.

Changed

  • The version is declared once, in scripts/build_app.sh, and read back from the bundle at runtime.
  • Project cache actions use the same trash icon as the Developer tab — they perform the same destructive action.

Install

brew tap bysiber/cleardisk
brew trust bysiber/cleardisk
brew install --cask cleardisk

Or download the DMG below and drag ClearDisk to Applications. The app is ad-hoc signed and not
notarized, so macOS blocks it on first launch. To open it:

  • System Settings → Privacy & Security, scroll down, click Open Anyway, or
  • xattr -cr /Applications/ClearDisk.app in Terminal.

(Homebrew does this for you.)

v1.7.1

Choose a tag to compare

@bysiber bysiber released this 19 Mar 11:49

What's New

  • Large Files tab redesign — folder-grouped cards (Downloads, Documents, Desktop, Movies, Music, Pictures)
  • Tap any folder card to expand and see large files inside, sorted by size
  • Added Music and Pictures folders to Large Files scan
  • Full row is tappable (previously only icon/text area triggered expand)

Download

Download the DMG below, open it, drag ClearDisk to Applications, then:

ℹ️ First launch: macOS will block it because it is not notarized. Choose one:

  • GUI: Open the app once (it will be blocked), then go to System Settings > Privacy and Security, scroll down and click Open Anyway
  • Terminal (if GUI does not work): xattr -cr /Applications/ClearDisk.app

This is needed because ClearDisk is not notarized ($99/yr Apple Developer fee). The app is fully open-source — you can verify every line of code.

v1.7.0

Choose a tag to compare

@bysiber bysiber released this 18 Mar 17:44

What's New

  • Game Engines: Unity Cache, Unity Hub Cache, UnityHub Templates, Unity Logs, Godot Export Templates, Godot Cache
  • Version Managers: nvm Node Versions, pyenv Versions, mise Installs
  • Python: Poetry Cache, pipenv Virtualenvs (community contribution by @IT-HONGREAT)
  • Build Tools: SBT/Ivy Cache, Gradle Wrapper, Bazel Cache
  • Cloud: AWS CLI Cache
  • Total developer cache paths: 63 (was 50)
  • Fixed: Deno cache path, JetBrains macOS path, Unity Hub path

Download

Download the DMG below, open it, drag ClearDisk to Applications, then:

ℹ️ First launch: macOS will block it because it is not notarized. Choose one:

  • GUI: Open the app once (it will be blocked), then go to System Settings > Privacy and Security, scroll down and click Open Anyway
  • Terminal (if GUI does not work): xattr -cr /Applications/ClearDisk.app\> - **Terminal** (if GUI does not work): xattr -cr /Applications/ClearDisk.app> - Terminal ul> - Terminal (if GUI dove> - **Terminale of code.

v1.6.9

Choose a tag to compare

@bysiber bysiber released this 07 Mar 18:50

What's New

  • Check for Updates -- New button in Settings to quickly check for the latest version (opens GitHub releases page in browser, zero network requests from the app)

Download

Download the DMG below, open it, drag ClearDisk to Applications, then:

ℹ️ First launch: macOS will block it because it is not notarized. Choose one:

  • GUI: Open the app once (it will be blocked), then go to System Settings > Privacy and Security, scroll down and click Open Anyway
  • Terminal (if GUI does not work): xattr -cr /Applications/ClearDisk.app

This is needed because ClearDisk is not notarized ($99/yr Apple Developer fee). The app is fully open-source -- you can verify every line of code.

v1.6.8

Choose a tag to compare

@bysiber bysiber released this 07 Mar 11:16

What's New

  • Check for Updates -- New button in Settings to quickly check for the latest version (opens GitHub releases page in browser, zero network requests from the app)

Download

Download the DMG below, open it, drag ClearDisk to Applications, then:

⚠️ First launch: macOS will block it because it is not notarized. Choose one:

  • GUI: Open the app once (it will be blocked), then go to System Settings > Privacy and Security, scroll down and click Open Anyway
  • Terminal (if GUI does not work): xattr -cr /Applications/ClearDisk.app

This is needed because ClearDisk is not notarized ($99/yr Apple Developer fee). The app is fully open-source -- you can verify every line of code.