## 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.
12 KiB
OpenCode のセットアップ
CodeNomad は、実行ホストの共有 OpenCode サービスに接続します。CLI の選択、そのファイルの更新、サービスの再起動、設定の再読み込みは別の操作であり、互いの代わりにはなりません。
CLI の選択・インストール
- 設定 → OpenCode を開き、OpenCode バージョン の下にある OpenCode バイナリ カードで実行ファイルを選びます。
- 自動の項目を選択したままにすると、サーバーの PATH(古い OpenCode がある場合を除く)、次にユーザーの npm の OpenCode 2 インストールを優先します。または、バイナリを参照… を使うか、パスを入力して 追加 を選びます。
- 状態と更新を確認 を使用します。OpenCode がなければ OpenCode をインストールして起動 を選びます。先にホストとインストール範囲を確認してください。
- セットアップに 接続して続行 が表示される場合は、報告された問題を解決してから使用します。
インストールでは同梱の Node/npm を使用し、他のクライアントと共有する標準のユーザーインストールを行います。ユーザー用にインストールして PATH を設定 は、そのユーザーのターミナル設定を変更します。後で新しいターミナルを開いてください。ブラウザーは CodeNomad サーバーに接続するため、ファイルピッカーと実行ファイル選択の対象は、閲覧端末ではなくそのサーバーです。
PATH の先頭に古い OpenCode がある場合、提示される操作はそのインストール方法によって異なります。npm でインストールした OpenCode 1.x では、OpenCode {version} を OpenCode 2 に置き換える が確認を求めたうえで、その npm パッケージを削除し、同じ npm フォルダーに OpenCode 2 をインストールします。OpenCode のデータフォルダーは保持され、OpenCode 2 が 1.x の会話を自動で取り込みます。別の方法(winget、Homebrew、手動)でインストールされた古いまたは使用できない OpenCode は変更されません。CodeNomad 用に OpenCode 2 をインストール がその横のユーザー npm フォルダーに OpenCode 2 をインストールし、以後 CodeNomad はそのコピーを使用します。その古いコマンド自体がユーザー npm フォルダーにある場合(たとえば ~/.local/bin 内のリンク)や、そのフォルダーに書き込めない場合は、この操作の代わりに理由が表示されます。コマンドを移動するか名前を変更する、またはフォルダーの権限を修正してから、状態と更新を確認 を選択してください。ターミナルの opencode コマンドは、引き続き古いバージョンを起動する場合があります。明示的に選択したカスタム実行ファイルが置き換えられることはありません。
インストール済み実行ファイルと、実行中のサービスは、バージョンが異なる場合があります。別の実行ファイルを選ぶと稼働中のデーモンも置き換わったと思わず、OpenCode バージョン カードの インストール済みバージョン と 実行中のサービス を比較してください。バージョンの詳細 には最低バージョンと推奨バージョンが記載されています。インストール中や実行ファイルのロック中は、インストーラーやプロセスが解放するまで待ち、状態を確認してから再試行します。競合するインストーラーを実行しないでください。
必須、推奨、未検証のバージョン
| 分類 | 現在の要件 | 意味 |
|---|---|---|
| 最低 | OpenCode 2.1.2 | Code Mode の JavaScript ジョブの正しい実行順序と、2.1 のネイティブ再生・圧縮形式。以前のバージョンで保存した会話は、更新後も読み込めます。 |
| 推奨 | OpenCode 2.1.3 | 検証済みの対象。技術的な最低要件とは別です。 |
| 未検証 | 完全には検証していない、新しいまたはカスタムのバージョン | 未テストという理由だけで拒否せず、接続先サービスの実際の API 契約を確認します。 |
必要なセッション、権限、Form、受信箱、セッション環境の契約も利用可能である必要があります。実行ファイルのバージョンだけでは、接続先サービスの対応を証明できません。セットアップが実行中のサービスを未対応と報告した場合は、対応する CLI を選択/インストールし、準備ができたら明示的に共有サービスを再起動します。
ホスト、WSL、共有サービスの範囲
Windows で WSL の実行ファイルを選ぶと、選択したディストリビューション内で実行します。そこでインストール/更新し、そのディストリビューション内で意味のあるパスを使用してください。WSL の接続は Windows の localhost 転送に依存します。Windows CLI と WSL CLI は、交換可能な実行環境ではありません。
グローバルなサービス登録、セッション、メッセージ、データベースは OpenCode が管理します。CodeNomad は、ウィンドウやプロジェクトごとに専用の OpenCode データベースを作りません。プロジェクトタブを閉じると CodeNomad 内でそのプロジェクトが閉じられますが、セッションは OpenCode で続き、プロジェクトを開き直すと再び表示されます。CodeNomad がネイティブの Location を解放することはありません。ウィンドウ全体を閉じる、終了する、再読み込みする場合は、復元のためにプロジェクト接続が保持されます。これらの操作も、バックエンドの終了も、共有デーモンを停止しません。プロジェクトを参照してください。
更新、再起動、再読み込み
- 設定 → OpenCode で、状態と更新を確認 を選びます。
- インストール済み CLI のファイルを置き換えるには、提示された OpenCode {version} に更新 を選び、完了を待ちます。
- 実行中サービスの状態を確認します。接続中の全クライアントで選択したインストールを有効にしたい場合にのみ、共有サービスを再起動 を使用します。
- 何もインストールせずにプロセスを再起動するには、トラブルシューティング を展開し、OpenCode サービスを再起動 を選んで確認します。
| 操作 | 範囲と効果 | 安全な復旧 |
|---|---|---|
| CLI の更新 | 対応するインストール済み実行ファイルを変更します。実行中のデーモンは暗黙に再起動しません。 | 失敗後はインストール済みと稼働中の両バージョンを確認し、エラー解決後にのみ明示的に再試行します。 |
| サービスの再起動 | 共有プロセスを置き換え、接続中の全 OpenCode クライアントの作業を中断します。セッション履歴は残ります。 | 再接続し、会話とスケジュール済みミッションを確認します。再起動は自動続行ではありません。 |
| OpenCode の設定を再読み込み | プロセスは維持しますが、全クライアントの 読み込み済みのすべての Location を再構築します。保留中の権限/Form をキャンセルし、ターミナル/バックグラウンドコマンドを閉じます。進行中の作業が中断される場合があります。 | 再読み込み後にリソースと保留中の作業を再確認します。応答が失われたという理由だけで、プロンプトや変更操作を繰り返さないでください。 |
保存した設定やインストール済みプラグインがまだ利用できず、中断を許容できる場合に、明示的に OpenCode の設定を再読み込み(実行中のサービスが対応していれば トラブルシューティング の下にあります)を使用します。無害な表示更新ではありません。CodeNomad は、古い選択済み CLI を使って、新しい実行中デーモンをダウングレードしません。
セッション環境
- 設定 → 詳細設定 を開き、環境変数 を展開します。
- プロファイルの上書き値を追加、変更、削除します。各変更はすぐに保存されます。
- CodeNomad から次のプロンプト、カスタムコマンド、セッションシェルリクエストを送信すると、その会話に現在の環境が適用されます。
これは設定プロファイルの設定であり、毎回の送信前にサーバー側で適用します。会話を開く/読むだけ、または設定の保存だけではネイティブセッションは変わりません。上書きを削除すると、実行ホストから継承する値に戻り、そこにない場合は削除します。環境を適用できない場合は、古い値を使わず送信をブロックします。
環境は、そのネイティブセッションで今後起動するローカルシェルを制御します。実行済みのプロセスは自分の環境を保持します。プロバイダー、MCP/LSP サーバー、独立したターミナル、Location のみのバックグラウンドシェルは再設定 しません。キューの各プロンプトが独自の環境を記録するわけではなく、別の OpenCode クライアントが同じセッション環境を置き換える場合もあります。OpenCode 内だけで作られた子セッションが CodeNomad の送信時更新を受けるとは想定しないでください。
許可された変数は、停止中のサービスを起動するときにも渡されます。既存デーモンへの接続では、そのプロセス環境は変更しません。WSL では、Windows の PATH/HOME ではなく、Linux の実行環境と値を組み合わせます。これらの上書きを変えても、OpenCode のデータベースやサービス登録の場所は移動しません。
ネイティブ設定ファイルを編集する
- 設定 → 設定ファイル を開き、ファイル を選びます。
- 表示されたパスを確認して編集し、保存 を選びます。
- 再読み込み はファイルを読み直します。OpenCode の設定を再読み込み とは異なります。
このエディターが公開するのは、CodeNomad サーバーユーザーの .config/opencode ディレクトリにある、一覧に記載されたグローバルな opencode.json と opencode.jsonc のみです。任意のファイルのエディターやプロジェクト設定セレクターではなく、WSL/独自検出ルートのデーモンがそのファイルを読む保証もありません。表示パスで対象を確認し、ほかのルートにはデーモン自身のツールを使ってください。
保存はファイルをテキストとして書き込みます。ネイティブ設定全体の検証や OpenCode の再起動/再読み込みはしません。この画面には外部変更のマージ機能がないため、他クライアントと編集を調整してください。大幅な置き換えの前にコピーを保持します。ファイル切り替えや未保存下書きの再読み込み時には、破棄するか確認します。
設定固有の手順は、連携、プロバイダー、ミッション、OpenCode ドキュメントを参照してください。