Skip to content

oh-my-openagent

v3.17.15 Feature

This release adds 2 notable features for engineering teams evaluating rollout.

Published 28d AI Coding Tools
✓ No known CVEs patched
Read the diff → Tool health → What is this tool? →

✓ No known CVEs patched in this version

Topics

ai ai-agents anthropic chatgpt claude claude-skills
+9 more
codex cursor gemini ide openai opencode orchestration tui typescript

Summary

AI summary

Fixed OpenCode Desktop plugin loading by removing Bun-specific destructures and added runtime fallback guard against infinite loops.

Full changelog

🖥️ OpenCode Desktop Now Loads OmO Cleanly

If you've been on OpenCode Desktop (Electron) since 1.14.34 and watched the agent switcher silently refuse to list any OmO agents, this release is for you. The plugin would die at module evaluation with Cannot destructure property 'spawn' of 'globalThis.Bun' as it is undefined. because bun build --target bun inlines 25 top-level var { spawn } = globalThis.Bun; statements that crash the moment Node runs them.

The fix replaces every from "bun" spawn import with a runtime shim that uses static node:child_process imports — so the bundler never emits globalThis.Bun destructures in the first place. On real Bun it still goes straight to Bun.spawn for the fast path.

grep -c '} = globalThis.Bun;' dist/index.js → 0 (was 25).

All 7 OMO agents (atlas / explore / librarian / multimodal-looker / oracle / prometheus / sisyphus) now load cleanly on Desktop. Fixes #3797, closes the long tail from #3794 / #3721 / #3762.

🔁 Runtime Fallback No Longer Infinite-Loops On Itself

Thanks to @paolo-notaro — when your fallback_models chain happened to include the same model that just failed, the runtime fallback hook would re-select it and spin forever. Now it correctly skips identity matches and walks to the next entry. (#3802)

🛠️ Spawn Shim Parity Hardening

Cubic and Oracle review caught a few cross-runtime mismatches in the new shim that this release also fixes:

  • Default stdio matches Bun (["ignore", "pipe", "inherit"]) instead of Node's ["pipe", "pipe", "pipe"] — prevents OpenClaw shell-command callers from hanging on cat-style processes that read stdin.
  • Spawn errors propagateproc.exited now rejects with the original ENOENT (etc.) on Node fallback instead of silently resolving to exit code 1.
  • spawnSync.pid returns the real PID instead of the placeholder -1.

Same defaults applied to spawn-with-windows-hide so the Windows path stays consistent.

🧹 Reliability Polish

  • session-notification-sender now tolerates shell promises that don't expose .nothrow (older Bun shells).
  • New regression tests cover default-agent sort ordering and the input-needed idle timer cleanup.

  • 10684857 Merge pull request #3798 from code-yeongyu/fix/node-runtime-compat
  • 9dd0e147 fix(bun-spawn-shim): match Bun.spawn semantics in Node fallback
  • 677b78fe test(agents): cover default-agent sort shim ordering
  • 4c426a53 test(hooks): cancel idle notification timer in input-needed test
  • 46f6fa40 prevent infinite loop when fallback model equals current model
  • 953280eb @paolo-notaro has signed the CLA in code-yeongyu/oh-my-openagent#3802
  • d800fec6 fix(runtime-fallback): prevent infinite loop when fallback model equals current model
  • e9d7dca6 fix(session-notification): tolerate shell promises without nothrow
  • f8defe25 fix(node-runtime-compat): harden Bun spawn shim
  • 3ddc757b fix(bun-spawn-shim): eliminate globalThis.Bun top-level destructures for Electron/Node compat
  • f178ea32 fix(electron-compat): prepend globalThis.Bun shim to prevent Electron/Node crash

Thank you to 1 community contributor:

  • @paolo-notaro:
    • fix(runtime-fallback): prevent infinite loop when fallback model equals current model

Weekly OSS security release digest.

The CVE patches and breaking changes that affected production tools this week. One email, every Sunday.

No spam, unsubscribe anytime.

Share this release

Track oh-my-openagent

Get notified when new releases ship.

Sign up free

About oh-my-openagent

omo; the best agent harness - previously oh-my-opencode

All releases →

Related context

Earlier breaking changes

  • v4.6.0 Removed broken direct public binary entrypoints from platform launcher packages, keeping them internal.
  • v4.6.0 Removed legacy context-window monitor hook path from active hooks and config surfaces.
  • v4.4.0 Removes top‑level `lsp` config key; migration required to `.opencode/lsp.json`.

Beta — feedback welcome: [email protected]