Skip to content

[bug]: TUI plugin fails on OpenCode 1.17.10 due to nested @opentui/solid 0.2.x #149

Description

@sircoderin

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

3.10.1

Bug summary

The server plugin loads, but the TUI plugin does not register on OpenCode 1.17.10. The quota sidebar is missing and /quota does not appear in the TUI command list even though @slkiser/opencode-quota is configured in both opencode.json and tui.json.

This appears to be caused by the package depending on @opentui/solid / @opentui/core ^0.2.7, which installs a nested @opentui/solid@0.2.16. OpenCode 1.17.10 / @opencode-ai/plugin@1.17.10 expects @opentui/* >=0.4.2.

Steps to reproduce

  1. Use OpenCode 1.17.10 with @slkiser/opencode-quota@3.10.1.
  2. Configure the server plugin:
{
  "plugin": ["@slkiser/opencode-quota"]
}
  1. Configure the TUI plugin:
{
  "plugin": ["@slkiser/opencode-quota"]
}
  1. Start OpenCode.
  2. Open the command palette or type /quo.
  3. Check the right sidebar under LSP.

Additional repro signal from the package cache:

bun -e "import('/path/to/node_modules/@slkiser/opencode-quota/dist/tui.tsx').then(() => console.log('ok'))"

Before the workaround below, this failed because dist/tui.tsx resolved @opentui/solid to the nested 0.2.16 copy.

Expected behavior

The TUI plugin should register successfully:

  • quota sidebar panel appears
  • /quota appears in the command list
  • related slash commands like /quota_status are available from the TUI

Actual behavior

The server-side plugin/tool is present, but the TUI features are missing:

  • quota sidebar does not render
  • /quota does not appear
  • local package cache contains both:
    • top-level @opentui/solid@0.4.2
    • nested node_modules/@slkiser/opencode-quota/node_modules/@opentui/solid@0.2.16

Applying npm overrides in the cache wrapper fixed the import locally:

{
  "overrides": {
    "@opentui/core": "0.4.2",
    "@opentui/solid": "0.4.2"
  }
}

After reinstalling, the nested 0.2.16 copy disappeared and the TUI import succeeded.

Relevant logs/output

SyntaxError: Export named 'jsxDEV' not found in module '.../node_modules/@slkiser/opencode-quota/node_modules/@opentui/solid/jsx-runtime.d.ts'

Package export:

"./tui": {
  "types": "./dist/tui.d.ts",
  "default": "./dist/tui.tsx"
}

Dependency range in @slkiser/opencode-quota@3.10.1:

"@opentui/core": "^0.2.7",
"@opentui/solid": "^0.2.7"

@opencode-ai/plugin@1.17.10 peer dependency range:

"@opentui/core": ">=0.4.2",
"@opentui/solid": ">=0.4.2"

If not tested on current production OpenCode, explain why

Tested on OpenCode 1.17.10, which is the current version installed by opencode --version in this environment.

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