Skip to content

v1.3.0 — seamless updates

Choose a tag to compare

@aron98 aron98 released this 20 Oct 11:35
· 12 commits to main since this release
  • Version handshake: clients send clientVersion, daemon answers with daemonVersion (additive, backward-compatible with pre-handshake daemons)
  • Daemon self-restart: when a newer client contacts an older daemon, the daemon persists state + queue journal, drains connections, and respawns itself with the same argv — first client contact after an update triggers a seamless restart (one attempt per version, no restart loops)
  • Queue journaling: queued/offered requests survive daemon restarts, re-queued FIFO with the same request ids; offered entries come back as queued and are re-offered with fresh tokens
  • service stop hardening: SIGTERM → bounded wait (default 5s) → SIGKILL → verifies the endpoint is verifiably free before reporting success
  • service start honesty: refusals name the conflicting pid ("socket answered from pid X") instead of a bare 10s timeout
  • Skew + multi-copy drift visibility: doctor reports every detected copy (CLI on PATH, opencode npm-cache copies) and warns on daemon skew and version drift; status and dashboards show the daemon version with an "older than installed" note
  • Docs: new "Update lifecycle" section in OPERATIONS.md; COMPATIBILITY.md explains the opencode multi-copy reality

Tests: 134/134 green.