Skip to content

chore(opencode): qualify and recommend runtime 2.1.3 - #1098

Merged
pascalandr merged 2 commits into
devfrom
chore/qualify-opencode-2.1.3
Oct 22, 2026
Merged

pascalandr merged 2 commits into
devfrom
chore/qualify-opencode-2.1.3

Conversation

@pascalandr

Copy link
Copy Markdown
Contributor

Summary

  • Qualify OpenCode 2.1.3 (latest stable, 22 October) with the existing locked 2.1.0 client/plugin dependencies, and recommend it.
  • Keep the technical minimum at 2.1.2: nothing CodeNomad consumes changed, so the minimum has no new reason to move.
  • A 2.1.2 daemon stays ready and gets an optional upgrade offer. 2.1.3 is the tested version. Newer and custom labels keep authenticated contract recognition.
  • The reviewed-contract fast path lists 2.1.3 beside the 2.1.2 minimum.
  • The recommended version is updated in the help (all ten locales), both READMEs, dev-docs/OPENCODE_COMPATIBILITY.md and the architecture skill.

Contract review (v2.1.2 → v2.1.3, 66 commits)

  • Authenticated OpenAPI: 119 → 121 paths, 144 → 146 operations. Every consumed operation is unchanged. The only changes:

    • added GET /api/experimental/voice/models;
    • added POST /api/experimental/voice/session/{sessionID}/instructions;
    • an optional hosted session.id in the POST /api/experimental/voice/session response.

    None of these is on the instance proxy allowlist, so they stay closed.

  • Published declarations: the client adds only voice.models / voice.instructions. The schema changes only typing (agent color decoding, Durable as a tagged union). The plugin is unchanged.

  • Windows managed services move their default port from 45278 to 28894 (#57428). CodeNomad discovers the daemon through the selected CLI's service status and the service registration, and assumes no port.

    • Live check: this machine's shared daemon was upgraded to 2.1.3 and restarted on 28894, and the running CodeNomad desktop kept working through it.
  • Core: mostly refactors, plus behaviour fixes that the native suites below exercise:

    • compaction summary output limit;
    • keepID validated as a message ID;
    • MCP media kept out of attachments;
    • only changed instruction entries resent;
    • relative-directory V1 migration;
    • legacy apply_patch permission mapped to edit.

Isolated Windows qualification

Base: dev 333d73452, rebased on 853b14f2f (#1097) for the final UI unit run; Node 24.20.0; exact official CLI 2.1.3; unchanged locked client/plugin 2.1.0.

  • Build and checks: production server/UI/native plugin builds, server and root typechecks, native bundle guard.
  • Native runtime (9/9):
    • Code Mode job ordering, plugin runtime, automation;
    • complete pruning, history, ownership, worktree and event relay;
    • loaded-only pending snapshot;
    • Missions contract, family control, native and Compare/Wayfinder trajectory.
  • Sessions (15/15): environment, fork, aside, interrupt, lifecycle, blank cleanup, prompt skills, provider usage/accounts/selection, service usage, web search, plugin packages, output limit, Promise-tool failure.
  • Recurring (5/5): all 11 recurring Mission journeys, subagent depth, 2 MiB compaction, permission receipts.
  • Migrations (9/9):
    • history from 2.0.3, beta-19271, 2.0.32, 2.1.0, 2.1.1 and 2.1.2 to 2.1.3;
    • Git degraded/init;
    • temporary workspaces.
  • Installation (3/3), with the 2.1.3 recommendation:
    • fresh install of the 2.1.2 minimum;
    • native 2.0.15 → 2.1.3 upgrade, after which the already-running daemon keeps its PID and 2.0.15 version;
    • explicit OpenCode 1.18.10 → 2.1.3 replacement.
  • After the recommendation change:
    • admission/transport/update/setup units 36/36;
    • full server 2,463 passed, 8 skipped, no failure or cancellation;
    • UI units 1,694/1,694 (with test(ui): stub toast dismissal in the pending-compaction fixture #1097);
    • focused browser 126/126;
    • native pruning with the real rendered UI;
    • the exact CI invocation of the Code Mode regression (without tsx);
    • ten-locale help checks.

The UI unit run on 333d73452 itself had two failures, in instances-pending-compaction.test.ts (toast.dismiss is not a function). They come from #1096 and also fail on unmodified dev; #1097 fixes that fixture.

This is Windows automation evidence. In CI, latest now resolves to 2.1.3: the compatibility job runs the native suites against the minimum and latest on Windows, and the migration and Git-degraded certification runs them on Ubuntu, Windows and macOS. WSL, packaged desktop, installers/updater end-to-end and real mobile devices keep their separate release gates.

OpenCode 2.1.3 is the latest stable release. Qualify it with the existing
locked 2.1.0 client/plugin pins and recommend it, keeping the technical
minimum at 2.1.2: nothing CodeNomad consumes changed, so the minimum has no
new reason to move.

Setup now recommends 2.1.3 and treats it as the tested version: a 2.1.2
daemon stays ready and gets an optional upgrade offer, while newer and
custom labels keep authenticated contract recognition. The reviewed
publication contract fast path lists 2.1.3 beside the 2.1.2 minimum. The
recommended-version help in all ten locales, both READMEs, the
compatibility document and the architecture skill state the new target.

Upstream review (v2.1.2..v2.1.3, 66 commits): the authenticated OpenAPI
keeps every consumed operation; it only adds GET
/api/experimental/voice/models and POST
/api/experimental/voice/session/{sessionID}/instructions and an optional
hosted session ID on voice sessions, all outside the instance proxy
allowlist. Windows managed services move their default port from 45278 to
28894; CodeNomad discovers the daemon through the selected CLI's status and
service registration and assumes no port. The remaining core changes are
refactors plus compaction output, MCP media, keepID validation and V1
migration fixes covered by the native suites.

Validation on Windows with the exact isolated 2.1.3 CLI and Node 24.20.0:
production build, typechecks and the native bundle guard; Code Mode job
ordering, plugin runtime, automation, complete native pruning, pending
snapshot and the four Missions suites; fifteen session, account, usage,
web search, plugin package, output-limit and Promise-tool checks; all
eleven recurring Mission journeys, subagent depth, 2 MiB compaction and
permission receipts; history migrations from 2.0.3, beta-19271, 2.0.32,
2.1.0, 2.1.1 and 2.1.2; Git degraded/init and temporary workspaces; fresh
minimum install, native 2.0.15 to 2.1.3 upgrade without restarting the
running daemon and explicit 1.x replacement. After the recommendation
change: admission/update units 36/36, the full server suite 2463 passed
with 8 skipped, UI units 1694/1694 on dev with the pending-compaction
fixture fix, focused browser tests 126/126, native pruning with the
rendered UI, the exact CI Code Mode invocation and the help checks.
…inimum

Review found CONTRIBUTING.md still describing the minimum and recommended OpenCode versions as both 2.1.2, contradicting the new 2.1.3 recommendation.
@pascalandr

Copy link
Copy Markdown
Contributor Author

Independent review: zero findings

Two review passes over the full diff.

Pass 1: no P0–P2 finding.

  • P3, fixed in 874c5b0: CONTRIBUTING.md still described the minimum and recommended versions as both 2.1.2. It now states minimum 2.1.2 and recommended 2.1.3.

Pass 2: zero findings at any level.

The review confirmed that:

  • the consumed OpenAPI contracts are unchanged, and the new experimental voice routes stay blocked by the instance proxy allowlist;
  • the stricter keepID validation and the inbox, permission/Form and MCP changes introduce no identified compatibility break;
  • the Windows service port move does not affect CodeNomad's discovery;
  • the reviewed-contract fast path keeps authenticated negotiation for unlisted versions;
  • all ten help locales keep minimum 2.1.2 and recommend 2.1.3;
  • the qualification counts in the description match the logs.

Independently rerun: admission/update tests (36/36), discovery tests (44/44) and help checks (9/9); git diff --check passes.

@pascalandr
pascalandr merged commit 01b20b5 into dev Oct 22, 2026
2 checks passed
@pascalandr
pascalandr deleted the chore/qualify-opencode-2.1.3 branch October 22, 2026 14:17
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant