This commit introduces a new `completion` command that provides shell
completion for bash, zsh, and fish.
The completion is implemented as a shell script in `bin/completion.sh`
and the main `mole` script has been updated to use it.
This approach was chosen to keep the completion logic in shell script,
as the `mole` command is primarily a set of shell scripts.
- Refactor safe_clean to decouple deletion logic from size calculation
- Attempt deletion for all existing paths, even if size is 0 or unknown
- Correctly count failures only for files that existed but couldn't be removed
- Skip destructive operations (killall, launchctl unload, sudo) in dry-run mode
- Add opt_msg() helper for consistent output formatting
- Refactor opt_system_services_refresh() with service array
- Show appropriate summary for dry-run vs actual execution
- Skip sudo session prompt in dry-run mode
- Add lib/manage/purge_paths.sh for interactive path management
- Shows current paths status and opens editor for customization
- Update bin/purge.sh to handle --paths option
- Update README with new command
- Remove duplicate comment in project.sh
- Fix color code issue in purge.sh help message
- Add proper spacing after load_purge_config function
- Add shell syntax highlighting in README code block
- Add Xcode Archives to whitelist options (fixes#195)
- Fix safe_remove set -e trap in command substitution
- Fix has_full_disk_access false positives and unknown state handling
- Use set +e in perform_cleanup for graceful degradation
- Track removal failures and only count actually deleted items (#180)
- Add "Skipped X items (permission denied or in use)" notification
- Improve spinner reliability with cooperative stop mechanism (#175)
- add ensure_user_dir/ensure_user_file helpers in lib/core/base.sh, including
sudo-aware ownership correction under the invoking user’s home
- use the helpers across clean/optimize/purge/uninstall/whitelist to create
cache and export files safely (no naked mkdir/touch), including log files and
dry-run exports
- ensure purge stats/count files and update message caches are pre-created with
safe permissions
- add Darwin version helpers and skip LaunchServices/dyld rebuild on macOS 15+,
keeping the existing corruption protection for earlier versions
- guard brew cache timestamp writes and TCC permission flags with safe file
creation to avoid root-owned artifacts