From fbcf543b784dd022830baf5126ee1b71bd7c8e47 Mon Sep 17 00:00:00 2001 From: Tw93 Date: Mon, 17 Nov 2025 14:26:02 +0800 Subject: [PATCH 1/2] Support cleaning Configurator temp --- bin/clean.sh | 1 + 1 file changed, 1 insertion(+) diff --git a/bin/clean.sh b/bin/clean.sh index 5aea919..599e4ac 100755 --- a/bin/clean.sh +++ b/bin/clean.sh @@ -723,6 +723,7 @@ perform_cleanup() { safe_clean ~/Library/Containers/com.apple.wallpaper.agent/Data/Library/Caches/* "Wallpaper agent cache" safe_clean ~/Library/Containers/com.apple.mediaanalysisd/Data/Library/Caches/* "Media analysis cache" safe_clean ~/Library/Containers/com.apple.AppStore/Data/Library/Caches/* "App Store cache" + safe_clean ~/Library/Containers/com.apple.configurator.xpc.InternetService/Data/tmp/* "Apple Configurator temp files" safe_clean ~/Library/Containers/*/Data/Library/Caches/* "Sandboxed app caches" end_section From 7efb63f51d903ed1469bff0b73054fd240f8477e Mon Sep 17 00:00:00 2001 From: Tw93 Date: Mon, 17 Nov 2025 14:37:12 +0800 Subject: [PATCH 2/2] .DS_Store in whitelist --- bin/clean.sh | 40 +++++++++++++++++++++++++++++----------- lib/whitelist_manager.sh | 4 +++- 2 files changed, 32 insertions(+), 12 deletions(-) diff --git a/bin/clean.sh b/bin/clean.sh index 599e4ac..d00067e 100755 --- a/bin/clean.sh +++ b/bin/clean.sh @@ -15,6 +15,7 @@ source "$SCRIPT_DIR/../lib/common.sh" # Configuration SYSTEM_CLEAN=false DRY_RUN=false +PROTECT_FINDER_METADATA=false IS_M_SERIES=$([[ "$(uname -m)" == "arm64" ]] && echo "true" || echo "false") # Constants @@ -28,6 +29,7 @@ readonly PROTECTED_SW_DOMAINS=( "photopea.com" "pixlr.com" ) +readonly FINDER_METADATA_SENTINEL="FINDER_METADATA" # Default whitelist patterns (preselected, user can disable) declare -a DEFAULT_WHITELIST_PATTERNS=( "$HOME/Library/Caches/ms-playwright*" @@ -36,6 +38,7 @@ declare -a DEFAULT_WHITELIST_PATTERNS=( "$HOME/.ollama/models/*" "$HOME/Library/Caches/com.nssurge.surge-mac/*" "$HOME/Library/Application Support/com.nssurge.surge-mac/*" + "$FINDER_METADATA_SENTINEL" ) declare -a WHITELIST_PATTERNS=() WHITELIST_WARNINGS=() @@ -89,6 +92,15 @@ if [[ -f "$HOME/.config/mole/whitelist" ]]; then else WHITELIST_PATTERNS=("${DEFAULT_WHITELIST_PATTERNS[@]}") fi + +if [[ ${#WHITELIST_PATTERNS[@]} -gt 0 ]]; then + for entry in "${WHITELIST_PATTERNS[@]}"; do + if [[ "$entry" == "$FINDER_METADATA_SENTINEL" ]]; then + PROTECT_FINDER_METADATA=true + break + fi + done +fi total_items=0 # Tracking variables @@ -681,20 +693,26 @@ perform_cleanup() { end_section start_section "Finder metadata" - clean_ds_store_tree "$HOME" "Home directory (.DS_Store)" + if [[ "$PROTECT_FINDER_METADATA" == "true" ]]; then + note_activity + echo -e " ${GRAY}○${NC} Finder metadata protected by whitelist (Finder view settings preserved)." + echo -e " ${GRAY}○${NC} Use ${GRAY}mo clean --whitelist${NC} to allow cleaning .DS_Store files." + else + clean_ds_store_tree "$HOME" "Home directory (.DS_Store)" - if [[ -d "/Volumes" ]]; then - for volume in /Volumes/*; do - [[ -d "$volume" && -w "$volume" ]] || continue + if [[ -d "/Volumes" ]]; then + for volume in /Volumes/*; do + [[ -d "$volume" && -w "$volume" ]] || continue - local fs_type="" - fs_type=$(df -T "$volume" 2> /dev/null | tail -1 | awk '{print $2}') - case "$fs_type" in - nfs | smbfs | afpfs | cifs | webdav) continue ;; - esac + local fs_type="" + fs_type=$(df -T "$volume" 2> /dev/null | tail -1 | awk '{print $2}') + case "$fs_type" in + nfs | smbfs | afpfs | cifs | webdav) continue ;; + esac - clean_ds_store_tree "$volume" "$(basename "$volume") volume (.DS_Store)" - done + clean_ds_store_tree "$volume" "$(basename "$volume") volume (.DS_Store)" + done + fi fi end_section diff --git a/lib/whitelist_manager.sh b/lib/whitelist_manager.sh index d8227b7..3ee9b98 100755 --- a/lib/whitelist_manager.sh +++ b/lib/whitelist_manager.sh @@ -20,6 +20,7 @@ declare -a DEFAULT_WHITELIST_PATTERNS=( "$HOME/.ollama/models/*" "$HOME/Library/Caches/com.nssurge.surge-mac/*" "$HOME/Library/Application Support/com.nssurge.surge-mac/*" + "FINDER_METADATA" ) # Save whitelist patterns to config @@ -30,7 +31,7 @@ save_whitelist_patterns() { cat > "$WHITELIST_CONFIG" << 'EOF' # Mole Whitelist - Protected paths won't be deleted -# Default protections: Playwright browsers, HuggingFace models, Maven repo, Ollama models, Surge Mac +# Default protections: Playwright browsers, HuggingFace models, Maven repo, Ollama models, Surge Mac, Finder metadata # Add one pattern per line to keep items safe. EOF @@ -127,6 +128,7 @@ Podman container cache|$HOME/.local/share/containers/cache/*|container_cache Font cache|$HOME/Library/Caches/com.apple.FontRegistry/*|system_cache Spotlight metadata cache|$HOME/Library/Caches/com.apple.spotlight/*|system_cache CloudKit cache|$HOME/Library/Caches/CloudKit/*|system_cache +Finder metadata (.DS_Store)|FINDER_METADATA|system_cache EOF }