- Parallelize project cache indicator checks and root scans in caches.sh
(sequential find per $HOME/* dir → throttled background jobs)
- Pre-compute project name cache before purge display loop, eliminating
O(N²) filesystem traversals in get_artifact_display_name
- Replace basename/dirname subshells with parameter expansion in
get_project_name/get_project_path hot loops; depth counter via
bash string arithmetic instead of echo|tr|wc|tr pipeline
- Eliminate mktemp/awk/rm per call in app_support_item_size_bytes,
use command substitution to capture du output directly
- Defer tr lowercase in clean_application_support_logs to only when
first 3 protection checks fail; replace basename with ${var##*/}
- Optimize trash item counting: find -print0|tr -dc '\0'|wc -c
avoids per-file fork from -exec printf
- Add -maxdepth 5 to /private/var/folders find (X dir is always at
depth 3, code_sign_clone at depth 5 max; verified on real machine)
On macOS (BSD find), -maxdepth must be placed before -name to work
correctly. When placed after, it was ignored causing find to scan
the entire home directory indefinitely on large directories.
Fixes#463
- Replace parentheses with commas for supplementary info
- Use commas instead of em-dashes for separators
- Update bullet points from - to * in some contexts
- Improve version extraction regex with fallback logic
- 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