Skip to content

Releases: hueyexe/opencode-ensemble

v0.15.1

18 Jun 06:19

Choose a tag to compare

Bun Runtime Loading Fix

Fixes a startup failure where the plugin could not load under Bun.

  • Bun's static module scanner detected the literal "node:sqlite" string in db.ts and mapped it to better-sqlite3, failing at module load with 'better-sqlite3' is not yet supported in Bun — even though that code path is dead on Bun (it only runs on Node/Electron).
  • Changed the require to ["node","sqlite"].join(":") so the scanner can't statically detect it, matching the existing bun:sqlite pattern in db.ts.

Also in this release

  • docs: CONTRIBUTING now highlights the branch-naming prefix rule and the common "PR from your fork's main" gotcha.

Thanks to @CKGrafico for the fix (#22).

Full Changelog: v0.15.0...v0.15.1

v0.15.0

25 May 07:04

Choose a tag to compare

Project Grouping in Dashboard

Teams are now organized by project (the lead's working directory) so you can run multiple OpenCode instances across different repos without team collisions or ambiguous cleanup.

  • New project layer keyed by the lead's working directory
  • Active team-name uniqueness scoped to project_id instead of globally
  • /api/state returns projects[].teams (flat teams retained for compatibility)
  • Collapsible project outline in the dashboard with coarse status and hover details
  • Recovery and archive purge safety checks scoped per project — duplicate team names across projects no longer cause ambiguous cleanup or branch deletion
  • team_create accepts optional project_name; otherwise a short random name is generated
  • Database migrations are now atomic so failed cross-version upgrades roll back cleanly

Contributors

Thanks to @ClSlaid for contributing project grouping in #16.

Full Changelog: v0.14.2...v0.15.0

v0.14.2

21 May 05:37
b6bc7f7

Choose a tag to compare

Desktop Runtime Compatibility

The plugin now loads and functions correctly on OpenCode Desktop (Node/Electron runtime).

  • Build target switched from Bun to Node so the published bundle has no Bun-only APIs
  • Runtime SQLite adapter: uses bun:sqlite on Bun, node:sqlite on Node/Electron
  • Subprocess helper (runCommand) replaces Bun.spawn for git operations
  • Dashboard HTTP server ported from Bun.serve to node:http
  • CI pins Node 24 (required for stable node:sqlite)

Multi-Instance State Partition Fix

When multiple Plugin instances share the same SQLite database (e.g. Desktop sidecar + opencode serve), teammates spawned by one instance were invisible to the other — every team_* tool call returned "This session is not in a team."

  • MemberRegistry is now rehydrated from SQLite on every plugin init (not just on crash recovery)
  • findTeamBySession, resolveRecipientSession, and checkToolIsolation fall back to SQLite when the in-memory registry misses
  • New session.error event handler surfaces teammate failures as system messages to the lead

Also in this release

  • DashboardServer.stop(true) now calls closeAllConnections() for prompt shutdown under Node
  • engines.node >= 24 declared in package.json; runtime requirements documented in README
  • 37 new tests (605 total)

Full Changelog: v0.14.1...v0.14.2

v0.14.1

10 May 03:19

Choose a tag to compare

OpenCode SDK 1.14 Compatibility

This patch release updates OpenCode Ensemble for the current OpenCode plugin SDK/runtime.

  • Updates @opencode-ai/sdk to ^1.14.45
  • Updates @opencode-ai/plugin to ^1.14.45
  • Updates pinned README install snippets to @hueyexe/opencode-ensemble@0.14.1

Verification

  • Verified local plugin runtime against OpenCode v1.14.45
  • Smoke tested team creation, task board, read-only spawn, messaging, dashboard health, shutdown, and cleanup
  • Smoke tested writable worktree: true spawn, teammate commit, graceful shutdown, preserved branch, and lead-side merge
  • Ran bun run typecheck && bun test && bun run build successfully before publish

Full Changelog: v0.14.0...v0.14.1

v0.14.0

09 May 09:09
f725064

Choose a tag to compare

Archived Team Purge

Safely delete archived teams from Ensemble storage.

  • Adds two-step purge through team_cleanup with preview and exact user approval labels
  • Cleans stale archived worktree/workspace references and scoped Ensemble-owned branches during confirmed purge
  • Blocks active teams, unsafe branch refs, dirty archived worktrees, and resources still referenced by active teams
  • Updates docs for the purge workflow and bumps package snippets to 0.14.0

Full Changelog: v0.13.3...v0.14.0

v0.13.3

05 May 06:39

Choose a tag to compare

Skip worktree for read-only agents

Read-only agents (explore, plan) no longer create git worktrees on spawn. They can't write files, so isolation was unnecessary overhead.

  • Worktree creation automatically skipped for explore/plan agent types
  • Lead system prompt updated with guidance on worktree: false for custom read-only agents
  • Stress test coverage for read-only agent full lifecycle

Also in this release

  • Auto-assign workflow for issues
  • Fixed flaky timing margins in rate-limit tests

Full Changelog: v0.13.2...v0.13.3

v0.13.2

02 May 03:13

Choose a tag to compare

Dashboard Triage Cockpit

The dashboard now gives leads a clearer mission-control view of live agent work.

  • Added a team attention strip for blockers, active work, and recent activity
  • Improved agent ranking, status metadata, task dependency display, and expandable activity messages
  • Hardened keyboard access, focus handling, modal semantics, reduced-motion behavior, and mobile chrome

Also in this release

  • Added a social preview image to the README and npm package
  • Updated install snippets and package version to 0.13.2
  • Isolated config tests from local global config and expanded dashboard contract coverage

Full Changelog: v0.13.1...v0.13.2

v0.13.1

24 Apr 06:20

Choose a tag to compare

Fix: Completion Loop Prevention

Fixes a bug where certain models (e.g. Kimi K2.6) would enter an infinite loop after teammates completed their work. The lead and teammate kept waking each other with courtesy replies, and the cycle never stopped.

  • Added a reported_to_lead flag that gets set when a teammate goes idle after messaging the lead
  • Messages to completed teammates are stored but no longer pushed via promptAsync
  • Broadcasts and recovery redelivery also skip completed teammates
  • Wake-lead now has a 5s cooldown and skips when all teammates are done
  • Peer-flush and nudge skip completed teammates
  • Flag resets if a teammate gets re-activated, so follow-up work still flows normally
  • 10 new tests covering the loop scenario, Q&A during work, and re-activation

Full Changelog: v0.13.0...v0.13.1

v0.13.0

20 Apr 02:01

Choose a tag to compare

Stash-Free Merge Path

Removed git stash from the merge workflow. Sequential merges no longer silently lose work.

  • team_merge now runs git merge --squash + git reset HEAD directly — no stash/pop cycle
  • Sequential merges work cleanly: merge A lands unstaged, merge B lands on top, nothing lost
  • Conflict messages include full manual resolution steps (git merge --squash + git reset HEAD)

Explicit Tool Messaging

All tool output now tells the lead exactly what happened and what to do next.

  • team_shutdown reports commit count: "alice committed 3 changes. Ready to merge." vs "alice has uncommitted changes only"
  • team_merge output: "Merged X's changes into your working directory (unstaged). Review with: git diff"
  • team_tasks_complete fires a TUI toast with progress: "socializer: 3/7 tasks complete"

Also in this release

  • Spawn restriction softened from "CRITICAL: one call per response" to "one at a time, avoids worktree contention"
  • Removed stale git stash list references from cleanup overlap warnings

Full Changelog: v0.12.1...v0.13.0

v0.12.1

15 Apr 06:49

Choose a tag to compare

Merge Overlap Detection

team_merge now detects when you have local changes to files that the agent also modified, and blocks the merge to prevent silent overwrites.

  • Overlap detection covers unstaged, staged, and untracked files
  • Blocked merges list the conflicting files and preserve the branch for retry
  • team_cleanup safety-net warns (non-blocking) when overlap is detected
  • Stash-pop warnings are now surfaced in merge output (previously swallowed)
  • Graceful fallback if the overlap check itself fails

Full Changelog: v0.12.0...v0.12.1