Random crashes in OpenCode Desktop have been a thorn in users' sides for too long. Silent exits, missing notifications, and native search tools like grep and glob returning empty results — all gone in version 4.3.1. The fix targets the Electron utility process that powers the desktop sidecar: it didn't expose Bun's shell helpers or its native streaming APIs. The team rewrote every affected path, adding runtime detection and fallbacks to plain Node child_process with buffer-concat streaming.
The core issue: OpenCode's desktop sidecar relied on Bun-specific APIs that simply don't exist in Electron's utility process. That meant any call to shell commands or streaming functions would silently fail — or crash the whole process. Instead of patching symptoms, the team added runtime detection. Now, the app checks whether Bun's helpers are available. If they're not, it falls back to Node.js child_process.spawn and manual buffer concatenation.
Concretely, three surfaces were fixed: native file search via grep, pattern matching via glob, and any streaming output from shell commands. These are the features that power quick code navigation and project-wide find-and-replace. They now work reliably across all desktop builds, regardless of the underlying runtime.
This isn't just a bug fix — it's a lesson in dependency management. OpenCode is built on Bun for its speed, but the desktop wrapper relies on Electron, which runs Node.js. The mismatch created a silent failure mode that frustrated users and eroded trust. The runtime detection approach is pragmatic: it doesn't force a single runtime, but adapts to what's available. That's good engineering.
For everyday users, the change means no more head-scratching when search returns zero results. For developers building on similar stacks, it's a blueprint for graceful degradation. The sidecar no longer crashes — and that's a big deal for productivity.
Official Source: https://github.com/code-yeongyu/oh-my-openagent/releases/tag/v4.3.1