Repository navigation
A size chart can say a folder is 48 GB. It can't say what that folder is, or what to do about it. For tool-owned directories "select and trash" is usually the wrong answer: a Docker disk image reclaims through docker, not by deleting the file.
Reclaim panel (⇧⌘R)
Known owners. Xcode DerivedData, simulator runtimes, npm and Homebrew caches, node_modules, Docker and OrbStack disk images and others are recognized by path. Each says what owns it, whether it regenerates on its own or needs checking first, and the correct reclaim step.
Cold data. Every node now carries a modification time, and a directory reports the newest in its subtree, so a folder counts as untouched only when nothing inside it has been. Large things nothing has opened in months are listed apart from large things in daily use.
Held space. Local Time Machine snapshots pin the blocks of deleted files, which is why free space often doesn't move by as much as you just deleted. The panel says how many snapshots are holding blocks and how much is purgeable.
Exclusions
Settings takes a list of folders the scanner never descends into. An excluded tree is never opened, costs nothing to skip, and contributes nothing to any parent's total.
Engine
The scanner reads ATTR_CMN_MODTIME alongside the allocated size. Directories report the newest mtime in their subtree including their own, which keeps live data from being labelled cold at the cost of missing some genuinely cold trees.
The tree format moves to BLM2 to carry the timestamp. BLM1 snapshots still read, reporting an unknown mtime rather than 1970, so an older privileged helper degrades to no staleness data instead of wrong data.
47 tests, up from 15.
Installing
Source only. Build with xcodegen && xcodebuild -project Bloom.xcodeproj -scheme Bloom -configuration Release build.