Skip to content

Releases: cacheout-app/cacheout

Cacheout v2.1.2

17 May 23:02

Choose a tag to compare

Menubar icon hotfix

v2.1.1 correctly bundled menubar icon resources into the .app, but the source PNGs in Sources/Cacheout/Resources/ were a faint single-line "C" outline that rendered effectively invisible at 18×18 in template mode. The actual master artwork had been dropped from the repo at some point.

Fixed

  • Restored Resources/menubar-icon-master.PNG (the 2048×2048 master) and regenerated all four bundled variants — MenuBarIcon.png, MenuBarIcon@2x.png, MenuBarIconTemplate.png, MenuBarIconTemplate@2x.png — at the correct 18×18 / 36×36 sizes from the master. The Cacheout "C" now actually appears in the menubar.

Everything else from v2.1.0 + v2.1.1 (Sparkle auto-update bundling, helper daemon, security/perf/UX fixes) is unchanged.


Install

brew upgrade --cask cacheout

Or download Cacheout-2.1.2.dmg below and replace your /Applications/Cacheout.app.

Full Changelog: v2.1.1...v2.1.2

Cacheout v2.1.1

17 May 21:32

Choose a tag to compare

Hotfix for v2.1.0

v2.1.0 shipped with two regressions: the menubar icon resources and the CacheoutHelper privileged daemon were silently dropped from the .app bundle. v2.1.1 restores both.

Fixed

  • Menubar icon now displays again. Bundle.main.image(forResource: "MenuBarIconTemplate") couldn't find the PNG resources because scripts/bundle.sh was only copying Cacheout.icns. Now copies all four icon variants (regular + @2x, template + non-template) into Contents/Resources/.
  • CacheoutHelper daemon is now bundled at Contents/Library/LaunchDaemons/. The SMAppService.daemon(plistName:) registration relies on the binary + plist being inside the app bundle. Without them, the onboarding install-helper flow and --daemon autopilot silently broke. The helper is now signed before the outer app so codesign --verify --deep --strict passes.

Everything else in v2.1.0 (Sparkle auto-update bundling, HTTPS webhook enforcement, process pipe + PID-lock-fd-leak fixes, dictionary/scanner perf work, dynamic button labels + tooltips, empty states, accessibility) is unchanged.


Install

brew install --cask cacheout-app/cacheout/cacheout

Or download Cacheout-2.1.1.dmg below and drag to /Applications.

Full Changelog: v2.1.0...v2.1.1

Cacheout v2.1.0

17 May 15:53

Choose a tag to compare

⚠️ Known issue — please install v2.1.1 instead

v2.1.0 is missing the custom menubar icon resources and the CacheoutHelper daemon binary from the .app bundle (a scripts/bundle.sh regression). The menubar item can appear blank, and the install-helper onboarding flow / --daemon autopilot silently break. Both issues are fixed in v2.1.1

https://github.com/cacheout-app/cacheout/releases/tag/v2.1.1


What's new in v2.1.0

🚀 Auto-updates land

Sparkle.framework is now bundled inside Cacheout.app/Contents/Frameworks/ with the correct @executable_path/../Frameworks rpath, signed inner→outer with hardened runtime. Starting from this build, future releases will be installable via in-app auto-update instead of manual reinstall.

🎨 UX polish (Palette)

  • Dynamic Scanning… / Cleaning… labels on the Scan/Clean buttons with .help() tooltips explaining disabled states
  • .help() tooltips on per-process ellipsis menus
  • Visual empty state for the node_modules section (centered icon + callout)
  • Accessibility labels on icon-only controls so VoiceOver stops reading "Button"
  • Empty state for the Processes view

🛡️ Security & reliability (Sentinel)

  • HTTPS-only webhooksAutopilotConfigValidator and WebhookConfig.parse both reject http://
  • PID lock fd no longer leaks to childrenopen(2) now uses O_CLOEXEC and withUnsafeFileSystemRepresentation
  • Process pipe deadlock fixCacheoutViewModel.runCleanCommand (docker prune path) reads stdout before waitUntilExit()
  • Defense-in-depth pipe-deadlock guards across other process execution paths
  • Command injection vulnerabilities closed in runCleanCommand and CacheCategory.toolExists
  • Docker pruning now resolves via /usr/bin/env docker so Apple Silicon /opt/homebrew/bin users actually run it

⚡ Performance (Bolt)

  • JetsamHWM priority map built with reduce(into:) — no COW thrash
  • ProcessMemoryScanner uses a sliding-window TaskGroup
  • Scanner TaskGroups marked nonisolated so subtasks parallelize off the actor executor
  • Shared ByteCountFormatter/ISO8601DateFormatter instances + .lazy.filter.reduce
  • Batched @Published array mutations — one SwiftUI re-render per scan instead of N
  • CacheScanner enumerator prefetches .isRegularFileKey
  • NodeModulesScanner is truly concurrent with reduced syscalls
  • Blocking I/O offloaded via Task.detached so async @MainActor methods no longer stall the UI

🐛 Bug fixes

  • Process names no longer display as "unknown" in the main process list
  • Guard against empty arguments in runCleanCommand

Install

brew install --cask cacheout-app/cacheout/cacheout

Or download Cacheout-2.1.0.dmg below and drag to /Applications.

Full Changelog: v2.0.0...v2.1.0

Cacheout v2.0.0

13 Mar 22:34

Choose a tag to compare

Cacheout v2.0.0

Developer cache cleaner & memory manager for macOS.

Features

  • SSD Cache Cleaning — scan and clean 12 cache categories (Xcode, npm, pip, Homebrew, etc.)
  • Memory Pressure Monitoring — real-time telemetry with compressor tracking
  • Predictive Intelligence — memory exhaustion warnings before you run out
  • Intervention Engine — tiered memory recovery (purge, jetsam, sysctl tuning)
  • Privileged Helper — optional helper for advanced memory management
  • Headless Daemon Mode — long-running monitoring with Unix socket API
  • Autopilot Rules — automated actions with webhook/Telegram alerts
  • Docker System Prune — one-click Docker cleanup
  • CLI Interface — full JSON output for scripting and automation
  • MCP Server — available separately via pip install cacheout-mcp

Install

Download: Cacheout-2.0.0.dmg (signed & notarized)

Homebrew:

brew install --cask cacheout-app/tap/cacheout

Requirements

  • macOS 14 (Sonoma) or later
  • Apple Silicon or Intel

License

Sustainable Use License v1.0