CodeNomad/dev-docs
Pascal André 01b20b5b78
Some checks are pending
Publish help / build (push) Waiting to run
Publish help / deploy (push) Blocked by required conditions
chore(opencode): qualify and recommend runtime 2.1.3 (#1098)
## 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](https://github.com/anomalyco/opencode/pull/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 #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.
2026-10-22 16:17:20 +02:00
..
architecture.md fix(opencode): keep a working connection when a periodic recheck is inconclusive (#1090) 2026-10-22 00:47:04 +02:00
BROWSER_AUTOMATION.md docs(agents): keep AGENTS.md to universal rules and agent docs to the current state (#1082) 2026-10-21 16:59:43 +02:00
BROWSER_DEVICE_EMULATION.md docs(agents): keep AGENTS.md to universal rules and agent docs to the current state (#1082) 2026-10-21 16:59:43 +02:00
CACHE_REFRESH_CONVENTIONS.md fix(transcript): keep streaming live across shared-stream reconnects (#1088) 2026-10-21 23:34:37 +02:00
COMPOSER.md docs(agents): keep AGENTS.md to universal rules and agent docs to the current state (#1082) 2026-10-21 16:59:43 +02:00
DESKTOP_DATA_PROFILES.md docs(agents): keep AGENTS.md to universal rules and agent docs to the current state (#1082) 2026-10-21 16:59:43 +02:00
FILES_PANEL.md docs(agents): keep AGENTS.md to universal rules and agent docs to the current state (#1082) 2026-10-21 16:59:43 +02:00
HOTKEYS.md fix(transcript): jump between user messages with Alt+Up/Down, also from the composer (#1087) 2026-10-21 20:36:02 +02:00
INDEX.md docs(agents): keep AGENTS.md to universal rules and agent docs to the current state (#1082) 2026-10-21 16:59:43 +02:00
MISSIONS.md docs(agents): keep AGENTS.md to universal rules and agent docs to the current state (#1082) 2026-10-21 16:59:43 +02:00
MISSIONS_AUTONOMY.md docs(agents): keep AGENTS.md to universal rules and agent docs to the current state (#1082) 2026-10-21 16:59:43 +02:00
MISSIONS_RECURRING.md docs(agents): keep AGENTS.md to universal rules and agent docs to the current state (#1082) 2026-10-21 16:59:43 +02:00
MISSIONS_RECURRING_QUALIFICATION.md docs(agents): keep AGENTS.md to universal rules and agent docs to the current state (#1082) 2026-10-21 16:59:43 +02:00
NATIVE_INTERRUPTION_UX.md docs(agents): keep AGENTS.md to universal rules and agent docs to the current state (#1082) 2026-10-21 16:59:43 +02:00
OPENCODE_COMPATIBILITY.md chore(opencode): qualify and recommend runtime 2.1.3 (#1098) 2026-10-22 16:17:20 +02:00
OPENCODE_RUNTIME_SETUP.md fix(opencode): explain why OpenCode 2 cannot be installed beside an older command (#1093) 2026-10-22 13:49:20 +02:00
PALETTE_SOURCES.md docs(agents): keep AGENTS.md to universal rules and agent docs to the current state (#1082) 2026-10-21 16:59:43 +02:00
PANEL_EXTENSIONS.md docs(agents): keep AGENTS.md to universal rules and agent docs to the current state (#1082) 2026-10-21 16:59:43 +02:00
PLUGIN_CONTROLS.md docs(agents): keep AGENTS.md to universal rules and agent docs to the current state (#1082) 2026-10-21 16:59:43 +02:00
PROJECTS.md docs(agents): keep AGENTS.md to universal rules and agent docs to the current state (#1082) 2026-10-21 16:59:43 +02:00
PROVIDER_ACCOUNTS.md docs(agents): keep AGENTS.md to universal rules and agent docs to the current state (#1082) 2026-10-21 16:59:43 +02:00
REMOTE_CONTROL.md docs(agents): keep AGENTS.md to universal rules and agent docs to the current state (#1082) 2026-10-21 16:59:43 +02:00
RUNTIME_MAINTENANCE.md docs(agents): keep AGENTS.md to universal rules and agent docs to the current state (#1082) 2026-10-21 16:59:43 +02:00
SESSION_ENVIRONMENT.md docs(agents): keep AGENTS.md to universal rules and agent docs to the current state (#1082) 2026-10-21 16:59:43 +02:00
SESSION_HISTORY_NAVIGATION.md fix(timeline): mirror every transcript block in order and keep clicks on the clicked marker (#1086) 2026-10-22 05:32:43 +02:00
SESSION_HISTORY_QUERIES.md docs(agents): keep AGENTS.md to universal rules and agent docs to the current state (#1082) 2026-10-21 16:59:43 +02:00
SESSION_PRUNING_RPC.md docs(agents): keep AGENTS.md to universal rules and agent docs to the current state (#1082) 2026-10-21 16:59:43 +02:00
SESSION_PRUNING_SAFETY.md docs(agents): keep AGENTS.md to universal rules and agent docs to the current state (#1082) 2026-10-21 16:59:43 +02:00
SESSION_RECOVERY.md docs(agents): keep AGENTS.md to universal rules and agent docs to the current state (#1082) 2026-10-21 16:59:43 +02:00
SETTINGS.md docs(agents): keep AGENTS.md to universal rules and agent docs to the current state (#1082) 2026-10-21 16:59:43 +02:00
solidjs-llms.txt update blank session cleanup code for now session store logic 2025-11-27 20:18:22 -05:00
TAURI_UPDATER.md fix(tauri): stop AppImage helpers before exit so WebKit never crashes on quit (#1091) 2026-10-22 12:36:48 +02:00
TEXT_DISPLAY_BOUNDS.md fix(timeline): mirror every transcript block in order and keep clicks on the clicked marker (#1086) 2026-10-22 05:32:43 +02:00
TRANSCRIPT.md ui: keep the message token disclosure on one row in both states (#1084) 2026-10-21 18:52:11 +02:00
UI_CONVENTIONS.md docs(agents): keep AGENTS.md to universal rules and agent docs to the current state (#1082) 2026-10-21 16:59:43 +02:00
UI_SHELL.md fix(tauri): keep the Linux native menu bar hidden without losing accelerators (#1092) 2026-10-22 13:05:51 +02:00
USER_HELP.md docs(agents): keep AGENTS.md to universal rules and agent docs to the current state (#1082) 2026-10-21 16:59:43 +02:00
WORKTREE_SESSION_PLACEMENT.md fix(worktrees): omit a checkout mid-removal instead of failing the whole inventory (#1089) 2026-10-21 22:24:01 +02:00