Repository navigation
v0.63.0: Runs on OpenCode 2.1
Changed
-
OpenCode 2.1 is supported. The
@opencode/pluginpeer range moves from>=2.0.26 <2.1to>=2.0.26 <2.2. Until now a 2.1.x server refused to load plugboard, which also kept an autoupdating server on 2.0.32: the host checks its peer range before it moves. Nothing in the plugin API moved.dist/promise/index.d.ts,dist/effect/index.d.tsanddist/tui/index.d.tsare byte-identical between@opencode/plugin2.0.32 and 2.1.4, soPlugin.define, the plugin context and the TUI context are the same surface. 2.1 addsctx.session.listand an optionalnativefield on the prompt input, and neither is used here. The TUI half keeps its@opentuifloor at 0.5.17: the host hands its own OpenTUI to a plugin at runtime, and 0.5.17 is what a 2.0.x host serves.Checked live on an isolated OpenCode 2.1.4 server. The plugin reports
state: activewith theserver,tuiandrpcfeatures,/v1/modelslists 478 models, a chat request creates its session and reaches the provider (the isolated home has no valid sign-in, so the provider refused it, which is upstream of plugboard), and the/plugboardpage renders its tables and answerswwith the 7 day range. -
The devDependencies move to the new host:
@opencode/plugin2.1.4 witheffect4.0.1.npm-shrinkwrap.jsonis regenerated ascheck-packrequires, which also takes@opentelemetry/apifrom 1.9.1 to 1.10.0, a transitive ofpino. No direct runtime dependency changed.
The full story
2 commits since v0.62.1, grouped by type and oldest first. Each entry is the commit message as written.
Docs (1)
docs: state the 2.1 support, the new pin and the peer range (b1b599d)
The supported-version line, the dev pin and the peer range in docs/architecture.md, docs/development.md, docs/packaging.md and AGENTS.md named 2.0.26 to 2.0.32 and >=2.0.26 <2.1. They now name the range the code declares.
architecture.md also said ctx.session has no list. That was true of 2.0.x and is not true of 2.1, so the sentence says which host gained it and why the index stays: the floor is still 2.0.26, and a host without list cannot answer the question the index answers.
packaging.md's host check now names @opencode/plugin 2.1.4 and the modules read at that version (dist/host.js, dist/source.bun.js, dist/source.node.js, dist/runtime*.js), all byte-identical to 2.0.32, which is the evidence the peer claim rests on.
Validation: bun run docs:build, bun run lint and bun run format pass.
Dependencies (1)
build(deps): support opencode 2.1.4 (e911ea0)
OpenCode 2.1 shipped. Bumping the host pin moves the peer range's upper bound to <2.2, so an install on 2.1.x stops being refused, and the typecheck and the tests run against the new surface.
What changed in the host's plugin API, read from the two published packages rather than the release notes (npm pack @opencode/plugin@2.0.32 and @2.1.4, then a file-by-file diff of dist/):
- The entry points are byte-identical:
dist/promise/index.d.ts,dist/effect/index.d.tsanddist/tui/index.d.tsdo not differ, soPlugin.define, the plugin context (ctx.options,ctx.event,ctx.agent,ctx.tool,ctx.rpc,ctx.storage,ctx.location,ctx.app), the TUI plugin context and every surface plugboard uses are unchanged. SessionDomaingainslist(dist/promise/session.d.ts), and the adapter servessession.list. Additive: nothing plugboard calls moved or disappeared.- The prompt input gains an optional
nativefield, andPermission.AssertInput.sessionID's brand loses adescendinghelper (internal to the host's ID factory). Neither is reachable from plugboard: it never sendsnative, and it passes a session ID it already holds. DeepMutablemoved from a localpromise/types.tstoeffect'sTypes.DeepMutable. Same type, different home; no call site changes.- The published
peerDependenciesof@opencode/plugin@2.1.4raise@opentui/coreand@opentui/solidto>=0.6.8. The TUI half of plugboard still declares and pins 0.5.17 on purpose: the host hands its own OpenTUI to a plugin at runtime (build-tui.tskeeps literal@opentui/*specifiers, the host rewrites them),TextAttributesis unchanged between 0.5.17 and 0.6.8, and 0.5.17 is the floor that keeps a 2.0.x host working. Typechecking against the floor is the stricter of the two.
effect stays 4.0.1; @opencode/plugin@2.1.4 pins the same version.
npm-shrinkwrap.json is regenerated with the recipe in docs/packaging.md because check-pack.ts compares its root peerDependencies with package.json. It had not been regenerated since 0.23.0, so the same run also takes @opentelemetry/api 1.9.1 -> 1.10.0 (a transitive of pino/@prometheus-io/client) and updates the two version fields. No direct runtime dependency changed.
Validation: bun run typecheck (including HostContextMatches and the TUI tsconfig), bun test (3873 pass, 130 skip, 0 fail, 4003 tests), bun run lint, bun run format, bun run build:tui, check-pack.ts, smoke-pack.ts and since-next.ts --check all pass on the 2.1.4 pin. host-versions.ts now picks 2.0.26, 2.0.30 and 2.1.4 for the CI host matrix without an edit to the workflow.
Full diff: v0.62.1...v0.63.0