Skip to content

v0.17.0

Latest

Choose a tag to compare

@hueyexe hueyexe released this 25 Aug 04:44

v0.17.0

Community release. This version integrates four contributed PRs, closes both open issues, and lands three follow-up fixes from the integration review. Thanks to @Agony1023, @1n4001, @Saksham-Shrey, and @Eaven for the contributions.

New

  • Update a teammate's model in-place (#26): pass model: "provider/model" to team_message targeting a teammate and their model hot-swaps on the next turn. No respawn, no re-assigning tasks. Lead only; text is optional when changing model only. The stored model now also sticks across every delivery path (peer messages, nudges, recovery redelivery) instead of applying once at spawn.
  • Force re-engage a completed teammate (#31): team_message accepts lead-only force: true to wake a teammate who already reported completion, for legitimate follow-on work like multi-round review.
  • Notify-the-lead primitive (#34): system events (errors, timeouts, spawn failures) now wake the lead directly instead of relying on the idle backstop, so a failure is never silent.
  • Versioned dashboard API (#33): /api/state returns an exported EnsembleDashboardState with a version field for external consumers, plus leadSessionId, lastNudgedAt, and provider-retry signals.

Fixed

  • Task status stays truthful across the whole lifecycle (#27/#34): spawning a teammate atomically claims its task, and a member's in-progress tasks return to the board whenever they stall, time out, are shut down, or are lost to a crash — no more work stranded on dead assignees.
  • Dashboard timestamps (#32): historical activity no longer renders as 08:00:00/19:00:00 (epoch zero). OpenCode v1's { created } time shape is parsed correctly.
  • Teammate lifecycle robustness (#31): stall detection covers a member's first action, orphaned teams reconcile after crashes (without boot deadlock), team_merge warns honestly when there is nothing to merge instead of reporting false success, and broadcasts count toward chatty detection.
  • Watchdog stall notifications can no longer loop: a persistently undeliverable nudge stops re-firing the lead wake, DB write, and toast every check tick until the member shows fresh activity or the nudge ages out.
  • Malformed provider retry payloads from older OpenCode versions no longer throw inside the shared event handler.
  • Spawn rollback cannot resurrect a task that was completed during the claim window.

Upgrade notes

Pin the exact version (@hueyexe/opencode-ensemble@0.17.0) due to OpenCode's plugin cache behavior. Two additive schema migrations run automatically on first launch; existing databases upgrade in place.