Repository navigation
chore(upstream): sync v2.0.30 (775d1d0d713) - #15136
Conversation
Co-authored-by: Luke Parker <10430890+Hona@users.noreply.github.com>
…54047) Co-authored-by: Brendonovich <14191578+Brendonovich@users.noreply.github.com>
Co-authored-by: rekram1-node <rekram1-node@users.noreply.github.com>
…uest body (#54694)
Co-authored-by: uyencss <uyencss@users.noreply.github.com> Co-authored-by: Aiden Cline <aidenpcline@gmail.com>
Co-authored-by: Emre Şafak <3928300+esafak@users.noreply.github.com>
Co-authored-by: rekram1-node <rekram1-node@users.noreply.github.com>
Co-authored-by: thdxr <826656+thdxr@users.noreply.github.com> Co-authored-by: malarahfelipe <29868402+malarahfelipe@users.noreply.github.com>
# Conflicts: # .github/workflows/publish.yml # bun.lock
|
Review the following changes in direct dependencies. Learn more about Socket for GitHub.
|
Code Review SummaryStatus: 5 Issues Found | Recommendation: Address before merge OverviewIncremental review of
Issue Details (click to expand)WARNING
SUGGESTION
Files Reviewed (incremental + re-verified)
Fix these issues in Kilo Cloud Previous Review Summaries (2 snapshots, latest commit ad7cd99)Current summary above is authoritative. Previous snapshots are kept for context only. Previous review (commit ad7cd99)Status: 5 Issues Found | Recommendation: Address before merge OverviewIncremental review of
Issue Details (click to expand)WARNING
SUGGESTION
Files Reviewed (incremental + re-verified)
Fix these issues in Kilo Cloud Previous review (commit 31b0c65)Status: 5 Issues Found | Recommendation: Address before merge OverviewThis is a mechanical upstream sync of
Issue Details (click to expand)WARNING
SUGGESTION
Files Reviewed (1310 files, sharded)
Reviewed by deepseek-v4.1-flash · Input: 94K · Output: 26K · Cached: 1.8M |
# Conflicts: # script/upstream/shared-patches.json
|
➖ v2 migration progress: 0.1% → 0.1% (+4 done, 0 total, 0 dropped; 12/9854 cells)
4 cells closed
|
Upstream sync of the v2 line (#15020) to OpenCode
v2.0.30. Previous sync: #15029 (v2.0.27).Merge with 'Create a merge commit'. Do not squash or rebase. A squash drops the upstream ancestry, and the next sync conflicts again. The annotation check and the shared-patch counter also find the pinned upstream release from the merge commit message.
Release
v2.0.30, tag commitf16ef9ad887(2026-10-15 19:48)775d1d0d713(parent of the tag, onupstream/dev, newestv2.x.ytag at merge time)v2.0.28(044d8b7d2e5, 2026-10-13),v2.0.29(3a69bae8459, 2026-10-14),v2.0.30(775d1d0d713, 2026-10-15)v2.0.27release commit4d9678a79d63b7876cce03chore(upstream): sync v2.0.30 (775d1d0d713)v2.0.28,v2.0.29,v2.0.30), 3.6 daysWhy three releases in one PR
The plan delta (
migration-tracking/plans/v2-plan-delta-2026-10-13.md) asks for one PR per release. This PR merges three releases on purpose, because the Kilo shared diff is small. Per release, measured against the files Kilo changed sincev2.0.27:v2.0.28packages/consoleremoval)publish.yml,bun.lock,package.json,packages/core/package.json,packages/core/test/tool-execute.test.tsv2.0.29bun.lock,package.json,packages/core/package.jsonv2.0.30bun.lock,package.json,packages/core/package.json,packages/tui/src/component/dialog-integration.tsx,turbo.jsonTogether, the three releases touch 7 Kilo-changed files, and only 2 of them conflict. Three stacked PRs would repeat the same checks, self-tests and CI three times for no extra isolation. The merge used
--allow-skip.How it was made
bun script/upstream/merge.ts --version v2.0.30 --base-branch HEAD --allow-skipon a fresh branch fromorigin/v2(f6fc61ca7d9), with Bun 1.4.2 onPATH. The tool merged with--no-ff --no-commit, ranscript/check-workflows.ts --fix, resolved the lock file, regeneratedbun.lockwith Bun 1.4.2, reported 2 unexpected workflows and stopped.Conflicts and resolutions
.github/workflows/publish.ymlremoved). Done by the toolbun.lock@kilocode/gateway-core,@kilocode/kilo-plugin), 31 added lines.bun install --frozen-lockfilereports no changes.github/workflows/deploy-changelog.yml(v2.0.28)dev, it typechecks, tests and deploys upstream'sservices/changelogto Cloudflare. Guarded bygithub.repository == 'anomalyco/opencode'. Not for Kilo. Added toremovedand deleted.github/workflows/models-snapshot.yml(v2.0.30)packages/core/src/models-dev/snapshot.txtand pushes it to upstreamdev. Guarded bygithub.repository == 'anomalyco/opencode', and it needs upstream's app secrets. Kilo models come from the Kilo Gateway. Added toremovedand deletedv2.0.29adds no new workflow. Kilo'scheck.ymltrigger and comment and itslint:changedcondition are unchanged (upstream did not changecheck.ymlin these releases). No code conflict. No upstream code was dropped.Plugin-first check: no conflict hit a Kilo code patch, so no Kilo patch was re-applied or moved.
packages/tui/src/component/dialog-integration.tsx(rung 3,chooseKiloAccountafter a Kilo login) merged cleanly, although upstream moved the dialogs ontoDialogLayout(anomalyco/opencode#55742). The Kilo hunk inconnected()is unchanged.Kilo changes kept
Kilo's diff against upstream was compared before the sync (
4d9678a79d6..origin/v2, 235 files) and after it (775d1d0d713..HEAD, 236 files), file by file on the added and removed lines. All Kilo patches are identical. The only differences are intended:deploy-changelog.ymlandmodels-snapshot.yml: now deleted (see above).script/check-workflows.ts: the two workflows added toremoved.packages/core/test/tool-execute.test.tsandscript/upstream/shared-patches.json: skip removed, baseline lowered (see Tests).publish.yml: still deleted. Only the upstream content that Kilo deletes changed.Kilo-owned paths (
packages/kilo-*,src/kilocode/,test/kilocode/),.github/and.kilo/have no change from upstream. Upstream changed its release scripts (script/publish.ts,script/release.ts, newscript/publish-winget.ts), which no Kilo workflow calls. The newscript/native-arch.tsis imported bypackages/cli/script/build.tsandbuild-node.ts(anomalyco/opencode#54982), whichtest.ymlruns; it verifies the native binary architecture after each build, andunit (linux)andunit (windows)pass with it.Shared files touched
Kilo-patched shared files that upstream also changed:
publish.yml(kept deleted),bun.lock(generated),package.json(auto-merged, Kilo'sdevscript unchanged),packages/core/package.json(auto-merged,@kilocode/gateway-coredependency unchanged),packages/tui/src/component/dialog-integration.tsx(auto-merged, see above),turbo.json(auto-merged,@kilocode/gateway-core#testunchanged), andpackages/core/test/tool-execute.test.ts(skip removed).Shared-patch counter against
775d1d0d713: 12 shared files, 45 marked lines, 17 unmarked lines, 0 deleted shared files, 28 deleted upstream workflows (not counted). Annotation check: ok (41 shared files). Againstorigin/v2, the skip removal lowers the limits by one file and one line, and the temporary Windows guard intest.yml(see CI) adds one marked line in an already patched file. TheREADME.mdprogress-map patch came fromv2(#15138), merged into this branch in67de2f7f05e.What upstream removed
The diff deletes about 224k lines. Almost all of it is upstream's hosted backend, not CLI code:
b9ca4d21b4frefactor(console): remove legacy database from Console (anomalyco/opencode#54585)25053bbdc7ddocs: replace old Zen and Go pages with V2 console docs (anomalyco/opencode#54761)packages/web4ffede49416chore(console): remove unused translation strings (anomalyco/opencode#55093)9e687700741chore: retire session sharing backend (anomalyco/opencode#55716)packages/enterprise,infra/enterprise.ts) and thesession.shareTUI commandKilo v1 never used upstream's Console,
packages/enterpriseorpackages/web, and Kilo sharing uses Kilo's own backend (app.kilo.ai/s). The local session database (packages/core/src/database) has a one-line change and no new migration. Note for the v1 port: v1/share(TUI command,session.shareevent, share routes) has no v2 counterpart now, and needs a Kilo plugin command or a seam when it is ported.Upstream behavior that affects Kilo
/Library/Application Support/opencode,/etc/opencodeor%ProgramData%\opencode, and on macOS the MDM plistai.opencode.managed. These managed settings load last and override all other config (packages/core/src/config.ts, "Managed settings load last").packages/cli/src/server-process.tsdoes not passsystem: false. On a machine with such a directory or profile,bun dev(script/dev-isolated.ts) is no longer fully isolated, and a Kilo build applies OpenCode's managedmodel, provider andpoliciessettings. Follow-up (not in this sync PR): setConfig.Options.systemto the Kilo directories orfalsein the Kilo host. The test machine has no such directory, so the self-test is not affected.Gateway impact
Checked for the open Gateway PRs #15072 and #15116:
packages/core/src/variant.tsandpackages/core/src/models-dev.ts: no upstream change. Only the bundledmodels-dev/snapshot.txtwas refreshed (a20a614d6b9).packages/core/src/plugin/provider.ts,internal.ts,sdk.ts): no upstream change.credential.activate(feat(plugin): expose credential.activate to server plugins anomalyco/opencode#52797) andpermission.assert(feat(plugin): let plugins assert permissions anomalyco/opencode#54930). This is additive.credential.activatecan be useful for Gateway account and team switching.chunkTimeoutdefault goes from 5 to 15 minutes (fix(ai): raise default chunk timeout to fifteen minutes anomalyco/opencode#55032), newencodingsetting (feat(core): add request body encoding setting anomalyco/opencode#54932), andsupportsPromptCacheKeymoves from model to provider compatibility (fix(core): support provider-level compatibility and migrate setCacheKey anomalyco/opencode#54911). The Gateway adapter sets none of them, so Kilo Gateway streams now inherit the 15-minute chunk timeout. Set it in the Gateway adapter if Kilo wants the v1 bound.git merge-treeof this branch withgateway-account-rpc(feat(gateway): add enterprise account, modes, notifications, media, and FIM RPCs #15072) andgateway-reasoning-options(feat(gateway): resolve model variants directly from Gateway reasoning_options #15116): no conflicts.Tests
Same commands on
origin/v2(f6fc61ca7d9) and on this branch:bun run testin each package, withOPENCODE_TEST_HOMEandXDG_*in a temp directory, from detached worktrees outside the repository (local Bun 1.4.2, macOS).origin/v2The failures in both columns are local-environment failures:
Session.shelltiming (6), shell compound syntax and process substitution with the local bash (7), anddebug paths command(1).serveropens no file for HEAD and closes it when a download is aborted(test/fs.test.ts) failed once in the full run. Run alone, it passes 3 of 3 times on this branch, and on a pristine checkout of775d1d0d713it fails 1 of 3 times. Classified as an upstream flake.packages/core/test/tool-execute.test.ts"execute rejects filesystem fetches" runs again: the second commit removes the temporary skip from #15029, because upstream fixed the test in anomalyco/opencode#54699 (e5f4bf4c241, inv2.0.28). Skipped tests: 0.CI
e2e (windows)failed inRun app component tests. These are the OpenCode desktop GUI component tests (packages/app, hosted by Storybook), which Kilo does not ship and plans to remove. The cause is in v2.0.30, not in Kilo code:4ea42c47df3, fix(session-ui): render user message attachments above text and admit inline files anomalyco/opencode#54650) aliases@tanstack/solid-queryintopackages/app/node_modules, which does not exist in the hoisted install of Windows CI (--linker hoistedin.github/actions/setup-bun/action.yml). Vite fails withFailed to resolve import "@tanstack/solid-query", reproduced locally with a hoisted install.main.tsfix (17229d24f56, chore(ci): speed up and stabilize the test workflow anomalyco/opencode#55866) got past that (13 tests passed), but then the Storybook dev server crashed under Bun on Windows (write after end,ERR_STREAM_WRITE_AFTER_END). Upstream fixed Windows component tests only with a larger CI restructure in the same commit (isolated install on Windows, split component jobs), after v2.0.30.e2e (windows)job for775d1d0d713skipped all app steps.617e5d07a48): the Storybook port is reverted, and theRun app component testsstep runs on Linux only, with a markedkilocode_changeguard intest.ymland a note in itsshared-patches.jsonentry. Linux still runs all 119 app component tests, and Windows still runs the production e2e and session UI component suites. Remove the guard in the next sync, which brings17229d24f56.Flakes seen on the way (one occurrence each, no code change involved):
e2e/regression/review.spec.ts:817on Windows (Chromium native fullscreen on double click, fixed upstream in17229d24f56), ande2e/regression/timeline-history.spec.ts:72on Linux (scroll timing poll; the same app code passed on31b0c65bc3d).Verification
bun install --frozen-lockfilewith Bun 1.4.2: no lock change.bun script/check-workflows.ts: ok (3 workflows:check.yml,kilo-v2.yml,test.yml).bun script/check-opencode-annotations.ts: ok (40 shared files against775d1d0d713).bun script/check-shared-patches.ts: ok (counts above).bun typecheckinpackages/kilo-gateway-core,packages/core,packages/plugin: pass. Inpackages/tuiandpackages/kilo-plugin: pass from a worktree outside the repository (see Tooling gaps).bun run checkfrom a worktree outside the repository: pass (37 of 37 tasks).KILO_V2_PROFILEper test, signed out:env KILO_V2_PROFILE=$(mktemp -d) bun dev run --standalone --model kilo/kilo-auto/free "Reply with only the word ok.":ok, nolevel=ERRORlog lines. Pass.XDG_DATA_HOMEempty): home screen showsBuild · Auto Free Kilo Gateway. Pass.What is 2 + 2? Reply with only the number.: answered4. Pass.ctrl+x m): lists the Kilo free models (Auto Free, the Kilo(free)models)./connectsearch lists Kilo Gateway. Pass.level=ERRORlines in the CLI log. Pass.bun dev models --standaloneon this branch and onorigin/v2: identicalkilo/list (14 models) andopencode/list (12 models). Pass.chooseKiloAccountteam chooser after/connectneeds a real Kilo login, so it was not run. Its code merged without change, and typecheck passes.Tooling gaps
bun typecheckinpackages/tui,cli,serverandkilo-pluginfails from.kilo/worktrees/*withnode:zlib(zstdCompressSync) andnode:module(registerHooks) errors. The worktree sits inside the main checkout, and TypeScript resolves the main checkout's older@types/node(22.13.9). From a worktree outside the repository these errors are gone. Not caused by the sync.bun typecheckinpackages/cli(5 errors) andpackages/server(2 errors) also fails on a pristine upstream checkout of775d1d0d713.bun run check(Turbo order) passes. Not caused by the sync.merge.tsneeds--allow-skipfor a multi-release sync. This works as designed.