fix(opencode): align client and plugin with 2.0.11 contracts - #728
Conversation
Upgrade the shared server/UI client and bundled plugin together while retaining connection-scoped legacy adaptation and historical pruning identities. Canonical server.info follows authenticated discovery, and older step events preserve their original creation timestamp for the current reducer. Honor hidden native Forms fields without rendering their protocol inputs or dropping defaults from replies. Reconcile unsettled tools into the bounded visible transcript after terminal execution and subsequent idle events, while preserving supersession by a newer execution. Add 2.0.11 runtime CI coverage, rendered Forms and deferred-lifecycle regressions, and an exact qualification report for dev and published history PR 723. Isolated Windows native acceptance passes on 2.0.11, 2.0.5, 2.0.3 and beta-19271; current automation, environment and forks pass. Typechecks, production build and focused regressions pass. Document the full-server parallel timing failure and successful isolated retry, plus remaining platform qualification boundaries. No shared daemon or user storage is used.
|
PR builds are available as GitHub Actions artifacts: https://github.com/NeuralNomadsAI/CodeNomad/actions/runs/35505688778 Artifacts expire in 7 days.
|
…loor Qualify only the latest stable OpenCode runtime in native CI, log the resolved version and run environment and fork checks unconditionally. Each CodeNomad release sets its minimum supported OpenCode version to the latest stable available when that CodeNomad release ships; the floor remains fixed for that release. Remove the per-version qualification report and keep one shared policy reference. Detailed evidence stays in PR and CI history. Retained compatibility code does not promise support for older runtimes. Validate workflow YAML, latest-runtime configuration, PowerShell script syntax and diff whitespace.
|
Gatekeeper pass on c338279: server/protocol/dependencies/CI review is clean (17 compatibility tests pass). Independent UI review found a reproducible P2 race in the upgraded native reducer: a deferred terminal-tool history refresh can overwrite a newer streaming assistant, causing subsequent deltas to stop updating the visible transcript. Merge is held while this is fixed and regression-tested, then reviewed again. Current native CI passes on Windows/Linux/macOS, and Tauri checks pass; the general browser suite is still running. |
The current native reducer re-reads history when execution settles with unfinished tools. A delayed response could replace its cache after a new assistant starts, leaving the visible transcript unable to apply subsequent deltas. Fence projection-owned message reads against locally applied session events, retry stale responses serially, and reject pending reads after disposal or instance-generation changes. Keep live reduction and existing bounded rotation/resync authority intact. Add a regression that defers terminal history across new assistant events, verifies continued streaming and coalesced trailing reads, and covers disposal. Register it in browser-condition CI. All 112 targeted projection/lifecycle/authority/pruning tests pass, with UI typecheck and production build passing.
|
Gatekeeper loop complete on bda7602. Independent protocol/CI/dependency review is clean. The UI review found one terminal-history streaming race, fixed in bda7602 with deferred-history and disposal regressions. Independent re-review found no remaining actionable findings and reran 36 tests successfully. Final local projection/lifecycle/authority/pruning suite: 112 passed; UI typecheck and production build passed. All test jobs on the preceding head passed. CI for the final push is still running with no failure currently reported. Proceeding with the explicitly requested admin squash merge of this exact head. File-size follow-up signals: opencode-data.ts ~715 lines and session-events.ts ~704 lines. |
Summary
Align the server/UI client and bundled plugin with published OpenCode 2.0.11. Qualification follows the latest stable OpenCode runtime. This supplies runtime qualification evidence for #696 and separately checks the published #723 history work on the target daemon.
Integration changes
server.info()through the authenticated discovery result. Keep 404-only discovery, connection fencing, restricted proxy exposure and no mutation retries.hiddenForms fields in session/provider-auth controls while preserving defaults and explicit protocol values in answers.Support policy: each CodeNomad release requires at least the latest stable OpenCode version available when that CodeNomad release is published. Record that minimum in its release notes; it remains fixed for that release. Retained compatibility code and historical acceptance results do not imply support for older runtimes. Client/plugin dependencies remain pinned together; native qualification targets latest stable.
Validation
5b988eca, unchanged client/plugin 2.0.4: native fixture passes on daemon 2.0.11, including 241-message search/count/cleanup and 1,501-message outline/window/restore checks. A combined merge still needs its own rerun.<1sassertion, observed ~1.08s under parallel load). The unchanged spawn file passes all 21 tests alone.No shared daemon or user database was used. WSL mounted-config discovery and installed Electron/Tauri release smoke checks remain outside this qualification.
Maintenance note: touched
packages/ui/src/stores/session-events.tsis approximately 704 lines; no size-only refactor is included.