Releases: elliotttate/SpliceKitMotion
Release list
v1.0.4
Menu bar restoration: all File/Edit/Mark/Object/View/Window/Help menus now appear on launch (previously Motion showed only the 'Motion' app menu because our onboarding bypass short-circuited Motion's menu restore chain). Bridge robustness: NSNull scrubber prevents null-in-params crashes across 200+ handlers, debug.eval rewritten to use KVC (fixes SIGSEGV on primitive-returning selectors like 'count'), Lua VM self-initializes + UTF-8 safe + 5s timeout, command.execute validates action type. New RPCs: window.list enumerates ALL windows (off-thread fallback when main thread is blocked), modal.dismiss accepts 'title' substring match and 'emergency: true' for [NSApp abortModal]. Expanded blocklist: pasteAsPlainText: (pointer-auth fault in OZEditTool snap timer).
v1.0.3
Agent ergonomics. New RPCs: bridge.alive / bridge.describe / bridge.metrics (observability), palette.block / palette.unblock / palette.listBlocked / palette.isBlocked (runtime-mutable blocklist persisted to disk), command.execute dryRun (preflight without firing), window.listModals / modal.dismiss (detect + close stuck dialogs), debug.lastCrash (parsed IPS reports), debug.mainThreadBacktrace (best-effort host-app stack), log.tail / log.path (log without shelling), batch.execute (multi-RPC), session.snapshot / session.restore (document set save/restore). Every RPC now auto-records per-method latency + error counters.
v1.0.2
Hardening release. 1,836-test harness revealed and fixed: Motion Project Browser suppressed (no more modal on launch); command palette async dispatch (no more bridge hangs on modal-opening selectors); broad blocklist for state-dependent crashy selectors (editMarker, shareToDefaultDestination, etc); Lua VM now initializes on Motion; Lua string handling hardened against invalid UTF-8 and runaway loops; null action params rejected cleanly.
v1.0.1
Add Sparkle auto-update support. Future releases will be installable directly from the app's 'Check for Updates...' menu.
v1.0.0
Initial release of SpliceKit Motion: programmatic control dylib for Apple Motion 6.0. Ships a signed and notarized macOS patcher that copies Motion.app into ~/Applications/MotionKit/, injects the MotionKit dylib, and re-signs the wrapper. JSON-RPC bridge listens on 127.0.0.1:9878 once the patched app is running.