maclean 1.0.0

Find and reclaim disk space on macOS
# maclean

Finds reclaimable disk space on macOS. Run it in a terminal and you get a TUI. Pass a subcommand if you need it in a script.

I built this for machines with a lot of project folders - `node_modules`, `target`, etc.

macOS only.

## Install

Needs a Rust toolchain.

    cargo install maclean

From git, if you want a specific checkout:

    cargo install --git https://github.com/kirkl4nd/maclean

Homebrew is not set up yet. When it is, the formula should run `maclean uninstall` before it deletes the binary, so launchd jobs do not get left behind.

## Uninstall

Do this first. `cargo uninstall` only removes the binary. It does not know about launchd.

    maclean uninstall
    cargo uninstall maclean

`maclean uninstall` only removes jobs maclean created. Those plists live in `~/Library/LaunchAgents` and are tagged (`com.maclean.job.*` plus a `MacleanSchema` / `MacleanManaged` key, or the older "Managed by maclean" comment). Anything else in LaunchAgents is left alone.

Config and logs stay unless you ask:

    maclean uninstall --purge-data

## Usage

    maclean                          # TUI
    maclean scan
    maclean reclaim cargo:foo --yes
    maclean schedule add cargo:projects --every 1d
    maclean schedule add cargo:projects node:caches --every 1w
    maclean schedule list

In the TUI, `s` opens the schedule manager. From there, `+` creates a job: pick what should run (module actions, not a scan result), then how often. Do not edit the plist files by hand.

Jobs are per-user LaunchAgents. They run while you are logged in. "Every week" means about seven days since the last successful run, not seven days of the Mac staying on.

- Restart or log out does not reset that clock.
- If a run is overdue when you next log in, it runs then.
- Missed weeks are not stacked: three weeks away is one run, not three.
- Sleep: an overdue job usually runs on wake.

## Config

`~/Library/Application Support/maclean/config.toml`

Missing file means defaults. `maclean config init` writes a starter file with every module listed.

## License

MIT