diff --git a/AGENTS.md b/AGENTS.md index 841238f..803dc12 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -138,3 +138,4 @@ Code, comments, commit messages, documentation, and all CLI text are in English. - Spec changes: edit `docs/cli-spec.md`, bump its version, add an ADR, update snapshots. Never leave code and spec disagreeing. - Research before writing new utility code: check crates.io and the reuse list in `docs/implementation-plan.md` §2. - When a macOS behavior is uncertain (see `docs/implementation-plan.md` §9), write the check as a test with a fixture, not as an assumption in code. +- The guides under `site/explain/` copy prose verbatim from `crates/broza/src/detect/category_text.rs`, `crates/broza/src/adapters/diskutil/purpose.rs` and the README. When one of those paragraphs changes, update the matching page and its `` in `site/sitemap.xml`. diff --git a/README.md b/README.md index fa4749e..f363dd7 100644 --- a/README.md +++ b/README.md @@ -1,15 +1,16 @@ # Broza — safe disk cleanup CLI for macOS Broza is an open-source command-line tool that analyzes your Mac's APFS storage, explains what -"System Data" and purgeable space really are, and frees disk space with a dry-run first and a -reversible quarantine. Built in Rust for Apple Silicon. +"System Data" and purgeable space really are, and frees disk space (Xcode DerivedData, +`node_modules`, Docker, caches, snapshots) with a dry-run first and a reversible quarantine. +Built in Rust for Apple Silicon. [![CI](https://github.com/borlafu/broza/actions/workflows/ci.yml/badge.svg)](https://github.com/borlafu/broza/actions/workflows/ci.yml) [![Release](https://img.shields.io/github/v/release/borlafu/broza)](https://github.com/borlafu/broza/releases/latest) [![License: MIT](https://img.shields.io/badge/license-MIT-blue.svg)](LICENSE) [![Ko-fi](https://img.shields.io/badge/Ko--fi-support-ff5e5b?logo=ko-fi&logoColor=white)](https://ko-fi.com/borlafu) -Website: [borlafu.github.io/broza](https://borlafu.github.io/broza/) +Website: [borlafu.github.io/broza](https://borlafu.github.io/broza/) · [Mac disk space guides](https://borlafu.github.io/broza/explain/) ## Why Broza diff --git a/site/404.html b/site/404.html new file mode 100644 index 0000000..fd37102 --- /dev/null +++ b/site/404.html @@ -0,0 +1,47 @@ + + + + + +Page not found | Broza + + + + + + + + +
+

Nothing here — it may have been trimmed.

+

That page does not exist. Try the home page or the disk space guides.

+
+ + + diff --git a/site/assets/og.png b/site/assets/og.png new file mode 100644 index 0000000..cc70d0a Binary files /dev/null and b/site/assets/og.png differ diff --git a/site/explain/cloud-synced-files.html b/site/explain/cloud-synced-files.html new file mode 100644 index 0000000..7e06054 --- /dev/null +++ b/site/explain/cloud-synced-files.html @@ -0,0 +1,130 @@ + + + + + +Free space without deleting iCloud or Dropbox files | Broza + + + + + + + + + + + + + + + + + + + +
+ +

Free space on a Mac without deleting iCloud or Dropbox files

+ +

Files already synced to iCloud Drive, Dropbox, OneDrive or Google Drive. Reported only, never deleted.

+

What it is

+

Local copies of files that a cloud provider already holds: iCloud Drive, Dropbox, OneDrive or Google Drive. The provider knows them as synced; your disk knows them as ordinary files.

+

What it is for

+

They are the copy you work on. Freeing the space means asking the provider to evict the local copy and keep the file available on demand, which is a sync operation and not a deletion.

+

Is it safe to delete?

+

Broza never deletes these. Deleting a synced file with a file manager deletes it from the cloud too, and from every other device, which is exactly the kind of mistake this tool exists to avoid. Broza reports the size and prints the provider's own instructions for freeing it.

+

What Broza does instead

Cloud-synced files are always INFO ONLY, and no flag changes that: broza clean --category cloud-synced is rejected outright. Broza reports the bytes the provider holds on this disk, per provider, and prints that provider's own steps for freeing them.

+

Check it on your Mac

+

Broza is a free, open-source command-line tool. Every command below is read-only except clean, and clean is a dry run until you add --apply.

+
broza explain cloud-synced
+
broza suggest --category cloud-synced
+

Not installed yet? Install Broza with Homebrew, the installer script, or Cargo.

+

Related guides

+ +
+ + + + + diff --git a/site/explain/docker-disk-image.html b/site/explain/docker-disk-image.html new file mode 100644 index 0000000..7c79c59 --- /dev/null +++ b/site/explain/docker-disk-image.html @@ -0,0 +1,130 @@ + + + + + +Docker.raw taking up space on your Mac? What to do | Broza + + + + + + + + + + + + + + + + + + + +
+ +

Docker.raw taking up space on your Mac? What to do

+ +

Docker Desktop stores its images, containers and volumes inside one virtual disk file, Docker.raw. It grows as you pull and build, and it does not shrink by itself.

+

What it is

+

Everything a compiler or a package manager wrote so it would not have to do the work twice: Xcode DerivedData and Archives, node_modules directories, __pycache__, .gradle, Rust target/ directories, and the virtual disk Docker Desktop stores its images in.

+

What it is for

+

It makes the second build faster than the first. On a developer's Mac it is usually the single largest reclaimable category, and none of it is source code: every byte is reproducible from a repository and a build command.

+

Is it safe to delete?

+

Yes for the build outputs, which Broza moves to quarantine; the next build recreates them. The Docker virtual disk is the exception: Broza only reports its size and points at docker system prune, because shrinking that file is Docker's job, not a file manager's.

+

How Broza handles the Docker disk image

Broza reports Docker.raw with its allocated size on disk, as an inform-only finding. It never calls the Docker daemon and never moves or deletes the file: shrinking it is Docker's job. Instead it points at docker system prune and Docker Desktop's disk settings.

+

Check it on your Mac

+

Broza is a free, open-source command-line tool. Every command below is read-only except clean, and clean is a dry run until you add --apply.

+
broza explain build-cache
+
docker system prune
+

Not installed yet? Install Broza with Homebrew, the installer script, or Cargo.

+

Related guides

+ +
+ + + + + diff --git a/site/explain/index.html b/site/explain/index.html new file mode 100644 index 0000000..a6625d2 --- /dev/null +++ b/site/explain/index.html @@ -0,0 +1,78 @@ + + + + + +Mac disk space guides | Broza + + + + + + + + + + + + + + + + + + + +
+ +

Mac disk space guides

+

What fills a Mac's disk, what each thing is for, and whether it is safe to remove. The same explanations broza explain prints, one page per topic.

+ +
+ + + + + diff --git a/site/explain/ios-simulators.html b/site/explain/ios-simulators.html new file mode 100644 index 0000000..882d1ef --- /dev/null +++ b/site/explain/ios-simulators.html @@ -0,0 +1,131 @@ + + + + + +Delete unused iOS simulators and runtimes on a Mac | Broza + + + + + + + + + + + + + + + + + + + +
+ +

Delete unused iOS simulators and runtimes on a Mac

+ +

Unused iOS simulator runtimes and simulated devices installed by Xcode.

+

What it is

+

Simulator runtimes and simulated devices that Xcode installed, each one a full copy of an iOS release together with the data of every app you ran on it.

+

What it is for

+

They let you test an app against an iOS version without owning the hardware. Xcode keeps every runtime you ever installed, including the ones for iOS versions you no longer support.

+

Is it safe to delete?

+

Usually, with a look first. Removing a runtime undoes an Xcode download rather than losing work — but a simulated device also holds the state of the apps you ran on it, and a project that pins an old iOS version will ask you to download the runtime again.

+

Which simulators Broza proposes

Broza reads the device list from xcrun simctl list -j devices. A simulated device is proposed when its runtime is gone, or when it was last booted longer ago than --unused-after (one year by default). A device that never booted and is still available is left alone. Proposed devices, under ~/Library/Developer/CoreSimulator/Devices/, are moved to quarantine.

+

Check it on your Mac

+

Broza is a free, open-source command-line tool. Every command below is read-only except clean, and clean is a dry run until you add --apply.

+
broza explain ios-simulators
+
broza suggest --category ios-simulators
+
broza clean --category ios-simulators
+

Not installed yet? Install Broza with Homebrew, the installer script, or Cargo.

+

Related guides

+ +
+ + + + + diff --git a/site/explain/iphone-backups.html b/site/explain/iphone-backups.html new file mode 100644 index 0000000..e64bab7 --- /dev/null +++ b/site/explain/iphone-backups.html @@ -0,0 +1,131 @@ + + + + + +Old iPhone backups on your Mac: find and remove them | Broza + + + + + + + + + + + + + + + + + + + +
+ +

Old iPhone backups on your Mac: find and remove them

+ +

iPhone and iPad backups under ~/Library/Application Support/MobileSync/Backup.

+

What it is

+

Full local backups of iPhones and iPads, one directory per device, written by Finder or by the older iTunes.

+

What it is for

+

They restore a phone after a loss or a replacement. They are also kept forever: a device you stopped using years ago still has its backup, and each one can be tens of gigabytes.

+

Is it safe to delete?

+

With judgement. A backup of a device you still own and still back up to iCloud is redundant; a backup of a device that no longer exists may be the only copy of what was on it. Broza shows the device name and the date, moves nothing without confirmation, and quarantines rather than deletes.

+

Which backups Broza proposes

A backup under ~/Library/Application Support/MobileSync/Backup/ is proposed when the Last Backup Date in its Info.plist is older than --unused-after (one year by default). Broza names the device in the reasoning and moves the backup to quarantine. A backup whose Info.plist cannot be read is reported as a warning and never proposed.

+

Check it on your Mac

+

Broza is a free, open-source command-line tool. Every command below is read-only except clean, and clean is a dry run until you add --apply.

+
broza explain old-backups
+
broza suggest --category old-backups
+
broza clean --category old-backups
+

Not installed yet? Install Broza with Homebrew, the installer script, or Cargo.

+

Related guides

+ +
+ + + + + diff --git a/site/explain/library-caches.html b/site/explain/library-caches.html new file mode 100644 index 0000000..d7770b0 --- /dev/null +++ b/site/explain/library-caches.html @@ -0,0 +1,131 @@ + + + + + +Is it safe to delete ~/Library/Caches on a Mac? | Broza + + + + + + + + + + + + + + + + + + + +
+ +

Is it safe to delete ~/Library/Caches on a Mac?

+ +

Application caches, logs and incomplete downloads under ~/Library. Regenerated on demand.

+

What it is

+

Working files applications keep under ~/Library/Caches, plus their logs and the half-finished downloads they never cleaned up. None of it is a document you created.

+

What it is for

+

A cache buys speed: a browser keeps images, a mail client keeps message bodies, a package manager keeps archives it already downloaded. macOS never prunes these directories on your behalf, so they only grow.

+

Is it safe to delete?

+

Yes. Every application recreates what it needs, at the cost of being a little slower the first time. Broza moves the files to quarantine instead of deleting them, so a program that behaves oddly afterwards can be put back exactly as it was.

+

The exception Broza handles for you

A few directories under ~/Library/Caches hold data nothing regenerates: JetBrains' per-file undo history and Poetry's virtualenvs. Broza opens those up and lists only their regenerable contents, so every path under the SAFE label is one an application recreates.

+

Check it on your Mac

+

Broza is a free, open-source command-line tool. Every command below is read-only except clean, and clean is a dry run until you add --apply.

+
broza explain user-cache
+
broza suggest --category user-cache
+
broza clean --category user-cache
+

Not installed yet? Install Broza with Homebrew, the installer script, or Cargo.

+

Related guides

+ +
+ + + + + diff --git a/site/explain/node-modules.html b/site/explain/node-modules.html new file mode 100644 index 0000000..1e073f5 --- /dev/null +++ b/site/explain/node-modules.html @@ -0,0 +1,130 @@ + + + + + +Find and remove orphan node_modules on a Mac | Broza + + + + + + + + + + + + + + + + + + + +
+ +

Find and remove orphan node_modules on a Mac

+ +

A node_modules directory is reproducible from its project's package.json and one install command. The ones worth removing are orphans: the project is gone, or nothing in it has changed for a long time.

+

What it is

+

Everything a compiler or a package manager wrote so it would not have to do the work twice: Xcode DerivedData and Archives, node_modules directories, __pycache__, .gradle, Rust target/ directories, and the virtual disk Docker Desktop stores its images in.

+

What it is for

+

It makes the second build faster than the first. On a developer's Mac it is usually the single largest reclaimable category, and none of it is source code: every byte is reproducible from a repository and a build command.

+

Is it safe to delete?

+

Yes for the build outputs, which Broza moves to quarantine; the next build recreates them. The Docker virtual disk is the exception: Broza only reports its size and points at docker system prune, because shrinking that file is Docker's job, not a file manager's.

+

What Broza counts as an orphan

A leaf node_modules directory is orphan when it is not tool-managed and either its parent has no package.json (the project is gone), or none of the project's other entries changed for the --unused-after period (one year by default).

Tool-managed directories are left out: anything under ~/Library (package-manager stores such as pnpm's), under a hidden directory (~/.vscode/extensions, ~/.npm/_npx, ~/.cache) or inside an .app bundle. In monorepos only leaf node_modules are proposed. Orphans are rated REVIEW and moved to quarantine, never deleted outright.

+

Check it on your Mac

+

Broza is a free, open-source command-line tool. Every command below is read-only except clean, and clean is a dry run until you add --apply.

+
broza suggest --category build-cache --unused-after 6m
+
broza clean --category build-cache
+

Not installed yet? Install Broza with Homebrew, the installer script, or Cargo.

+

Related guides

+ +
+ + + + + diff --git a/site/explain/purgeable-space.html b/site/explain/purgeable-space.html new file mode 100644 index 0000000..452de06 --- /dev/null +++ b/site/explain/purgeable-space.html @@ -0,0 +1,135 @@ + + + + + +Purgeable space on Mac: why "available" is not free | Broza + + + + + + + + + + + + + + + + + + + +
+ +

Purgeable space on Mac: why "available" is not free

+ +

Finder reports "available" as free space plus purgeable space. Purgeable space is data macOS may delete on its own when it needs room, such as local snapshots and caches. An app asking the file system sees only the truly free part. Broza shows both numbers on separate lines and never adds purgeable to free.

+

Why Finder shows more available space

+

Finder adds purgeable space to free space. Broza shows them separately because purgeable space is not guaranteed to be available to your apps right now.

+

Where purgeable space comes from

+

They are what "enter Time Machine" browses when the backup disk is not attached, and what lets a failed update roll back. They are also why a Mac reports gigabytes of "purgeable" space: macOS deletes snapshots itself when the disk fills.

+

Free space belongs to the container

+

A Mac's SSD holds one APFS container with several volumes (System, Data, Preboot, Recovery, VM). Free space belongs to the container, not to any single volume. That is why a "percentage full" per volume is misleading, and why Broza reasons at the container level.

+

What the honest numbers look like

+
Physical disk  disk0  —  APPLE SSD AP1024Z  (1.00 TB)
+└─ APFS container  disk3  (994.7 GB)
+   ├─ Used        812.4 GB  ████████████████░░░░  81.7%
+   ├─ Free         98.1 GB
+   └─ Purgeable    84.1 GB  ← estimate; macOS shows this as "available"
+

broza scan prints used, free and purgeable on separate lines, and never adds purgeable to free.

+

Check it on your Mac

+

Broza is a free, open-source command-line tool. Every command below is read-only except clean, and clean is a dry run until you add --apply.

+
broza scan
+

Not installed yet? Install Broza with Homebrew, the installer script, or Cargo.

+

Related guides

+ +
+ + + + + diff --git a/site/explain/system-data.html b/site/explain/system-data.html new file mode 100644 index 0000000..28e34cd --- /dev/null +++ b/site/explain/system-data.html @@ -0,0 +1,138 @@ + + + + + +What is "System Data" on a Mac, and how to shrink it | Broza + + + + + + + + + + + + + + + + + + + +
+ +

What is "System Data" on a Mac, and how to shrink it

+ +

The large, opaque "System Data" bucket in System Settings is mostly APFS local snapshots, virtual memory swap, application caches, logs, and on newer Macs the Apple Intelligence models. Some of it is safe to remove, some shrinks after a reboot, and some should only be managed through Apple's own tools. broza explain tells you which is which.

+

Local snapshots

+

Point-in-time images of a volume kept on the volume itself. Time Machine takes one every hour when it cannot reach its backup disk, and macOS takes one before it installs an update.

+

They are what "enter Time Machine" browses when the backup disk is not attached, and what lets a failed update roll back. They are also why a Mac reports gigabytes of "purgeable" space: macOS deletes snapshots itself when the disk fills.

+

Time Machine local snapshots: what they are and how to remove them →

+

Virtual memory swap

+

The volume macOS uses for virtual memory: swap files and, on a Mac that sleeps to disk, the sleep image.

+

No. Broza never writes to it. Deleting swap by hand risks a crash, and macOS reclaims the space itself once the pressure is gone.

+

Application caches and logs

+

Working files applications keep under ~/Library/Caches, plus their logs and the half-finished downloads they never cleaned up. None of it is a document you created.

+

Yes. Every application recreates what it needs, at the cost of being a little slower the first time. Broza moves the files to quarantine instead of deleting them, so a program that behaves oddly afterwards can be put back exactly as it was.

+

Is it safe to delete ~/Library/Caches? →

+

Why the number looks bigger than it is

+

Finder reports "available" as free space plus purgeable space. Purgeable space is data macOS may delete on its own when it needs room, such as local snapshots and caches. An app asking the file system sees only the truly free part. Broza shows both numbers on separate lines and never adds purgeable to free.

+

Purgeable space, explained →

+

Check it on your Mac

+

Broza is a free, open-source command-line tool. Every command below is read-only except clean, and clean is a dry run until you add --apply.

+
broza scan
+
broza explain /System/Volumes/Data
+
broza suggest
+

Not installed yet? Install Broza with Homebrew, the installer script, or Cargo.

+

Related guides

+ +
+ + + + + diff --git a/site/explain/time-machine-local-snapshots.html b/site/explain/time-machine-local-snapshots.html new file mode 100644 index 0000000..24d64b4 --- /dev/null +++ b/site/explain/time-machine-local-snapshots.html @@ -0,0 +1,131 @@ + + + + + +Time Machine local snapshots eating disk space | Broza + + + + + + + + + + + + + + + + + + + +
+ +

Time Machine local snapshots eating disk space

+ +

APFS local snapshots are copy-on-write images made by Time Machine and by system updates. They can take tens of gigabytes and must be managed with tmutil, never by deleting files by hand. Broza uses tmutil for this and never touches update snapshots.

+

What it is

+

Point-in-time images of a volume kept on the volume itself. Time Machine takes one every hour when it cannot reach its backup disk, and macOS takes one before it installs an update.

+

What it is for

+

They are what "enter Time Machine" browses when the backup disk is not attached, and what lets a failed update roll back. They are also why a Mac reports gigabytes of "purgeable" space: macOS deletes snapshots itself when the disk fills.

+

Is it safe to delete?

+

The Time Machine ones, yes, and only through tmutil, which is what Broza uses. macOS reports no size for a snapshot, so Broza lists them by name and never claims a number it cannot measure. Update snapshots (com.apple.os.update-*) are never proposed: a pending update needs them.

+

How Broza removes them

Yes, through tmutil, and only after you confirm. macOS does not report per-snapshot sizes, so Broza lists them without a size estimate. Update snapshots are never proposed.

Deleting a snapshot cannot be undone, so Broza shows a detailed summary flagged irreversible and asks for an explicit confirmation before it runs tmutil.

+

Check it on your Mac

+

Broza is a free, open-source command-line tool. Every command below is read-only except clean, and clean is a dry run until you add --apply.

+
broza explain snapshots
+
broza suggest --category snapshots
+
broza clean --category snapshots
+

Not installed yet? Install Broza with Homebrew, the installer script, or Cargo.

+

Related guides

+ +
+ + + + + diff --git a/site/explain/xcode-deriveddata.html b/site/explain/xcode-deriveddata.html new file mode 100644 index 0000000..837a64c --- /dev/null +++ b/site/explain/xcode-deriveddata.html @@ -0,0 +1,131 @@ + + + + + +Is it safe to delete Xcode DerivedData? | Broza + + + + + + + + + + + + + + + + + + + +
+ +

Is it safe to delete Xcode DerivedData?

+ +

Yes. DerivedData contains build artifacts that Xcode regenerates on the next build. Broza marks it as a safe, green-risk item.

+

What it is

+

Everything a compiler or a package manager wrote so it would not have to do the work twice: Xcode DerivedData and Archives, node_modules directories, __pycache__, .gradle, Rust target/ directories, and the virtual disk Docker Desktop stores its images in.

+

What it is for

+

It makes the second build faster than the first. On a developer's Mac it is usually the single largest reclaimable category, and none of it is source code: every byte is reproducible from a repository and a build command.

+

Is it safe to delete?

+

Yes for the build outputs, which Broza moves to quarantine; the next build recreates them. The Docker virtual disk is the exception: Broza only reports its size and points at docker system prune, because shrinking that file is Docker's job, not a file manager's.

+

How Broza handles Xcode data

Broza rates DerivedData SAFE and Xcode Archives REVIEW: an archive is a shipped build, and nothing recreates it. Both are moved to quarantine rather than deleted, so broza restore can put them back until the session expires (30 days by default).

+

Check it on your Mac

+

Broza is a free, open-source command-line tool. Every command below is read-only except clean, and clean is a dry run until you add --apply.

+
broza explain build-cache
+
broza suggest --category build-cache
+
broza clean --category build-cache
+

Not installed yet? Install Broza with Homebrew, the installer script, or Cargo.

+

Related guides

+ +
+ + + + + diff --git a/site/index.html b/site/index.html index 7293798..b53dcfe 100644 --- a/site/index.html +++ b/site/index.html @@ -3,15 +3,44 @@ -Broza — safe disk cleanup CLI for macOS - +Broza — free up disk space on Mac, safely (open-source CLI) + + - - + + + - + + + + + + + + + @@ -29,6 +58,7 @@ demo features safety + guides github @@ -40,7 +70,7 @@
A tangled line-drawn jungle of leaves, ferns and vines
- v1.0 · apple silicon · mit + apple silicon · open source · mit

Your Mac's disk,
explained. Then trimmed.

Broza maps every APFS volume, says in plain English what each one is for, and frees space with a dry run first and a 30-day undo.

@@ -70,7 +100,7 @@

Your Mac's disk,
explained. Then trimmed.

quick start -

Three commands from full disk to clear one

+

Free up disk space on your Mac in three commands

Install it, look at what is there, then trim. The trim step is a dry run until you add --apply.

@@ -269,22 +299,22 @@

Scriptable

Detectors

-

Ten categories, each with a stated risk

-

Category ids are stable and usable in scripts, with --category and --risk.

+

What Broza cleans: developer caches, snapshots, backups, duplicates

+

Category ids are stable and usable in scripts, with --category and --risk. Linked ids have a plain-English guide.

- - - + + + - - + + - + @@ -327,6 +357,7 @@

Free, open source, and staying that way

diff --git a/site/robots.txt b/site/robots.txt new file mode 100644 index 0000000..9f603d2 --- /dev/null +++ b/site/robots.txt @@ -0,0 +1,4 @@ +User-agent: * +Allow: / + +Sitemap: https://borlafu.github.io/broza/sitemap.xml diff --git a/site/sitemap.xml b/site/sitemap.xml new file mode 100644 index 0000000..d432d19 --- /dev/null +++ b/site/sitemap.xml @@ -0,0 +1,15 @@ + + + https://borlafu.github.io/broza/2026-09-26 + https://borlafu.github.io/broza/explain/2026-09-26 + https://borlafu.github.io/broza/explain/xcode-deriveddata.html2026-09-26 + https://borlafu.github.io/broza/explain/node-modules.html2026-09-26 + https://borlafu.github.io/broza/explain/docker-disk-image.html2026-09-26 + https://borlafu.github.io/broza/explain/ios-simulators.html2026-09-26 + https://borlafu.github.io/broza/explain/system-data.html2026-09-26 + https://borlafu.github.io/broza/explain/purgeable-space.html2026-09-26 + https://borlafu.github.io/broza/explain/time-machine-local-snapshots.html2026-09-26 + https://borlafu.github.io/broza/explain/iphone-backups.html2026-09-26 + https://borlafu.github.io/broza/explain/cloud-synced-files.html2026-09-26 + https://borlafu.github.io/broza/explain/library-caches.html2026-09-26 + diff --git a/site/styles.css b/site/styles.css index 3b27ac2..c680c98 100644 --- a/site/styles.css +++ b/site/styles.css @@ -483,3 +483,24 @@ section { padding-block: clamp(40px, 7vw, 72px); } @media (prefers-reduced-motion: reduce) { .cursor { animation: none; } } + +/* ---------- guide pages ---------- */ + +.article { max-width: 760px; padding-block: clamp(28px, 6vw, 56px); } +.article h1 { font-size: clamp(28px, 4.6vw, 40px); margin-top: 10px; } +.article h2 { font-size: 21px; margin-top: 34px; margin-bottom: 8px; } +.article p { margin-top: 10px; } +.article .cmdline { margin-top: 10px; } +.article-lede { font-size: 19px; color: var(--ink-soft); margin-top: 14px; } +.article-meta { display: flex; flex-wrap: wrap; gap: 8px; align-items: center; margin-top: 12px; } +.article-install { color: var(--ink-soft); font-size: 15px; } +.crumbs { font-size: 14px; color: var(--ink-soft); } +.crumbs a { color: var(--ink-soft); } +.term-static { background: var(--term-bg); border-radius: var(--radius-card); margin-top: 12px; } +.related, .guide-list { padding-left: 0; list-style: none; } +.related li { margin-top: 8px; } +.guide-list li { border-bottom: 1px solid var(--line); padding: 16px 0; } +.guide-list a { font-size: 18px; } +.guide-list p { color: var(--ink-soft); font-size: 15px; margin-top: 4px; } +.detectors td a { color: inherit; text-decoration-color: var(--line-strong); } +.detectors td a:hover { color: var(--leaf); }
CategoryRiskWhat it finds
user-cacheSAFEApplication caches, logs and incomplete downloads under ~/Library. Regenerated on demand.
build-cacheSAFE REVIEWBuild artefacts: DerivedData, Archives, orphan node_modules, __pycache__, .gradle, target/.
ios-simulatorsREVIEWUnused iOS simulator runtimes and simulated devices installed by Xcode.
user-cacheSAFEApplication caches, logs and incomplete downloads under ~/Library. Regenerated on demand.
build-cacheSAFE REVIEWBuild artefacts: DerivedData, Archives, orphan node_modules, __pycache__, .gradle, target/.
ios-simulatorsREVIEWUnused iOS simulator runtimes and simulated devices installed by Xcode.
trashREVIEWThe Trash of every mounted volume. Emptying it is irreversible.
snapshotsREVIEWAPFS local snapshots (Time Machine, OS update). Managed only via tmutil; sizes not reported by macOS.
old-backupsREVIEWiPhone and iPad backups under ~/Library/Application Support/MobileSync/Backup.
snapshotsREVIEWAPFS local snapshots (Time Machine, OS update). Managed only via tmutil; sizes not reported by macOS.
old-backupsREVIEWiPhone and iPad backups under ~/Library/Application Support/MobileSync/Backup.
unused-appsREVIEW INFO ONLYApplications not opened past the threshold, plus their leftovers in ~/Library.
cloud-syncedINFO ONLYFiles already synced to iCloud Drive, Dropbox, OneDrive or Google Drive. Reported only, never deleted.
cloud-syncedINFO ONLYFiles already synced to iCloud Drive, Dropbox, OneDrive or Google Drive. Reported only, never deleted.
duplicatesREVIEWGroups of byte-identical files, confirmed by a full content hash.
large-old-filesREVIEWLarge files not opened for a long time, ranked by size.