Repository navigation
Description
TL;DR: Nothing breaks. The five V2 plugins need only a pin bump (@opencode/plugin 2.2.5, plus @opentui/{core,solid} 0.8.1 where pinned). The V1-only prompt-inheritance plugin is unaffected. No published version breaks for users on OpenCode 2.2.5 or on OpenTUI 0.8.1, and no peer range needs tightening now. Upstream V1 prompts haven't changed. The prompt sync is still broken (#96) and has failed every day through Oct 31.
Base: main @ cb6d3dde2. Bumps: @opencode/plugin 2.2.0 → 2.2.5, @opentui/core + @opentui/solid 0.7.0 → 0.8.1 (v0.8.1 release, compare v0.8.0...v0.8.1). The SDK side through 2.2.5 is covered in #96, #97 and #98, and 2.2.5 is still the latest @opencode/plugin. This report covers the new OpenTUI 0.8.0 → 0.8.1 delta, plus the upstream OpenCode dev commits made since v2.2.5 that move the host to OpenTUI 0.8.1.
Per-plugin verdict
Package (published latest) |
Verdict | Peer range | Notes |
|---|---|---|---|
opencode-agents-loader (2.0.2) |
needs pin bump only (@opencode/plugin) |
>=2.0.2 <3: OK |
no OpenTUI use |
opencode-adversarial-review (2.0.2) |
needs pin bump only (@opencode/plugin) |
>=2.0.2 <3: OK |
smoke ✅ |
opencode-double-tap-timeline (2.0.1) |
needs pin bump only (all three) | @opentui/* >=0.5.10: OK |
uses useKeyboard + context.keymap, see keymap note |
opencode-output-styles (2.2.0) |
needs pin bump only (all three) | >=2.2.0 <3, @opentui/* >=0.6.6: OK |
smoke ✅ (server + TUI) |
opencode-ram-monitor (2.1.1) |
needs pin bump only (all three) | >=2.1.0 <3, @opentui/* >=0.6.6: OK |
smoke ✅; there's a minor layout watch-item, see below |
opencode-agent-prompt-inheritance (1.0.1, V1) |
unaffected | @opencode-ai/plugin >=1.19.3 <2 |
depends on neither package |
Gate results
I bumped the dev pins in 5 packages in a scratch copy of main. bun install resolved @opencode/plugin 2.2.5, @opentui/{core,solid} 0.8.1 and solid-js 1.9.17. I ran on Bun 1.4.4 with Node 24.22.2 and npm 11.6.2.
| Gate | Result |
|---|---|
bun run typecheck |
✅ |
bun run lint |
✅ |
bun run test |
✅ 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: adversarial-review / output-styles / ram-monitor (Bun 1.4.4) |
✅ / ✅ / ✅ |
same smokes on Bun 1.3.12 (repo packageManager) |
✅ / ❌ / ❌, the known ResolveMessage issue from #96 (Cannot find module '…/rpc' / '…/server'). This bump didn't cause it. |
Some tests need a real node/npm on PATH: guard R11/R12, loader "root server wrapper… inert on import" and timeline "real Node Host.resolve". Without one they fail the same way on the unbumped baseline, so they aren't a regression signal.
Upstream changes that matter
OpenTUI 0.8.1 (release notes):
- Zero-size nodes are no longer drawn (#1869). When Yoga gives a node 0 rows or 0 columns, OpenTUI now skips drawing it. Before, it drew it as 1 cell on top of its siblings. This is the only change that can show in existing UIs. Watch-item: the
ram-monitor/rammodal (RamModalinsrc/tui.ts) is a column of a "RAM Usage" title, ascrollbox(maxHeight: 24) and a close hint, and none of them setsflexShrink: 0. On a very short terminal Yoga can shrink the title or hint to 0 rows. They would then vanish instead of overlapping the list. That's cosmetic, and existing tests and smokes don't cover it. The sidebar widget already setsflexShrink: 0where it matters. Optional hardening:// packages/opencode-ram-monitor/src/tui.ts (RamModal) createTextNode({ fg: () => theme().text, wrapMode: "none", truncate: true, flexShrink: 0 }, () => "RAM Usage"), // …and the same `flexShrink: 0` on the close-hint text node
- keymap
useBindingskeeps layer position on re-register (#1785), paired on the host side with opencodebf544cd41/ #59294 ("keep keymap command objects while their data is unchanged").output-stylesregisters commands throughcontext.keymap.layer(() => …), anddouble-tap-timelinecallscontext.keymap.dispatch("session.timeline"). Both only touch the host wrapper and neither depends on layer ordering, so the change doesn't affect either. It does fix churn: re-registered layers no longer jump to the top. - Native stdout writer thread (Linux/macOS TTY, #1858). You can opt out with
OTUI_STDOUT_THREAD=0. Close/restore over slow links is also more reliable (#1872, #1893). Both are host-level and transparent to plugins.ram-monitorcleanup is unaffected: it already usesonCleanup, andrenderer.idle()still exists. Select/TabSelect/TextTable/LineNumbernow paint into the frame (#1831, #1834, #1833). Translucent colors may blend slightly differently. No plugin here uses these components.markdownrestyle fixes (#1857), and a ScrollBox-in-Markdown collapse and listener-leak fix (#1863). These are fixes thatram-monitor's markdown-in-scrollbox modal benefits from. They need no code change.- The breaking changes are native-only: the
ot_session_renderer_statestruct grew to 40 bytes, and building now needs Zig 0.17. The packages here only use the JS API through the host, so neither breaking change applies. - Additive APIs:
VideoRenderable/<video>,cropon images, theframe:droppedevent andmaxWidth/ellipsistext draws. None of them is used here.
OpenCode host (after v2.2.5, on dev, unreleased):
8db3d852c(#60913) bumps the host catalog to OpenTUI 0.8.1 and raises the@opencode/pluginpeers to@opentui/{core,solid} >=0.8.1(still optional). OpenCode 2.2.5 itself ships OpenTUI 0.8.0, so the next release (2.2.6+) is the first host on 0.8.1.- Config loading, #60803 (
6b08407a5): config discovery now lists each ancestor directory once instead of probing every candidate. The candidate list (.claude,.agents,.opencode, …) and the symlink handling stay the same, soagents-loader's generated.opencode/agent files are still found. Related changes: #60787 only rebuilds providers on account switch when a plugin's state changed, and #60921 adds in-memoryskill://URIs. All three are additive or perf-only for these plugins. - Commands: the only change is a new CLI flag,
--worktree/-w. No new TUI slash commands were added, so/ram,/output-style,/adversarial-reviewand/constructive-reviewstill don't collide with anything. No commits since v2.2.5 touch plugin package resolution (Host.resolve).
Are published versions broken on the new upstream?
No. The published TUI bundles mark @opentui/* and solid-js as external, so they run on whatever OpenTUI the host ships. Every API they use (createElement/insert/spread, useKeyboard, SyntaxStyle, scrollbox/markdown) is unchanged in 0.8.1, and the tests and built-artifact smokes pass against it. Caveat: this rests on tests, smokes and the release notes. I didn't run a live OpenCode TUI session on OpenTUI 0.8.1, and no released host ships it yet.
Peer ranges
No tightening needed. Nothing here uses a 0.8.1-only API. Raising the @opentui/* peers to >=0.8.1 would exclude every released 2.2.x host (2.2.5 ships 0.8.0).
For the pin-bump PR (not applied):
// packages/{opencode-double-tap-timeline,opencode-ram-monitor,opencode-output-styles}/package.json → devDependencies
"@opencode/plugin": "2.2.5",
"@opentui/core": "0.8.1",
"@opentui/solid": "0.8.1",
// packages/{opencode-agents-loader,opencode-adversarial-review}/package.json → devDependencies
"@opencode/plugin": "2.2.5",Bump all three together. The 2.2.5 SDK peers @opentui/* >=0.8.0, which the current 0.7.0 dev pins don't meet. Once the next SDK release lands with >=0.8.1 (#60913), an 0.8.0 pin won't meet it either, so go straight to 0.8.1. Peer strings stay distinct from the dev pins, as the AGENTS.md Dependabot rule requires.
Vendored prompt sync (opencode-agent-prompt-inheritance)
Did upstream prompts change? No. I ran bun run sync:prompts in the scratch copy:
- default ref
dev: fails withdefault.txt: 404.devhas nopackages/opencode/src/session/prompt/any more. OPENCODE_UPSTREAM_REF=v1: fails withcopilot-gpt-5.txt: 404, because #59669 deleted it.- The last commit to the V1 prompt dir is still
b01498d3f(2026-10-27). Compared byte for byte withv1, anthropic / beast / codex / gemini / gpt / kimi / trinity are identical.default.txtstill has the known drift (548648a3d). No vendored file changed since Upstream: @opencode/plugin@2.2.5 + @opentui/core@0.8.0 + @opentui/solid@0.8.0 compatibility report #98. - The Sync OpenCode Prompts workflow is still failing daily (Oct 28–31). The Upstream: @opencode/plugin@2.2.1 compatibility report #96 fix still applies:
// scripts/sync-upstream-prompts.ts const ref = process.env.OPENCODE_UPSTREAM_REF ?? "v1"; // `dev` is V2-only // and drop "copilot-gpt-5.txt" from ALLOWED_FILES (removed upstream in #59669)
Method: I read the OpenTUI v0.8.1 release notes and the v0.8.0...v0.8.1 compare. I also checked the OpenCode dev commits since v2.2.5 and the npm registry metadata for @opencode/plugin and @opentui/*. Gates and smokes ran in a throwaway copy that has since been deleted. Nothing was pushed or committed.
Activity
devin-ai-integration commentedon Nov 2, 2026
Re-check on current
main(323d57270). Verdict unchanged: nothing breaks. Main now pins@opencode/plugin2.2.5 +@opentui/{core,solid}0.8.0 (5b5aaa455), so this run covers the remaining 0.8.0 → 0.8.1 bump. It also addsopencode-auto-advisor, which the report above didn't cover. No published version breaks on OpenTUI 0.8.1, and no peer range needs tightening. Upstream V1 prompts haven't changed.Per-plugin verdict
latest)opencode-double-tap-timeline(2.0.1)@opentui/* >=0.5.10: OKopencode-output-styles(2.2.0)@opentui/* >=0.6.6: OKopencode-ram-monitor(2.1.1)RamModalflexShrinkwatch-item above still applies)@opentui/* >=0.6.6: OKopencode-auto-advisor(2.1.0)flexShrink: 0, so the 0.8.1 zero-size-node change (#1869) doesn't affect it@opentui/* >=0.8.0: OKopencode-agents-loader(2.0.2),opencode-adversarial-review(2.0.2)opencode-agent-prompt-inheritance(1.0.1, V1)Gate results (scratch copy; Bun 1.3.12 = repo
packageManager, Node 22.23.4, npm 12.2.1)bun installresolved@opentui/core0.8.1,@opentui/solid0.8.1,@opencode/plugin2.2.5 andsolid-js1.9.17.bun run typecheckbun run lintbun run testbun run buildsmokeadversarial / output-styles / ram-monitor / auto-advisor, Bun 1.4.4The Bun 1.3.12 smoke failures are the known self-reference
ResolveMessage(Upstream: @opencode/plugin@2.2.1 compatibility report #96), e.g.Cannot find module '@capybearista/opencode-auto-advisor/rpc'. They happen on the baseline too, so the bump didn't cause them.Flake, not a regression: the first turbo
bun run testfailed one test on each side:active (default) > requests from before a restart…modal > renders the TUI and server trees. The markdown heading rows were still blank when the 20×25 ms render loop ended.After that I ran the full suite three more times on each side (
--continue --force), ran ram-monitortui.test.ts10× on its own, and ran that test 8× per side with the CPU pegged. Everything passed. If it comes back, a fixed-attempt loop is what makes it timing-sensitive. One fix is to poll until the heading appears:Upstream changes since the report above
lateston npm, so there's nothing new beyond the 0.8.1 notes above (release).dev(no release since v2.2.5, which still ships OpenTUI 0.8.0;devis on 0.8.1 via #60913):d4a5fb4d2) tidies the plugin host and config-reload wiring. It's a refactor: plugin-source directory matching moves intoConfigEntryObserver.isDirectorySourceand location responses go through a sharedatLocation. NoPlugin.Contextshape change.platform-node-sharedso the packed SDK has a single Effect runtime. It's a packaging fix with no API change.Host.resolve.Are published versions broken? Do peers need tightening?
No to both. The published TUI bundles keep
@opentui/*andsolid-jsexternal and use no 0.8.1-only API. Every package's tests and built-artifact smokes pass against 0.8.1. Raising the peers to>=0.8.1would exclude OpenCode 2.2.5, the latest released host, which ships 0.8.0. Caveat: I didn't run a live OpenCode TUI, and no released host ships 0.8.1 yet.Pin bump (not applied):
Bump all four together so Dependabot sees identical pins. The peer strings stay distinct from the dev pins.
Vendored prompt sync (
opencode-agent-prompt-inheritance)Did upstream prompts change? No.
bun run sync:prompts(default refdev) fails:Failed to fetch trinity.txt: 404.devno longer has the V1 prompt dir.OPENCODE_UPSTREAM_REF=v1fails withcopilot-gpt-5.txt: 404, because #59669 removed it.v1withoutcopilot-gpt-5.txt. Every file matched the vendored copy byte for byte exceptdefault.txt, which still has the known drift (548648a3d). The last commit to thev1prompt dir is stillb01498d3f(Oct 27).Method: I read the v0.8.0...v0.8.1 compare, OpenCode
devcommits since Nov 1, and npm metadata. Gates and smokes ran in a throwaway copy that has since been deleted. Nothing was pushed or committed.Written by Devin