Skip to content

Releases: SmartAndPoint/DeepDriveCleaner

DeepDriveCleaner 0.10.0

Choose a tag to compare

@Evgenii-Konev Evgenii-Konev released this 30 Oct 19:34

Sort a group's rows by name, size or last change, and take a folder's protection away from the command line.

DeepDriveCleaner deletes files. It can remove almost anything it is told to, by you or by an agent acting for you. Use it at your own risk: nobody who made it is responsible for what it removes. Read DISCLAIMER.md.

  • Sort in the Review window. Each group has a header with Name, Size and Changed. Click a title to sort by it, click again to reverse. Changed shows the newest change inside each folder, so the Python environments or node_modules you have not touched for a year come first. Rows with no date go last either way. The Items view has the same header in place of its old menu, and the sort is kept across launches. Sorting never changes what is selected.
  • ddc keep remove <folder>. Removes the .ddc-keep file of one folder the last scan named as kept, and nothing else: it refuses a folder outside the scanned roots or one that changed since the scan, and writes what it did to the journal. At a terminal it asks first.
  • The scan report says what protects a kept finding and when each finding last changed. protection names the .ddc-keep file, exclusion or skip behind a kept finding; modified is the newest change inside a finding. Both are optional; the report stays at schema version 2.
  • ddc rules --platform linux|windows prints another platform's rules, and the human output lists each rule's folders.

Upgrading. From 0.8.0 the app offers this version itself: the popover says "Version 0.10.0 is available", and Update and Relaunch installs it. Settings → General → Check Now checks at once. brew upgrade --cask deepdrivecleaner and the zip below work too. Scripts that read the journal (journal.jsonl) see schema version 4 and a new keep-remove line.

How it was built, decision by decision, is public too: DeepDriveCleaner-projectstore.

Install (Apple Silicon, macOS 26)

brew install --cask smartandpoint/tap/deepdrivecleaner

DeepDriveCleaner-0.10.0.zip is the app the cask installs; the app updates itself from appcast.xml. deepdrivecleaner-0.10.0-aarch64-apple-darwin.tar.gz is the command-line tool alone, for a manual install.

The command-line tool alone, into ~/.local/bin, with no app and no Homebrew:

curl -fsSL https://raw.githubusercontent.com/SmartAndPoint/DeepDriveCleaner/v0.10.0/packaging/install/install.sh | sh

Build

  • Commit: 573591412d43f2388b7f850d749f467f0f970bc4
  • Toolchain: rustc 1.99.1 (58cf8f9c3 2026-10-13)
  • Command-line tool: RUSTFLAGS="--remap-path-prefix=$HOME=~" cargo build --release --locked --target aarch64-apple-darwin -p ddc-cli
  • App: scripts/build-app.sh --dist (Release, the command-line tool in Contents/Helpers)
  • Signed with the SmartAndPoint Developer ID (team 8MSDJTBW2D): the app as com.smartandpoint.deepdrivecleaner, the command-line tool as com.smartandpoint.deepdrivecleaner.cli. Notarized by Apple; the app's ticket is stapled
  • SHA-256 of DeepDriveCleaner-0.10.0.zip: b5380e05b133d03a286ba870de1d0e8a62e5efd2a3b2aa587b0b35f277a9015c
  • SHA-256 of deepdrivecleaner-0.10.0-aarch64-apple-darwin.tar.gz: 9554663fbc52f94c67975e7280a311adeb6d2a2d43341b8391ae8d612bfb1a3c
  • Verify a download with SHA256SUMS: shasum -a 256 -c --ignore-missing SHA256SUMS (macOS) or sha256sum -c --ignore-missing SHA256SUMS (Linux)

DeepDriveCleaner 0.9.0

Choose a tag to compare

@Evgenii-Konev Evgenii-Konev released this 30 Oct 14:57

Pick exactly what to clean across every group, and find a coding agent's folders in Finder.

DeepDriveCleaner deletes files. It can remove almost anything it is told to, by you or by an agent acting for you. Use it at your own risk: nobody who made it is responsible for what it removes. Read DISCLAIMER.md.

  • Deselect All in the Review window. The button sits beside the selection count. It clears every row in every group, rows the filter hides included, and changes nothing else. Then tick what you want in each group and press Clean: only the ticked rows go. Scan Again and Settings keep your selection; opening the window again from the popover starts from the default one.
  • Show in Finder for coding agents. In the Whole disk view, the Coding Agents section's context menu shows a harness's folders or one project's folder in Finder. Sessions, records and transcripts have no menu: they are not folders of their own.

Upgrading. From 0.8.0 the app offers this version itself: the popover says "Version 0.9.0 is available", and Update and Relaunch installs it. Settings → General → Check Now checks at once. brew upgrade --cask deepdrivecleaner and the zip below work too.

How it was built, decision by decision, is public too: DeepDriveCleaner-projectstore.

Install (Apple Silicon, macOS 26)

brew install --cask smartandpoint/tap/deepdrivecleaner

DeepDriveCleaner-0.9.0.zip is the app the cask installs; the app updates itself from appcast.xml. deepdrivecleaner-0.9.0-aarch64-apple-darwin.tar.gz is the command-line tool alone, for a manual install.

The command-line tool alone, into ~/.local/bin, with no app and no Homebrew:

curl -fsSL https://raw.githubusercontent.com/SmartAndPoint/DeepDriveCleaner/v0.9.0/packaging/install/install.sh | sh

Build

  • Commit: eea7d3c202a21f445d6c93dbf1f7c7ac5d1a6c50
  • Toolchain: rustc 1.99.1 (58cf8f9c3 2026-10-13)
  • Command-line tool: RUSTFLAGS="--remap-path-prefix=$HOME=~" cargo build --release --locked --target aarch64-apple-darwin -p ddc-cli
  • App: scripts/build-app.sh --dist (Release, the command-line tool in Contents/Helpers)
  • Signed with the SmartAndPoint Developer ID (team 8MSDJTBW2D): the app as com.smartandpoint.deepdrivecleaner, the command-line tool as com.smartandpoint.deepdrivecleaner.cli. Notarized by Apple; the app's ticket is stapled
  • SHA-256 of DeepDriveCleaner-0.9.0.zip: c8ab85f8dee09d1bdfb0b024edcd7507c8fdcb1a1ff424ac21e7ba5786277fd8
  • SHA-256 of deepdrivecleaner-0.9.0-aarch64-apple-darwin.tar.gz: 3b079c7187257bc2d2530bc342dccfa410e801e24435581a2e74d513573baa7f
  • Verify a download with SHA256SUMS: shasum -a 256 -c --ignore-missing SHA256SUMS (macOS) or sha256sum -c --ignore-missing SHA256SUMS (Linux)

DeepDriveCleaner 0.8.0

Choose a tag to compare

@Evgenii-Konev Evgenii-Konev released this 30 Oct 09:39

The app updates itself, through Sparkle, and still works with the Homebrew cask.

DeepDriveCleaner deletes files. It can remove almost anything it is told to, by you or by an agent acting for you. Use it at your own risk: nobody who made it is responsible for what it removes. Read DISCLAIMER.md.

  • Updates in the app. The app checks for a new version once a day. When one is out, the popover says "Version X is available", with a link to its release notes and Update and Relaunch. One press downloads it, checks its signature, installs it and opens the new version at the same place. Full Disk Access, the scheduled scan and Open at login stay as they were.
  • Never in the middle of a job. While a scan, a clean or a free runs, the install waits and the popover says so; it goes on when the job ends. While an install waits or runs, Scan Now and the clean and free buttons are off, and a scheduled scan waits too.
  • Settings → General has Check for updates daily (on by default), the time of the last check, and Check Now.
  • Network. The update check is the app's only network request of its own: one HTTPS request a day to github.com for appcast.xml. GitHub sees your IP address, the time, your system language and the User-Agent DeepDriveCleaner, with no version. No system profile is sent. The README's Network section has the details; switch the daily check off to make no request.
  • Homebrew. The cask now says auto_updates true. A plain brew upgrade still upgrades the app while it is older than the cask, and leaves it alone once it has updated itself. brew uninstall --zap also removes Sparkle's cache.

Upgrading. This version is the first with the updater, so reach it the old way: brew upgrade --cask deepdrivecleaner, or the zip below. The upgrade quits the app. It opens again at your next login if Open at login is on, or when you open it yourself. Do not upgrade while the app is cleaning. From here on, the app offers each new version itself.

How it was built, decision by decision, is public too: DeepDriveCleaner-projectstore.

Install (Apple Silicon, macOS 26)

brew install --cask smartandpoint/tap/deepdrivecleaner

DeepDriveCleaner-0.8.0.zip is the app the cask installs; the app updates itself from appcast.xml. deepdrivecleaner-0.8.0-aarch64-apple-darwin.tar.gz is the command-line tool alone, for a manual install.

Build

  • Commit: 356564c64e46cb2fef2ee7ffe79cc57ba35ddb8f
  • Toolchain: rustc 1.99.1 (58cf8f9c3 2026-10-13)
  • Command-line tool: RUSTFLAGS="--remap-path-prefix=$HOME=~" cargo build --release --locked --target aarch64-apple-darwin -p ddc-cli
  • App: scripts/build-app.sh --dist (Release, the command-line tool in Contents/Helpers)
  • Signed with the SmartAndPoint Developer ID (team 8MSDJTBW2D): the app as com.smartandpoint.deepdrivecleaner, the command-line tool as com.smartandpoint.deepdrivecleaner.cli. Notarized by Apple; the app's ticket is stapled
  • SHA-256 of DeepDriveCleaner-0.8.0.zip: 5c5b5378c8e155c21899eee84e5b1fc8c7584a523d003e1a9ff1c4ff5a9630e7
  • SHA-256 of deepdrivecleaner-0.8.0-aarch64-apple-darwin.tar.gz: aa1bf52d1c440ef497b82c3f97de585735260e6a27f033a3fb24251a1a9cf9d8
  • Verify a download with SHA256SUMS: shasum -a 256 -c --ignore-missing SHA256SUMS (macOS) or sha256sum -c --ignore-missing SHA256SUMS (Linux)

DeepDriveCleaner 0.7.0

Choose a tag to compare

@Evgenii-Konev Evgenii-Konev released this 29 Oct 14:57

Homebrew packages with their sizes and brew uninstall, and the Whole disk rows freed together in one sheet.

DeepDriveCleaner deletes files. It can remove almost anything it is told to, by you or by an agent acting for you. Use it at your own risk: nobody who made it is responsible for what it removes. Read DISCLAIMER.md.

  • Homebrew packages. The Homebrew row on Whole disk has Packages…: every installed formula with the size of its versions in the Cellar, measured on disk, and what needs it. A formula nothing needs has Uninstall…, which runs brew uninstall --formula, so a cask of the same name is never touched. Right before it runs, DeepDriveCleaner reads Homebrew again and refuses, saying why, when the formula was pinned, changed versions, gained a formula or cask that needs it, or has a service job. After it, the sheet offers the dependencies nothing else needs any more, with their own confirmation. The confirmation says what brew cannot know: programs outside Homebrew that use the formula, such as a virtualenv linked against its openssl.
  • Free the checked rows in one sheet. Rows that can free space with their tool (simulator runtimes macOS can delete, Homebrew's cleanup, conda environments and package caches in /opt) have a checkbox. Free N Checked… opens one sheet with each tool's own dry run, its command and what it cannot undo, then one confirmation. If some can no longer run, the sheet says why and runs only the others ("Free 1 of 2"). Each row reports its own result.
  • For scripts. ddc disk brew-packages --json lists the formulae (docs/brew-packages.schema.json). ddc disk free gains brew-uninstall and brew-uninstall-orphans, which the terminal prompt does not offer. The free list and report are now at version 3; the disk report stays at version 2. See docs/disk-free.schema.json.

Upgrading. Run brew upgrade --cask deepdrivecleaner. The upgrade quits the app. It opens again at your next login if Open at login is on, or when you open it yourself. Do not upgrade while the app is cleaning.

How it was built, decision by decision, is public too: DeepDriveCleaner-projectstore.

Install (Apple Silicon, macOS 26)

brew install --cask smartandpoint/tap/deepdrivecleaner

DeepDriveCleaner-0.7.0.zip is the app the cask installs. deepdrivecleaner-0.7.0-aarch64-apple-darwin.tar.gz is the command-line tool alone, for a manual install.

Build

  • Commit: 74117a26f2759f82bb04e36bb0a990302b01fd0c
  • Toolchain: rustc 1.99.1 (58cf8f9c3 2026-10-13)
  • Command-line tool: RUSTFLAGS="--remap-path-prefix=$HOME=~" cargo build --release --locked --target aarch64-apple-darwin -p ddc-cli
  • App: scripts/build-app.sh --dist (Release, the command-line tool in Contents/Helpers)
  • Signed with the SmartAndPoint Developer ID (team 8MSDJTBW2D): the app as com.smartandpoint.deepdrivecleaner, the command-line tool as com.smartandpoint.deepdrivecleaner.cli. Notarized by Apple; the app's ticket is stapled
  • SHA-256 of DeepDriveCleaner-0.7.0.zip: 6525319466e57c85f095513adc017eb65f07d851746d9b21899ea2a1cbec616d
  • SHA-256 of deepdrivecleaner-0.7.0-aarch64-apple-darwin.tar.gz: 0a09d3db273f48649aa6c066c49fae5794c5491a242d43407087ef4e904a1b60

DeepDriveCleaner 0.6.0

Choose a tag to compare

@Evgenii-Konev Evgenii-Konev released this 29 Oct 12:21

conda environments and package caches are cleaned with conda itself, User data folders move their picks to the Trash on their own, the Trash gets its own row, and the app says when the saved report is not of your folders. 0.5.0 was never published; its changes ship here.

DeepDriveCleaner deletes files. It can remove almost anything it is told to, by you or by an agent acting for you. Use it at your own risk: nobody who made it is responsible for what it removes. Read DISCLAIMER.md.

  • conda, with conda. A conda environment in your home folder is a Review finding; the cleaner removes it with conda env remove -p <path>, run by the install that owns it, never by the conda on your path, and moves it to the Trash when that conda cannot. The package cache (cache.conda) is Safe and cleaned with conda clean, limited to that install's own pkgs folder; it is skipped when conda links packages by symlink or its package folders cannot be limited to one.
  • conda installs in /opt on Whole disk. Each environment of an /opt install is a row under the Conda row with Remove Environment…, and the Conda row has Clean Package Cache… (each install's row has it when there are several). Each opens a sheet with conda's own dry run and the exact command. The base environment, an environment a running process uses, and a folder your user cannot write are never offered; the row says why.
  • Move a folder's picks to the Trash. A User data folder (Downloads, Movies and the others) with picked files shows "2 picked · 3.1 GiB" and Move 2 from Movies to the Trash…, which cleans only that folder's picks. A sheet whose every item goes to the Trash says "Move N items to the Trash?".
  • Next scan opens Settings. In the popover, "Next scan tomorrow, 11:00" opens Settings at Schedule; "Replace the old background scan first" opens Settings at Permissions.
  • The Trash is its own row. It is no longer counted in Your data. In the Review window the Trash entry says what it is and has Open the Trash, which opens it in Finder. There is nothing to select there: you empty the Trash in Finder. After a clean, the result says how much went to the Trash, and the note about APFS space shows only when space was actually freed.
  • The app says when the saved report is not of your folders. A ddc scan of other folders in a terminal writes to the same report the app reads. The Review window and the popover now say so: "This report is of /private, not of your home folder and the folders in Settings", or "This report is of ~/Projects only". Scan Now replaces it. When the report is of folders outside your home folder and the folders in Settings, or of another home folder, Clean, Clean selected… and Protect are off. ddc scan <paths> into the app's data folder now warns that the app will show this report until its next scan.
  • Show in Finder on Whole disk rows. Rows that DeepDriveCleaner does not clean itself, such as Applications, Library, /opt, Homebrew and the crash dumps, have a Show in Finder button and a context menu. Finder opens at the folders that exist now, at their usual paths, never under /System/Volumes/Data. The macOS updates row has Open Software Update.
  • For scripts. ddc disk free gains conda-env-remove and conda-clean. The disk report and the free list and report are now at version 2: the disk report has a conda section, and each area carries an optional reveal (finder or software-update). See docs/disk.schema.json and docs/disk-free.schema.json.

Upgrading. Run brew upgrade --cask deepdrivecleaner. The upgrade quits the app. It opens again at your next login if Open at login is on, or when you open it yourself. Do not upgrade while the app is cleaning.

How it was built, decision by decision, is public too: DeepDriveCleaner-projectstore.

Install (Apple Silicon, macOS 26)

brew install --cask smartandpoint/tap/deepdrivecleaner

DeepDriveCleaner-0.6.0.zip is the app the cask installs. deepdrivecleaner-0.6.0-aarch64-apple-darwin.tar.gz is the command-line tool alone, for a manual install.

Build

  • Commit: 2af794081526d3fbfe82b1487cba2583bd62384e
  • Toolchain: rustc 1.99.1 (58cf8f9c3 2026-10-13)
  • Command-line tool: RUSTFLAGS="--remap-path-prefix=$HOME=~" cargo build --release --locked --target aarch64-apple-darwin -p ddc-cli
  • App: scripts/build-app.sh --dist (Release, the command-line tool in Contents/Helpers)
  • Signed with the SmartAndPoint Developer ID (team 8MSDJTBW2D): the app as com.smartandpoint.deepdrivecleaner, the command-line tool as com.smartandpoint.deepdrivecleaner.cli. Notarized by Apple; the app's ticket is stapled
  • SHA-256 of DeepDriveCleaner-0.6.0.zip: 8cdfd1a0d2b6238b899ce10a4d87e6c9ce019289a09fa4d8c47e4afa81a3a26f
  • SHA-256 of deepdrivecleaner-0.6.0-aarch64-apple-darwin.tar.gz: c207d294bd28ba369e36759be88382340022e402acbe7fcbe4ded4a6e6102ca8

DeepDriveCleaner 0.4.1

Choose a tag to compare

@Evgenii-Konev Evgenii-Konev released this 29 Oct 04:47

Fixes from a user's screen recording of the clean flow: Docker Desktop, items that would be skipped anyway, and what stays selected after a clean.

DeepDriveCleaner deletes files. It can remove almost anything it is told to, by you or by an agent acting for you. Use it at your own risk: nobody who made it is responsible for what it removes. Read DISCLAIMER.md.

  • Docker prune runs only while Docker Desktop answers. Before it prunes, DeepDriveCleaner asks Docker Desktop for its engine version, and waits up to 5 seconds. If Docker Desktop is not running, does not answer, or has no desktop-linux context, the Docker item is skipped and says why. No prune command runs. The confirmation sheet predicts this before you clean. When a prune does fail, the result shows Docker's own last line, not just an exit code.
  • Clean is not offered when every item would be skipped. When the sheet's check finds that every item would be skipped, the Clean button is off. The sheet then says what to do: quit the named apps, wait for a process, start Docker Desktop, or Scan Again for items that changed since the scan. "Frees about" leaves out the items that would be skipped. Clean also waits for the check to finish, and the check has a Stop button.
  • After a clean, only skips that can clear stay selected. An item stays selected only when one step of yours can clear its skip: an app was running, a process held the folder, or Docker Desktop was not answering. Items that changed since the scan, tool commands that already ran, and causes that never clear are deselected. The result says how many items stay selected. When some items changed, it offers Scan Again. A tool-cleaned row keeps a short note until the next scan, such as "Pruned 3 min ago".
  • Fixes.
    • An item that changed after the scan was skipped at every later clean, until a full scan. The report saved after a clean now holds what the clean's own check found.
    • The confirmation sheet no longer shows an empty panel while it closes.
  • For scripts. ddc clean --json reports version 3: a skip reason tool-not-ready with program and detail, and each tool command's output. --progress json events are version 2, and actions.jsonl lines are version 3. See docs/clean.schema.json and docs/progress.schema.json.

Upgrading. Run brew upgrade --cask deepdrivecleaner. The upgrade quits the app. It opens again at your next login if Open at login is on, or when you open it yourself. Do not upgrade while the app is cleaning.

How it was built, decision by decision, is public too: DeepDriveCleaner-projectstore.

Install (Apple Silicon, macOS 26)

brew install --cask smartandpoint/tap/deepdrivecleaner

DeepDriveCleaner-0.4.1.zip is the app the cask installs. deepdrivecleaner-0.4.1-aarch64-apple-darwin.tar.gz is the command-line tool alone, for a manual install.

Build

  • Commit: fa7cff789d5bdd71ad72ec90ce0f465afcd77f17
  • Toolchain: rustc 1.99.1 (58cf8f9c3 2026-10-13)
  • Command-line tool: RUSTFLAGS="--remap-path-prefix=$HOME=~" cargo build --release --locked --target aarch64-apple-darwin -p ddc-cli
  • App: scripts/build-app.sh --dist (Release, the command-line tool in Contents/Helpers)
  • Signed with the SmartAndPoint Developer ID (team 8MSDJTBW2D): the app as com.smartandpoint.deepdrivecleaner, the command-line tool as com.smartandpoint.deepdrivecleaner.cli. Notarized by Apple; the app's ticket is stapled
  • SHA-256 of DeepDriveCleaner-0.4.1.zip: 526eef1e6da117889e0a1d09718cea075d82f54446303c0c2e5c764bd5b8f908
  • SHA-256 of deepdrivecleaner-0.4.1-aarch64-apple-darwin.tar.gz: 577d7b35360f15b0fc99eaa0fba999eacc9f5102452a8b02a399a460cdebc2f5

DeepDriveCleaner 0.4.0

Choose a tag to compare

@Evgenii-Konev Evgenii-Konev released this 28 Oct 16:59

The whole startup disk, the coding agents on it, and freeing two areas with their own tools.

DeepDriveCleaner deletes files. It can remove almost anything it is told to, by you or by an agent acting for you. Use it at your own risk: nobody who made it is responsible for what it removes. Read DISCLAIMER.md.

  • Whole disk. A new window, opened from the popover ("Where Does the Rest Go?") and shown in the Review window, measures the whole startup disk, not only the home folder. It shows the disk as one bar and has a row per area: Applications, the shared Library, macOS's downloaded data, Homebrew, Conda, /usr/local, simulator runtimes, temporary folders, the sleep image and the other users. Each row says what it is and what frees it. Not counted shows what macOS uses that no folder accounts for. Stop keeps what was measured so far.

  • Coding agents. The Whole disk view lists what Claude Code, Codex, Cursor and opencode keep under your home folder: their folders and sizes, their live sessions and how many transcripts of ended ones they keep. It reads session records' named fields, file names and sizes only, never a transcript's content, and it removes nothing.

  • Free space with the owning tool. Two rows of the Whole disk view now have a button:

    • Delete Runtime… on a simulator runtime runs simctl runtime delete. It is offered only for a runtime under /System/Library/AssetsV2 that macOS says can be deleted and that no simulator is using. The runtime does not go to the Trash. If it is the runtime of an installed Xcode's SDK, Xcode downloads it again (several GB) at the next build for it.
    • Clean Up Homebrew… runs brew cleanup with HOMEBREW_NO_AUTOREMOVE=1. It removes old versions in /opt/homebrew/Cellar and old downloads in ~/Library/Caches/Homebrew, and uninstalls nothing.

    Each button first shows the tool's own dry run and the exact command, and runs only after you confirm. Afterwards the row says what was freed, measured, not assumed. When a tool needs an administrator, the sheet gives the command to paste into Terminal; DeepDriveCleaner never asks for a password. Nothing scheduled runs these actions.

  • For scripts.

    • ddc disk prints the whole-disk table, or --json with docs/disk.schema.json, and saves last-disk.json.
    • ddc disk agents [--json] [--no-sizes] lists the coding agents (docs/agents.schema.json).
    • ddc disk free asks at a terminal for each action, with --dry-run for the tools' own dry runs; the app passes its confirmed list with --actions (docs/disk-free.schema.json).
    • actions.jsonl lines carry a kind and the journal has its own schema version, now 2. The scan report keeps version 1.
  • Fixes.

    • Scans of large folder trees no longer slow down quadratically.
    • Settings no longer shows the disabled "Clean download caches automatically" choice; DeepDriveCleaner does not clean on its own.
    • brew uninstall --zap also removes the fallback scheduler agent that 0.3.0 may have registered.

Upgrading. Run brew upgrade --cask deepdrivecleaner. The upgrade quits the app; it opens again at your next login if Open at login is on, or when you open it. Do not upgrade while the app is cleaning.

How it was built, decision by decision, is public too: DeepDriveCleaner-projectstore.

Install (Apple Silicon, macOS 26)

brew install --cask smartandpoint/tap/deepdrivecleaner

DeepDriveCleaner-0.4.0.zip is the app the cask installs. deepdrivecleaner-0.4.0-aarch64-apple-darwin.tar.gz is the command-line tool alone, for a manual install.

Build

  • Commit: 04c421ad04b13f1d9d8661a01c2e80c5ce21ed15
  • Toolchain: rustc 1.99.1 (58cf8f9c3 2026-10-13)
  • Command-line tool: RUSTFLAGS="--remap-path-prefix=$HOME=~" cargo build --release --locked --target aarch64-apple-darwin -p ddc-cli
  • App: scripts/build-app.sh --dist (Release, the command-line tool in Contents/Helpers)
  • Signed with the SmartAndPoint Developer ID (team 8MSDJTBW2D): the app as com.smartandpoint.deepdrivecleaner, the command-line tool as com.smartandpoint.deepdrivecleaner.cli. Notarized by Apple; the app's ticket is stapled
  • SHA-256 of DeepDriveCleaner-0.4.0.zip: e521b508334239578853b480ce8cdd11ffe076a11d96e56e9062e58b2a142a9d
  • SHA-256 of deepdrivecleaner-0.4.0-aarch64-apple-darwin.tar.gz: 8803a6360f443952d6c888ce15e346a063a41746e397a43921d9fd31f2983b1c

DeepDriveCleaner 0.3.0

Choose a tag to compare

@Evgenii-Konev Evgenii-Konev released this 28 Oct 04:48

Settings, and scheduled scans that notify from the app.

DeepDriveCleaner deletes files. It can remove almost anything it is told to, by you or by an agent acting for you. Use it at your own risk: nobody who made it is responsible for what it removes. Read DISCLAIMER.md.

  • Settings. The Settings window has six tabs:

    • General: Open at login, the icon, and where the command-line tool is.
    • Folders: what to scan and what to exclude. External disks can be added too.
    • Schedule: daily or weekly, at a whole hour, with Pause.
    • Automation: when to notify, and what happens after a scheduled scan.
    • Types: what a scan offers to clean.
    • Permissions: Full Disk Access, notifications, and the scheduled scan.

    A scan from Terminal uses the same folders, types and sizes.

  • Two ways to exclude a folder.

    • Count, never clean: the folder is still read and sized, and it is shown as yours.
    • Skip entirely: the folder is never read. Scans get faster, and Review says the folder was not scanned. No clean touches anything inside it.
  • Types follow what you clean. Package downloads (npm, pnpm, yarn, bun, pip, Poetry, Homebrew, CocoaPods) are now separate from toolchain caches (Cargo, uv, Go, Gradle), which an offline build needs. The Maven repository and test browsers also have their own row. Each row shows the classes of what it holds.

  • Scheduled scans from the app.

    • Default schedule. The app scans daily at 10:00 by default, and you can change that in Settings → Schedule. The scan only reads; nothing is removed.
    • Notifications. When there is enough to free, or a disk is almost full, the notification carries the app's name and icon and offers two actions, Review and Remind Me Tomorrow.
    • Optional limits. Notifications can be kept to working hours, or you can turn them off and keep only the badge on the menu bar icon.
  • Replacing the old background scan. If ddc schedule install set up a background scan, the app offers to replace it and keeps your interval and threshold. Until you replace it, the old scan keeps running and the app does not schedule a second one.

  • For scripts.

    • ddc scan and ddc clean take --skip PATH, which adds to settings.json's new skips.
    • The scan report lists skipped folders in not_scanned.
    • ddc rules --json has the new groups.
    • Both schemas keep version 1.

Upgrading. Run brew upgrade --cask deepdrivecleaner.

  • The upgrade quits the app. It opens again at your next login if Open at login is on, or when you open it. Do not upgrade while the app is cleaning.
  • After the upgrade the app schedules a daily scan, even if you had removed the command-line one. Settings → Schedule turns it off.
  • macOS shows that DeepDriveCleaner added a background item.

How it was built, decision by decision, is public too: DeepDriveCleaner-projectstore.

Install (Apple Silicon, macOS 26)

brew install --cask smartandpoint/tap/deepdrivecleaner

DeepDriveCleaner-0.3.0.zip is the app the cask installs. deepdrivecleaner-0.3.0-aarch64-apple-darwin.tar.gz is the command-line tool alone, for a manual install.

Build

  • Commit: 9d0418c270d68c59321a1b787d6d2b04759c65f2
  • Toolchain: rustc 1.99.1 (58cf8f9c3 2026-10-13)
  • Command-line tool: RUSTFLAGS="--remap-path-prefix=$HOME=~" cargo build --release --locked --target aarch64-apple-darwin -p ddc-cli
  • App: scripts/build-app.sh --dist (Release, the command-line tool in Contents/Helpers)
  • Signed with the SmartAndPoint Developer ID (team 8MSDJTBW2D): the app as com.smartandpoint.deepdrivecleaner, the command-line tool as com.smartandpoint.deepdrivecleaner.cli. Notarized by Apple; the app's ticket is stapled
  • SHA-256 of DeepDriveCleaner-0.3.0.zip: aecc16ca308116ffc28d6ed3e7d69170d07ac934a01c9ee16395c5e042cb8823
  • SHA-256 of deepdrivecleaner-0.3.0-aarch64-apple-darwin.tar.gz: 876e2b16b554b1654a2badd4ac6b00f75864c7fb5b1c4c039c37ada79f58b820

DeepDriveCleaner 0.2.4

Choose a tag to compare

@Evgenii-Konev Evgenii-Konev released this 25 Oct 10:59

A clean that checks only what you picked, and needs no scan after it.

DeepDriveCleaner deletes files. It can remove almost anything it is told to, by you or by an agent acting for you. Use it at your own risk: nobody who made it is responsible for what it removes. Read DISCLAIMER.md.

  • "Checking again" checks only what you picked. Before it cleans, the app no longer rescans your whole home folder. It reads the items you confirmed and what lies above and beside them: the folders that could now claim or protect an item, a .ddc-keep file, an exclude, a lock file or .git. Every item is still checked again, and anything that changed is skipped with a reason, as before. A selection that holds an nvm, pyenv or rustup version still reads the whole home folder: a project anywhere can pin that version.
  • No scan after the clean. The clean updates the last scan's report with what it removed, so the popover and the Review window show the result at once. The report keeps the date of the scan it came from, and the next scan replaces it. After a cache cleaned by its own tool, that cache is measured again.
  • For scripts. ddc clean --items follows the same rules. Its JSON report says last_scan_saved when it updated last-scan.json. The terminal's ddc clean still rescans before its plan.
  • The app log times each clean: the wait, the check, the time to the first action, and the clean itself, in one line.

Upgrading. brew upgrade --cask deepdrivecleaner. The upgrade quits the app; it opens again at your next login if Open at login is on, or when you open it. Do not upgrade while the app is cleaning.

How it was built, decision by decision, is public too: DeepDriveCleaner-projectstore.

Install (Apple Silicon, macOS 26)

brew install --cask smartandpoint/tap/deepdrivecleaner

DeepDriveCleaner-0.2.4.zip is the app the cask installs. deepdrivecleaner-0.2.4-aarch64-apple-darwin.tar.gz is the command-line tool alone, for a manual install.

Build

  • Commit: a95d442e98df4dfe5ac454652d3b0b28c6cd12e9
  • Toolchain: rustc 1.99.1 (58cf8f9c3 2026-10-13)
  • Command-line tool: RUSTFLAGS="--remap-path-prefix=$HOME=~" cargo build --release --locked --target aarch64-apple-darwin -p ddc-cli
  • App: scripts/build-app.sh --dist (Release, the command-line tool in Contents/Helpers)
  • Signed with the SmartAndPoint Developer ID (team 8MSDJTBW2D): the app as com.smartandpoint.deepdrivecleaner, the command-line tool as com.smartandpoint.deepdrivecleaner.cli. Notarized by Apple; the app's ticket is stapled
  • SHA-256 of DeepDriveCleaner-0.2.4.zip: cacc887fb619478972e08ccb6ac0e301ce1263ed19be451f8b82549b226f611c
  • SHA-256 of deepdrivecleaner-0.2.4-aarch64-apple-darwin.tar.gz: 119fc1e166c40dcc8485f2cbb04137e32875d4a925110e8bc036a78f206faabb

DeepDriveCleaner 0.2.3

Choose a tag to compare

@Evgenii-Konev Evgenii-Konev released this 25 Oct 08:55

A clean that shows how far it is, in the app and in Terminal.

DeepDriveCleaner deletes files. It can remove almost anything it is told to, by you or by an agent acting for you. Use it at your own risk: nobody who made it is responsible for what it removes. Read DISCLAIMER.md.

  • The clean shows its progress. After you confirm, the sheet shows two steps. "Checking again" counts the files read against your last scan's total. "Cleaning" fills a bar by the bytes processed, with the item in flight striped, and says how many items are done, how many were skipped, and which folder or tool is at work. While a tool's own command runs, the sheet says that Stop interrupts it.
  • The scan counts its files. The popover shows how many files a running scan has read.
  • Docker and Podman are counted honestly. What their prune commands free lies inside their disk image, where no total can see it. "Frees about" now leaves it out, and the confirmation says how much is inside each image.
  • ddc clean in Terminal shows a progress line while it cleans: the item, its size and its tool, cleared before the result. Ctrl-C while it checks the selected folders for .ddc-keep files now stops at once, and keeps every folder it had not finished checking.
  • For scripts: --progress json. ddc scan and ddc clean write one JSON event per line to stderr: the walk's counters, the phase, and each item's outcome as it happens. The format is docs/progress.schema.json.

Upgrading. brew upgrade --cask deepdrivecleaner. The upgrade quits the app; it opens again at your next login if Open at login is on, or when you open it. Do not upgrade while the app is cleaning.

How it was built, decision by decision, is public too: DeepDriveCleaner-projectstore.

Install (Apple Silicon, macOS 26)

brew install --cask smartandpoint/tap/deepdrivecleaner

DeepDriveCleaner-0.2.3.zip is the app the cask installs. deepdrivecleaner-0.2.3-aarch64-apple-darwin.tar.gz is the command-line tool alone, for a manual install.

Build

  • Commit: 430d82cbc37b11bd3f6754a0240935f26b86516b
  • Toolchain: rustc 1.99.1 (58cf8f9c3 2026-10-13)
  • Command-line tool: RUSTFLAGS="--remap-path-prefix=$HOME=~" cargo build --release --locked --target aarch64-apple-darwin -p ddc-cli
  • App: scripts/build-app.sh --dist (Release, the command-line tool in Contents/Helpers)
  • Signed with the SmartAndPoint Developer ID (team 8MSDJTBW2D): the app as com.smartandpoint.deepdrivecleaner, the command-line tool as com.smartandpoint.deepdrivecleaner.cli. Notarized by Apple; the app's ticket is stapled
  • SHA-256 of DeepDriveCleaner-0.2.3.zip: 8de766f2ebc724c5600ffb4dea5e62dc34f369b99561c8c8ea4b5ebf94666881
  • SHA-256 of deepdrivecleaner-0.2.3-aarch64-apple-darwin.tar.gz: 8f9d2df859b63b10fd1745ba316b381f909eeaca7a9e65b3e85d7af3e7a550d1