Skip to content
Crimson341Public

About

Native macOS cleaner in SwiftUI: clutter and large files, browser data, duplicates, photo analysis, app uninstalls, startup items.

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Latest commit

 

History

2 Commits

Folders and files

Repository files navigation

ccleander

A native macOS cleaner covering CCleaner for Mac's feature set: Clean Clutter (incl. Large Files), Browser Cleaner, Find Duplicates, Analyze Photos, Uninstall Apps, Manage Startup Items, scheduled browser cleaning and Trash emptying, bookmark import, System Monitor and Statistics.

Swift + SwiftUI, Swift Package Manager, macOS 14+. Builds with the Command Line Tools (no Xcode).

Build & run

scripts/build-app.sh            # release build -> build/ccleander.app (ad-hoc signed)
open build/ccleander.app

Safe ways to try it without touching your data:

# Simulate every clean (nothing is removed)
open build/ccleander.app --args --dry-run
# Point the whole app at a fixture tree instead of your home folder
# (use the `=` form: a space-separated value as the last argument can leave the app with no window)
open build/ccleander.app --args --sandbox-root=/path/to/fixture --dry-run
# Open on a given screen, e.g. --module=clutter (any Module raw value)
open build/ccleander.app --args --sandbox-root=/path/to/fixture --dry-run --module=browser
# Render every screen (light + dark) to PNGs of the app's own window, then quit.
# Needs a sandbox or dry run; no Screen Recording permission required.
build/ccleander.app/Contents/MacOS/ccleander --sandbox-root=/path/to/fixture --dry-run --snapshot-dir=/tmp/shots

Verify

swift run ccleander-verify            # all checks
swift run ccleander-verify clutter    # one module
swift run ccleander-verify --keep     # keep fixture trees for inspection

Each check builds a throwaway tree under $TMPDIR/ccleander-verify/ that mirrors the macOS layout (home/Library/Caches, Applications, …), runs the module against it in dry-run and real modes, and asserts on the result. Nothing outside the fixture is modified. (The Command Line Tools ship neither XCTest nor swift-testing, hence the executable harness.)

Layout

  • Sources/CleanerCore/Core — SystemPaths (injectable locations), SafeDeleter (the only removal path: dry run / Trash / delete, allowed-roots guard, exclusions), settings, history, permissions.
  • Sources/CleanerCore/Modules/<Module> — scanning and cleaning logic per feature.
  • Sources/ccleander — SwiftUI app (sidebar | detail, Settings window).
  • Sources/ccleander-verify — verification harness.

Permissions

ccleander is not sandboxed: App Sandbox forbids reaching other apps' caches and containers, which a cleaner has to do, so it is distributed outside the Mac App Store. Grant Full Disk Access in System Settings › Privacy & Security to scan Safari data, other apps' containers and the Trash. macOS asks separately for Automation (Finder / System Events) and Photos when those features are used.

See TASKS.md for the feature checklist, what macOS does not allow, and why.

About

Native macOS cleaner in SwiftUI: clutter and large files, browser data, duplicates, photo analysis, app uninstalls, startup items.

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages