Description
detectOMO() in dist/index.js uses an exact string match (Array.includes("oh-my-opencode")) to check if OMO is installed. This fails when the plugin entry in opencode.json includes a version suffix like "oh-my-opencode@latest".
All MC modes except vanilla (ulw, ralph, plan) fail with:
Error: OMO mode "ulw" requires Oh-My-OpenCode to be installed and detected
Steps to Reproduce
- Configure
oh-my-opencode@latest in ~/.config/opencode/opencode.json:
"plugin": [
"oh-my-opencode@latest",
"opencode-mission-control"
]
- Run any MC job with a non-vanilla mode:
mc_plan({ jobs: [{ name: "test", mode: "ulw", prompt: "..." }] })
- Job fails immediately with the OMO detection error.
Expected Behavior
detectOMO() should recognize "oh-my-opencode@latest", "oh-my-opencode@^1.0.0", or any version-suffixed variant as a valid OMO installation.
Actual Behavior
The check at dist/index.js:31893 does:
const hasOMO = config3.plugin.includes("oh-my-opencode");
This is an exact match. "oh-my-opencode@latest" does not equal "oh-my-opencode", so hasOMO is false and the job throws.
Suggested Fix
Replace the exact match with a prefix check:
const hasOMO = config3.plugin.some(p => p === "oh-my-opencode" || p.startsWith("oh-my-opencode@"));
Environment
- OS: macOS (Apple Silicon)
- tmux version: 3.5a
- opencode version: 1.2.10
- bun version: 1.2.5
- opencode-mission-control: latest (as of 2026-02-21)
Additional Context
Workaround: change the plugin entry from "oh-my-opencode@latest" to "oh-my-opencode" in opencode.json. Both resolve to the same package at install time.
Description
detectOMO()indist/index.jsuses an exact string match (Array.includes("oh-my-opencode")) to check if OMO is installed. This fails when the plugin entry inopencode.jsonincludes a version suffix like"oh-my-opencode@latest".All MC modes except
vanilla(ulw,ralph,plan) fail with:Steps to Reproduce
oh-my-opencode@latestin~/.config/opencode/opencode.json:Expected Behavior
detectOMO()should recognize"oh-my-opencode@latest","oh-my-opencode@^1.0.0", or any version-suffixed variant as a valid OMO installation.Actual Behavior
The check at
dist/index.js:31893does:This is an exact match.
"oh-my-opencode@latest"does not equal"oh-my-opencode", sohasOMOisfalseand the job throws.Suggested Fix
Replace the exact match with a prefix check:
Environment
Additional Context
Workaround: change the plugin entry from
"oh-my-opencode@latest"to"oh-my-opencode"inopencode.json. Both resolve to the same package at install time.