Skip to content

AXorcist 0.2.2

Latest

Choose a tag to compare

@steipete steipete released this 10 Oct 17:16
· 3 commits to main since this release
v0.2.2
6322e77

Highlights: Stop idle global observers from burning CPU whenever other applications launch or quit, honor request timeouts in collectAll, subscribe to every requested notification, and report fast observer-removal failures without retrying in-call.

Fixed

  • Report a failed native removal from the deprecated AXObserverManager.removeObserver(for:notification:) every time and keep the registration for an explicit retry; a removal that failed before the call began waiting was previously retried inside the same call and could report success.
  • Stop idle global observers from burning CPU when unrelated applications launch or quit: index workspace applications by identity instead of NSRunningApplication's constant hash, and stop re-reading resolved PIDs on every snapshot (each launch invalidated AppKit's cached LaunchServices metadata for every application). An idle peekaboo mcp with ~600 running applications drops from ~0.68 s to ~0.02 s of CPU per launch and quit (openclaw/Peekaboo#1005).
  • Honor the request timeout during collectAll traversal and retain elements collected before the deadline. Thanks @SebTardif.
  • Subscribe to every requested observation notification, reject invalid names before registration, and roll back a failed request without disturbing existing observers. Thanks @SebTardif.

Changed

  • Update SwiftFormat to 0.63.1, setup-swift to 1.14.1, and CodeQL Action to 4.38.2 for validation and toolchain setup fixes.

Installation

Verification

  • Release preparation #98, CI, CodeQL, and main CI at the release commit.
  • Swift 6.2.4 and Swift 6.4 CI passed, including formatting, lint, dependency fixtures, source-only packaging regressions, and universal/thin packaging. Locally, 295 tests passed and make check was clean.
  • Built from the signed v0.2.2 tag in a clean checkout. Each archive contains a single mode-0755 axorc with the Foundation Developer ID signature, hardened runtime, secure timestamp, and macOS 14 minimum; the universal binary carries arm64 and x86_64. All three Apple notarizations were accepted, and each executable satisfies the online notarized requirement.
  • The workspace-monitor CPU fix was measured end-to-end in Peekaboo for openclaw/Peekaboo#1005: an idle peekaboo mcp with ~594 running applications dropped from ~0.68 s to ~0.02 s of CPU per unrelated application launch and quit.