Skip to content

Upstream: @opencode/plugin@2.2.3 + @opentui/core@0.8.0 + @opentui/solid@0.8.0 compatibility report #97

Open

Description

@devin-ai-integration

TL;DR: Nothing breaks. @opencode/plugin 2.2.3 and OpenTUI 0.8.0 need a pin bump only in all five V2 plugins, and the V1-only prompt-inheritance plugin is unaffected. No published version breaks for users on OpenCode 2.2.3. No peer range needs tightening. One thing to watch: @opencode/plugin 2.2.3 now has @opentui/{core,solid} >=0.8.0 as a peer, so bump the three dev pins together. The prompt sync is still broken, as reported in #96, and upstream V1 prompts haven't changed since that report.

Base: main @ cb6d3dde2. Bumps: @opencode/plugin 2.2.0 → 2.2.3 (compare), @opentui/core + @opentui/solid 0.7.0 → 0.8.0 (release, compare). The 2.2.1 delta is already covered in #96, so this report focuses on 2.2.2 and 2.2.3.

Per-plugin verdict

Package (published latest) Verdict Peer range Notes
opencode-agents-loader (2.0.2) needs pin bump only >=2.0.2 <3: OK real V2 host-resolve tests pass
opencode-adversarial-review (2.0.2) needs pin bump only >=2.0.2 <3: OK bun run smoke passes
opencode-double-tap-timeline (2.0.1) needs pin bump only (@opencode/plugin + both OpenTUI pins) @opentui/* >=0.5.10: OK uses only useKeyboard + keymap.dispatch; the Node Host.resolve regression test passes
opencode-output-styles (2.2.0) needs pin bump only (all three) @opentui/* >=0.6.6: OK bun run smoke passes (server + TUI)
opencode-ram-monitor (2.1.1) needs pin bump only (all three) @opentui/* >=0.6.6: OK the only ScrollBox user; see below
opencode-agent-prompt-inheritance (1.0.1, V1) unaffected @opencode-ai/plugin >=1.19.3 <2 doesn't depend on either package

Gate results

Scratch clone with the dev pins bumped in 5 packages. bun install moved @opencode/{plugin,ai,client,…} to 2.2.3, @opentui/{core,solid} to 0.8.0 and solid-js to 1.9.17. Run on Bun 1.4.4 with Node 24.

Gate 2.2.0 / 0.7.0 (baseline) 2.2.3 / 0.8.0
bun run typecheck ✅ ✅
bun run lint ✅ ✅
bun run test ✅ guard 61/61; packages 331/331 ✅ guard 61/61; loader 28, timeline 18, output-styles 99, ram-monitor 77, adversarial-review 70, prompt-inheritance 39, 0 fail
bun run build ✅ ✅
smoke on adversarial-review / output-styles / ram-monitor (Bun 1.4.4) — ✅ / ✅ / ✅
same smokes on Bun 1.3.12 (repo packageManager) — ✅ / ❌ / ❌: same issue as before, documented in #96 (not caused by this bump)

Loader and timeline have no smoke script. Their built-entry checks through the real @opencode/plugin/host resolver run inside bun test (they need node on PATH), and they pass.

Upstream changes that matter

@opencode/plugin 2.2.3: TUI plugins require OpenTUI 0.8 (#60385). The @opentui/core and @opentui/solid peers moved from 0.7.0 to >=0.8.0 (both still optional), and OpenCode's own catalog now ships OpenTUI 0.8.0 / solid-js 1.9.17. Apart from that, the npm tarball diff from 2.2.0 to 2.2.3 changes only .d.ts files and package.json: the shipped runtime JS and the dist/tui/* types are identical.

  • Type changes since Upstream: @opencode/plugin@2.2.1 compatibility report #96: SessionHooks / SessionDomain docs for the 2.2.1 experimental moves, and GUI-only additions (#60164 composer note title / subtitle, composer-pill menu popover). Nothing here uses the GUI SDK.
  • #60097 keeps model variants that plugins supply, an internal session fix. No plugin here supplies variants.

OpenTUI 0.8.0 breaking changes (notes) and how they apply here:

  • ScrollBox wrapper / viewport / content / scrollbars are now facades, not renderables. Scrollbars lose slider / arrows, and options on parts outside each part's supported fields are ignored (#1805, #1798). Only opencode-ram-monitor's /ram modal uses a scrollbox, with scrollX, scrollY, contentOptions: { minHeight: 0 } and scrollbarOptions: { visible: false }. It never reaches into the parts. minHeight is a supported layout field, and visible is in ScrollBoxBar.keys, so both still apply. The modal render test (testRender, now with nativeSceneVerify on by default) passes on 0.8.0. The published 2.1.1 bundle uses the same options.
  • RenderContext now requires clock / onAnimationTick (#1803). No plugin implements a custom RenderContext.
  • The _hasFocusedDescendant field was removed and native scene renames landed (#1778). Not used here.
  • solid: solid-js peer is now ^1.9.12. Seroval advisory GHSA-p6vx-979v-rg4c is fixed with solid-js ≥ 1.9.16 (#1786). The lockfile resolves 1.9.17 after the bump.

Config / policy / commands:

  • Managed policy (#60315): plugins are now controlled by a new plugin.use action. A bare integration.use rule no longer applies to plugins, and old plugin: prefixes convert automatically. This only matters for MDM-managed installs, and needs no plugin change.
  • No keymap, command-registry, plugin-loader or package-resolution changes in 2.2.2 or 2.2.3. packages/tui/src/{plugin,keymap} have no commits in range, and host.js is unchanged. Neither release note adds new built-in slash commands, so /ram, /output-style, /adversarial-review and /constructive-review still don't collide with any.
  • @opencode/ai breaking changes (experimental media moved, tool(...) unification): these only affect direct @opencode/ai imports. Not used here.

Are published versions broken on OpenCode 2.2.3?

No. The runtime JS in @opencode/plugin didn't change, and every TUI build marks @opentui/* / solid-js as --external, so the published TUI plugins run on the host's OpenTUI 0.8. None of them uses an API that 0.8 removed or changed. Caveat: I checked this with the 0.8 test renderer and resolver smokes, not a live OpenCode 2.2.3 TUI session.

Peer ranges

No tightening needed. The plugin code runs on both OpenTUI 0.7 (OpenCode 2.2.0–2.2.2) and 0.8 (2.2.3), so >=0.5.10 / >=0.6.6 stay correct. Raising them to >=0.8.0 would wrongly exclude 2.2.0–2.2.2 hosts.

Two watch items for the pin-bump PR:

  1. Move @opencode/plugin 2.2.3 together with @opentui/core + @opentui/solid 0.8.0 in timeline, ram-monitor and output-styles. The new SDK's peer is >=0.8.0, so bumping only the SDK (which Dependabot might do) leaves dev pins that don't satisfy that peer.
  2. Keep the peer strings distinct from the new dev pins, per the AGENTS.md Dependabot rule. The current peers already are.

Suggested change for the bump (not applied):

// packages/{opencode-double-tap-timeline,opencode-ram-monitor,opencode-output-styles}/package.json → devDependencies
"@opencode/plugin": "2.2.3",
"@opentui/core": "0.8.0",
"@opentui/solid": "0.8.0",
// packages/{opencode-agents-loader,opencode-adversarial-review}/package.json → devDependencies
"@opencode/plugin": "2.2.3",

Vendored prompt sync (opencode-agent-prompt-inheritance)

Did upstream prompts change? No, not since #96. I ran bun run sync:prompts in the scratch clone:

  • default ref dev: still fails (Failed to fetch gpt.txt: 404). dev no longer has packages/opencode/.
  • OPENCODE_UPSTREAM_REF=v1: fails on copilot-gpt-5.txt: 404, which was removed upstream in b01498d3f / #59669.
  • The last V1 prompt-dir commit is still b01498d3f (2026-10-27). Compared with v1: default.txt still differs (the 548648a3d verbosity examples), and anthropic / beast / codex / gemini / gpt / kimi / trinity are identical. No vendored file changed.
  • The Sync OpenCode Prompts workflow is still failing daily (Oct 27–29). The suggested fix in Upstream: @opencode/plugin@2.2.1 compatibility report #96 (default ref v1, drop copilot-gpt-5.txt from ALLOWED_FILES) still applies.

Method: npm tarball diff of @opencode/plugin 2.2.0 vs 2.2.3. Upstream release notes plus per-path commit history (packages/plugin, packages/tui/src/{plugin,keymap}, packages/core/src/{plugin,config}) for v2.2.0..v2.2.3. A read of the OpenTUI 0.8.0 ScrollBox types. Gates and smokes ran in a throwaway clone that has since been deleted. Nothing was pushed.

Written by Devin

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions