- Speed up spinner animation from 100ms to 50ms for smoother visuals
- Fix spinner flicker by deferring stop until output is ready
- Remove unnecessary 'Preparing...' spinner at section start
- Hide whitelist-protected items from output (Trash, Finder metadata)
- Add spinner feedback for system diagnostic log cleanup
- Remove redundant stop_section_spinner calls in cleanup modules
The cleanup process now feels significantly faster and more polished,
with continuous visual feedback and no jarring gaps between operations.
- Add classify_cleanup_risk() for risk level classification (LOW/MEDIUM/HIGH)
- Enhance safe_clean() with operation details and risk info
- Show item counts and file lists in debug mode
- Support for lib/clean/user.sh debug enhancements
- Part of GitHub issue #242 implementation
- 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
- 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