Pre-flight checks
OpenCode version tested
1.17.10
opencode-quota version tested
@slkiser/opencode-quota@latest (2.x, installed under ~/.cache/opencode/packages/@slkiser/opencode-quota@latest/)
Bug summary
The TUI plugin entry (./tui) never activates on opencode v1.17.10. None of the TUI-only surfaces appear: no /quota* slash commands, no sidebar panel, no compact status line.
The server plugin still works — tool.quota_status returns valid data and the quota cache is populated, so this is isolated to the TUI entry.
A diagnostic file-write log added at the top of dist/tui.tsx (module scope and inside the tui() factory) never fires after restart, so the module never executes. I could not confirm whether the import fails or the loader never tries.
Steps to reproduce
- Install opencode v1.17.10.
- Add
@slkiser/opencode-quota@latest to tui.json plugin array:
{ "plugin": [ "@slkiser/opencode-quota@latest" ] }
- Restart opencode.
- Observe: no
/quota* commands, no sidebar panel, no compact status line.
tool.quota_status still returns live data.
What I tried (none of it restored the TUI plugin)
- Rewrote
package.json exports["./tui"] from object form to a plain string "./dist/tui.js" (matching another TUI plugin that loads fine). No effect.
- Manually built
dist/tui.tsx → dist/tui.js with bun build --target bun --external @opentui/* --external solid-js --external @opencode-ai/*. No effect.
- Patched the generated
import { jsxDEV } from "@opentui/solid/jsx-dev-runtime" to solid-js/jsx-dev-runtime. No effect.
- Confirmed
OPENCODE_PURE is unset, and that the same install loads another TUI plugin (oh-my-openagent) fine on v1.17.10.
- Downgrading opencode to v1.17.9 restores the TUI plugin.
Observation (unconfirmed — requesting maintainer diagnosis)
The published ./tui export points at a .tsx source file:
"./tui": {
"types": "./dist/tui.d.ts",
"default": "./dist/tui.tsx"
}
dist/tui.tsx contains JSX. When I compile it with bun build, the JSX transform emits:
import { jsxDEV } from "@opentui/solid/jsx-dev-runtime";
But @opentui/solid's package.json only ships a .d.ts for the JSX runtime:
"exports": {
"./jsx-runtime": "./jsx-runtime.d.ts",
"./jsx-dev-runtime": "./jsx-runtime.d.ts"
}
Running that compiled bundle under Bun fails:
Export named 'jsxDEV' not found in module '.../solid-js/dist/solid.js'
I do not know whether opencode's actual loader path hits the same error (I could not get opencode itself to surface the failure), nor whether .tsx sources are expected to work under opencode's Bun runtime. Filing for maintainer diagnosis.
For comparison, oh-my-openagent loads fine on the same install: source is tui.ts (no JSX), compiled to dist/tui.js via bun build --target bun, exports["./tui"] is a plain string, same @opentui/solid 0.2.16.
Expected behavior
TUI plugin activates: slash commands registered, sidebar panel available, compact status line rendered.
Actual behavior
TUI plugin does not activate. No TUI surfaces. No user-visible error.
Relevant logs/output
opencode --log-level DEBUG startup log shows no plugin/quota lines anywhere. The module-scope file-write log in dist/tui.tsx never fires. Can attach full log on request. Requesting guidance on how to surface a loader-level error if any.
If not tested on current production OpenCode, explain why
v1.17.10 is the current production release (per the changelog dated Jun 24, 2026). Verified on it.
Pre-flight checks
OpenCode version tested
1.17.10
opencode-quota version tested
@slkiser/opencode-quota@latest(2.x, installed under~/.cache/opencode/packages/@slkiser/opencode-quota@latest/)Bug summary
The TUI plugin entry (
./tui) never activates on opencode v1.17.10. None of the TUI-only surfaces appear: no/quota*slash commands, no sidebar panel, no compact status line.The server plugin still works —
tool.quota_statusreturns valid data and the quota cache is populated, so this is isolated to the TUI entry.A diagnostic file-write log added at the top of
dist/tui.tsx(module scope and inside thetui()factory) never fires after restart, so the module never executes. I could not confirm whether the import fails or the loader never tries.Steps to reproduce
@slkiser/opencode-quota@latesttotui.jsonpluginarray:{ "plugin": [ "@slkiser/opencode-quota@latest" ] }/quota*commands, no sidebar panel, no compact status line.tool.quota_statusstill returns live data.What I tried (none of it restored the TUI plugin)
package.jsonexports["./tui"]from object form to a plain string"./dist/tui.js"(matching another TUI plugin that loads fine). No effect.dist/tui.tsx→dist/tui.jswithbun build --target bun --external @opentui/* --external solid-js --external @opencode-ai/*. No effect.import { jsxDEV } from "@opentui/solid/jsx-dev-runtime"tosolid-js/jsx-dev-runtime. No effect.OPENCODE_PUREis unset, and that the same install loads another TUI plugin (oh-my-openagent) fine on v1.17.10.Observation (unconfirmed — requesting maintainer diagnosis)
The published
./tuiexport points at a.tsxsource file:dist/tui.tsxcontains JSX. When I compile it withbun build, the JSX transform emits:But
@opentui/solid'spackage.jsononly ships a.d.tsfor the JSX runtime:Running that compiled bundle under Bun fails:
I do not know whether opencode's actual loader path hits the same error (I could not get opencode itself to surface the failure), nor whether
.tsxsources are expected to work under opencode's Bun runtime. Filing for maintainer diagnosis.For comparison,
oh-my-openagentloads fine on the same install: source istui.ts(no JSX), compiled todist/tui.jsviabun build --target bun,exports["./tui"]is a plain string, same@opentui/solid0.2.16.Expected behavior
TUI plugin activates: slash commands registered, sidebar panel available, compact status line rendered.
Actual behavior
TUI plugin does not activate. No TUI surfaces. No user-visible error.
Relevant logs/output
opencode --log-level DEBUGstartup log shows noplugin/quotalines anywhere. The module-scope file-write log indist/tui.tsxnever fires. Can attach full log on request. Requesting guidance on how to surface a loader-level error if any.If not tested on current production OpenCode, explain why
v1.17.10 is the current production release (per the changelog dated Jun 24, 2026). Verified on it.