Skip to content

Releases: seunggabi/mac-ops

v1.4.1 - README Readability and Consistency Improvements

01 Mar 17:57
e9c635a

Choose a tag to compare

What's Changed

Docs

  • Fix source clone section: split commands into separate lines, add PATH export guidance
  • Move > Available modules note from Miscellaneous to below Basic Commands
  • Consolidate monitor scheduling into Scheduled Execution section (Method 3)
  • Rename Danger ProcessDestructive Commands
  • Remove stale Replace /path/to/mac-ops crontab note
  • Remove relative now from Cache Protection Policy description

v1.4.0 - Monitor Launchd Setup & README Improvements

01 Mar 17:39
58116f2

Choose a tag to compare

What's New

Features

  • Add mac-ops monitor setup / monitor unsetup to install a launchd agent that collects CPU/memory snapshots every 5 minutes
  • Add launchd/com.mac-ops.monitor.plist plist template

Fixes

  • Add shellcheck disable comments for zsh-specific syntax (glob qualifiers (N), ${~pattern}) in ignore.zsh, monitor.zsh, orphan-app-cleanup.zsh, docker-cleanup.zsh

Docs

  • Replace bin/mac-ops with mac-ops throughout all README command examples
  • Add monitor --hours flag to help and README
  • Add monitor scheduling docs (cron + launchd) to README

v1.3.1 — Code review: safety, race conditions, consistency fixes

01 Mar 08:42
2ceb0af

Choose a tag to compare

Bug Fixes & Safety Improvements

🔴 Critical

  • trash.zsh: Add _mac_ops_index_lock/unlock mutex (mkdir-based) around mac_ops_index_add — prevents index corruption when multiple cleanup modules run in parallel
  • trash.zsh: Strengthen mac_ops_trash_expire path guard — trash_path must be inside MAC_OPS_TRASH_DIR before permanent deletion
  • docker-cleanup.zsh: Replace BASH_REMATCH[1/2] with zsh-native match[1/2]; fix decimal size parsing via awk (e.g. 1.23GB was previously miscomputed)

🟠 High

  • notify.zsh: Escape " and \ in notification strings before embedding in AppleScript (prevents command injection via special filenames)
  • lock.zsh: Atomic lock file creation via set -o noclobber subshell (eliminates TOCTOU race window)
  • cache/tmp/log/browser/dev-cleanup: Apply user [path] ignore rules (mac_ops_ignore_check_path) before each mac_ops_trash_move — rules from ~/.mac-ops/ignore were silently ignored in these modules

🟡 Medium / Low

  • disk.zsh: Fix cmd; if [[ $? ]] separation anti-pattern → if ! cmd=$(...) in check_disk_space and emergency_purge
  • bin/mac-ops: Add path pattern guard for stats_dir before rm -rf
  • monitor.zsh: Add speculative pages to memory formula, consistent with snapshot.zsh
  • analyze.zsh: Replace all echo with print -- for zsh consistency

Full Changelog

v1.3.0...v1.3.1

v1.3.0 — User ignore file, monitor module, orphan-app safety improvements

28 Feb 20:44
21e343e

Choose a tag to compare

What's New

✨ User Ignore File

Create ~/.mac-ops/ignore to exclude specific bundle IDs, process names, or paths from all cleanup modules.

[bundle]
com.mycompany.*

[process]
my-custom-daemon

[path]
~/work/special-cache

See config/ignore.example for a full template.

📊 Monitor Module

New mac-ops monitor command for CPU/memory monitoring.

mac-ops monitor show        # Full dashboard with 7-day history
mac-ops monitor top         # Top processes by memory
mac-ops monitor collect     # Collect a snapshot
mac-ops monitor kill --mb 500  # Kill processes over 500 MB

Safety Improvements

orphan-app-cleanup

  • Stage C: Homebrew Cask scanning — apps installed via brew install --cask are not indexed by Spotlight and were previously missed
  • Stage D: LaunchDaemons/LaunchAgents scanning — protects Korean banking/security software (AhnLab V3, TouchEN nxKey, INISAFE CrossWeb EX)
  • Added systemgroup.* and group.* exclusions (macOS system group containers)
  • Added jetbrains. bare prefix to safelist (JetBrains helper plists)
  • Extended safelist: Korean banking security (com.ahnlab., com.initech., com.raon., kr.co.*), Chromium browsers, Cursor, Zed, Charles Proxy (com.xk72.), Raycast
  • Consolidated duplicate safelist into _MAC_OPS_BUNDLE_SAFELIST array

dev-cleanup

  • Added 30-day age filtering for npm/yarn/pnpm/pip/gradle caches
  • Protected modules-* gradle directories (downloaded dependency JARs)

Defaults

  • browser-cleanup is now disabled by default (opt-in via config)
  • dev-cleanup is now disabled by default (opt-in via config)

Full Changelog

v1.2.2...v1.3.0

v1.2.2

12 Feb 05:14
83002ae

Choose a tag to compare

What's Changed

  • (#30) chore: increase cache retention to 30 days for safer cleanup by @seunggabi in #31

Full Changelog: v1.2.1...v1.2.2

v1.2.1

12 Feb 04:48

Choose a tag to compare

What's Changed

  • (#28) fix: incorrect version display in Homebrew installation by @seunggabi in #29

Full Changelog: v1.2.0...v1.2.1

v1.2.0 - Smart Cache Protection

12 Feb 04:13
62887ff

Choose a tag to compare

🎉 What's New

Smart Cache Protection

Implement intelligent cache protection to prevent accidental deletion of login sessions and active application data.

Key Features

  • Installed App Protection: Automatically protects caches from all apps in /Applications
  • Running App Protection: Detects and protects caches from currently running applications
  • Recent Usage Protection: Protects caches accessed within the last 3 days (configurable)
  • Orphan-Only Cleanup: Only removes caches from uninstalled/inactive apps older than 7 days

New Configuration

MAC_OPS_CACHE_RECENT_DAYS=3  # Protect caches used within N days (default: 3)

Impact

  • No more lost login sessions: Chrome, Slack, VS Code, and other active apps' sessions are fully protected
  • Safe by default: Only truly orphaned caches are cleaned
  • User control: Configurable protection period via environment variable

Technical Details

  • Collects installed app bundle IDs via find and defaults
  • Detects running apps via lsappinfo
  • Multi-layer protection: Apple system caches → installed apps → running apps → recent usage → age-based cleanup

Full Changelog: v1.1.8...v1.2.0

What's Changed

Full Changelog: v1.1.8...v1.2.0

v1.1.7

07 Feb 04:57
0489df0

Choose a tag to compare

Changes

  • README를 GitHub Star 극대화 구조로 리팩토링 (#22)
    • Hero 섹션 + shields.io 뱃지 6개
    • 72-hour Safety Net 킬러 피처 강조
    • CleanMyMac / OnyX / Manual rm 비교 테이블
    • Quick Start 간소화
  • VHS 데모 테이프 및 GIF 추가 (demo/demo.tape, demo/demo.gif)

v1.1.6

06 Feb 21:26
57c8a79

Choose a tag to compare

What's Changed

Bug Fixes

  • (#18) fix: brew cleanup math expression error and version test hardcoding (#19)

Full Changelog: v1.1.5...v1.1.6

v1.1.5

06 Feb 21:16
beff7e8

Choose a tag to compare

What's Changed

Documentation

  • (#13) docs: dynamic version badge, git-based version, star history (#17)

Other Changes

  • (#15) chore: fix shellcheck warnings for zsh-specific syntax (#16)

Full Changelog: v1.1.4...v1.1.5