Skip to content

[bug]: TUI plugin does not activate on opencode v1.17.10 — server plugin works, TUI entry silent #146

Description

@mengfanbo123

Pre-flight checks

  • I searched existing issues and did not find a duplicate.
  • I verified this on the current production released OpenCode version, or I explain why not below.

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 workstool.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

  1. Install opencode v1.17.10.
  2. Add @slkiser/opencode-quota@latest to tui.json plugin array:
    { "plugin": [ "@slkiser/opencode-quota@latest" ] }
  3. Restart opencode.
  4. Observe: no /quota* commands, no sidebar panel, no compact status line.
  5. tool.quota_status still returns live data.

What I tried (none of it restored the TUI plugin)

  1. Rewrote package.json exports["./tui"] from object form to a plain string "./dist/tui.js" (matching another TUI plugin that loads fine). No effect.
  2. Manually built dist/tui.tsxdist/tui.js with bun build --target bun --external @opentui/* --external solid-js --external @opencode-ai/*. No effect.
  3. Patched the generated import { jsxDEV } from "@opentui/solid/jsx-dev-runtime" to solid-js/jsx-dev-runtime. No effect.
  4. Confirmed OPENCODE_PURE is unset, and that the same install loads another TUI plugin (oh-my-openagent) fine on v1.17.10.
  5. 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.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions