v1.3.0
What's new in 1.3.0
Service plugins — persistent runtime
Plugins can now declare "runtime": "service" to run as a persistent child stdio-MCP server. The SideButton server starts it once, discovers its tools live (exposed slug-namespaced), forwards tools/call to it, serializes those calls, restarts it on crash (bounded backoff), and stops it cleanly on shutdown. This unlocks stateful, long-running capabilities (sessions, open connections, held input) alongside the existing stateless spawn-per-call process tier. See Docs → Plugins.
Session input injection
New POST /api/session/input injects a native user turn into a live dispatched Claude session (resolved via its tmux session), with a liveness gate (410 when the session is gone) and an audit log.
Shared files apply
New POST /api/files/apply writes and reconciles a workspace's shared/ files against an ownership manifest, so it only ever touches files it owns.
Reliability
Graceful SIGTERM/SIGINT shutdown so persistent service-plugin children aren't orphaned across restarts.
All additions are backward-compatible — existing process plugins and APIs are unchanged.
Full Changelog: v1.2.0...v1.3.0