v0.89.0
What's Changed
- test(plugins): FakeRegistry.register_surface captures start/stop/reload (#1729) by @mabry1985 in #1741
- fix(plugins): accept /api/plugins/ as a conforming router prefix (#1732) by @mabry1985 in #1740
- fix(plugins): built-in detection requires a manifest, not just a dir (#1731) by @mabry1985 in #1739
- fix(chat): reconnect a dropped provider stream instead of killing the turn (#1728) by @mabry1985 in #1743
- fix(checkpointer): retry a locked checkpoint write instead of dying (#1738) by @mabry1985 in #1742
- feat(plugins): opt-in background auto-update policy (#1720) by @mabry1985 in #1747
- feat(coder): solve() can run one forced rung, for testing by @mabry1985 in #1749
- feat(plugins): plugin-driven composer forms — #1701 Slice 2 by @mabry1985 in #1746
- feat(web): composer-form seam — /effort opens a picker in the composer (#1701) by @mabry1985 in #1745
- feat(plugins): required-config gate — plugins degrade gracefully when unconfigured (#1719) by @mabry1985 in #1750
- feat(web): plugin setup wizard —
⚠️ needs-setup badge + guided config (#1719) by @mabry1985 in #1751 - fix(watches): honor per-watch interval_s + refresh verifier registry on hot-reload by @mabry1985 in #1754
- feat(config): SOUL.md version history — auto-snapshot + restore API (#1691) by @mabry1985 in #1757
- feat(observability): tag per-turn telemetry with the active persona revision (#1691) by @mabry1985 in #1758
- feat(web): SOUL.md version history panel — view + one-click restore (#1691) by @mabry1985 in #1759
- fix(web): dedupe rail surfaces by id so a fork surface can't render twice (#1755) by @mabry1985 in #1760
- docs(adr): ADR 0071 — plugin permissions: trust-and-consent, not a sandbox (#1725) by @mabry1985 in #1748
- feat(web): quick-chat with any fleet agent from the command palette (#1733) by @mabry1985 in #1761
- feat(web): browser-style UI zoom — ⌘/Ctrl +/-/0 (#1711) by @mabry1985 in #1756
Full Changelog: v0.88.0...v0.89.0