Repository navigation
chore(sync): merge upstream v2 through v2.0.25 - #443
Conversation
…#52859) Co-authored-by: iamdavidhill <1879069+iamdavidhill@users.noreply.github.com> Co-authored-by: LukeParkerDev <10430890+Hona@users.noreply.github.com>
Co-authored-by: Brendonovich <14191578+Brendonovich@users.noreply.github.com>
Co-authored-by: rekram1-node <rekram1-node@users.noreply.github.com> Co-authored-by: Eric Curtin <eric.curtin@docker.com>
Co-authored-by: OpenCode (GPT-5.6-Sol) <noreply@opencode.ai>
…2327) Co-authored-by: Aiden Cline <aidenpcline@gmail.com>
Co-authored-by: Brendonovich <14191578+Brendonovich@users.noreply.github.com>
Co-authored-by: Brendonovich <14191578+Brendonovich@users.noreply.github.com>
Co-authored-by: rekram1-node <63023139+rekram1-node@users.noreply.github.com>
…odel compatibility (anomalyco#52172) Co-authored-by: argszero <argszero@users.noreply.github.com> Co-authored-by: Aiden Cline <aidenpcline@gmail.com>
…malyco#53761) Co-authored-by: Brendonovich <14191578+Brendonovich@users.noreply.github.com>
…o#53667) Fixes anomalyco#53666 Co-authored-by: Ayush Thakur <51413362+Ayushlm10@users.noreply.github.com>
…es (anomalyco#53860) Co-authored-by: Brendonovich <14191578+Brendonovich@users.noreply.github.com>
…malyco#53880) Co-authored-by: Brendonovich <14191578+Brendonovich@users.noreply.github.com>
Upstream external credentials widened Credential.Value. Keep Claude subscription detection, quota key reads, and auth import on oauth and key values, and call auth login from acp --login without the removed per-command server flags.
The regenerated client exposes integration.connect.external. ACP terminal auth keeps the fork's shuvcode auth login command in its description.
|
🔍 Automated Cursor review is underway. Please hold off on merging until the review comment lands here (usually 10–20 minutes). |
|
Review the following changes in direct dependencies. Learn more about Socket for GitHub.
|
|
Review complete: Medium
Low
Checked, not a product defectThe claimed pre-existing failures match the tree:
Conflict resolutions I checked and did not find a defect in: |
Release builds claim the shuvcode route on https://shuv.zip instead of OpenCode's shared opencode route. The OpenTunnel SDK stays, patched onto the shuvtunnel subprotocol, API, and profile directory.
Pairing recovery text in the CLI, embedded web UI, and desktop pairing page names the shuvcode binary.
The auth method clients display now says Login with Shuvcode. The method id stays opencode-login.
The handshake uses the existing app name instead of the hardcoded opencode client name from the upstream sync.
Branch names with a slash become valid preview version identifiers, matching upstream anomalyco#53461, while explicit channels and detached-HEAD failure stay as they are.
|
Follow-up on the review. Five commits on this branch, no rebase:
|
|
Review complete: No High or Medium findings. Remote access on this head talks to ShuvTunnel, not OpenCode's shared tunnel. The patched Route Low: Several locales still tell the user to scan an OpenCode pairing command, because the rename only replaced the literal Low: Low: The server handshake is fixed, but other MCP client identities are still hardcoded |
Issue for this PR
N/A. Upstream sync.
Type of change
Upstream sync of anomalyco/opencode branch
v2intointegration-v2.What does this PR do?
Merges anomalyco/opencode branch v2 through the v2.0.25 tip into the Shuvcode fork and keeps fork identity.
integration-v2at66f52fe5926d(PR chore(sync): merge upstream v2 through v2.0.24 #436, the v2.0.24 sync merge).bd55d4895f(sync release versions for v2.0.24 [skip ci]).0621ea9d9fe0916b1f4fca5941d5d1932641537f(chore: update nix node_modules hashes). That wasupstream/v2HEAD at merge time.cfb02b22954ebf7e3ccae6c567a9e3e01678d599(66f52fe5926d+0621ea9d9f). Regular merge. No squash, no rebase.2c886758ba(narrow external credentials in fork auth paths),741e82685e(test expectations), and the review fixes through119a26e147. Branch HEAD is119a26e14779f4fdac0e0f38b9503d878b3f582f.shuvcodeat2.0.25-shuv.1.integration-v2. CI stays on the self-hosted runner.Tag relationship (same shape as v2.0.24):
b44eea9e204024db2b480a136ece29d790d5f593(release: v2.0.25).upstream/v2. Merge-base of the tag and0621ea9d9fis the tag parent434f7b2a3670dd932794688bee5e34029e546630.2f1a0e72afTUI link clicks (fix(tui): open clicked transcript links, including wrapped rows anomalyco/opencode#53903),da40b8fbe3opentui 0.5.16 → 0.5.17 (chore: upgrade opentui v0.5.17 anomalyco/opencode#53904),62e087ff7bv2.0.25 version sync,0621ea9d9fnix hashes.b44eea9e20release: v2.0.25.Upstream range
bd55d4895f..0621ea9d9f: 99 commits, 731 files, +21898 / −4010.That range starts with the three commits #436 stopped before (
9daf46b327anomalyco#52859,cb11287ae6anomalyco#51783,b78d10cd71anomalyco#53471) and continues through v2.0.25. Highlights from the subjects:time_updatedon step events (fix(core): bump session time_updated on step lifecycle events anomalyco/opencode#49105).opencode; this fork reportsshuvcode(1e15f94d59). Pty connect preflight order (refactor(server): align pty connect preflight order anomalyco/opencode#53579); rangedfs.read(feat(server): stream fs.read responses with HTTP Range support anomalyco/opencode#53088).Conflicts (10) and resolutions:
bun.lock: took the fork lock, then regenerated withbun install. Frozen install:Checked 2511 installs across 2945 packages (no changes). Workspace entry isshuvcode@2.0.25-shuv.1. Fork plugins stay (@shuvcode/antigravity-plugin,@shuvcode/claude-plugin,@shuvcode/gpt-live-plugin,@shuvcode/quota-plugin).bunfig.toml: union ofminimumReleaseAgeExcludes. Kept@agentclientprotocol/sdkand added upstream@kitlangton/solid-motion,@opentunnel/client,@opentunnel/protocol.minimumReleaseAgestays259200.packages/cli/package.json:nameandbinstayshuvcode(./bin/shuvcode.mjs). Version is2.0.25-shuv.1.packages/cli/script/postinstall.mjs: stays deleted (fork identity commit removed the curl/npm postinstall). Upstream's stale-binary check (fix(cli): reject stale platform binaries during install anomalyco/opencode#53845) is inpackages/cli/script/launcher.mjs. A version mismatch throwsSTALE_PLATFORM_BINARYand the launcher exits 1.packages/cli/src/commands/commands.ts: uninstall description isUninstall Shuvcode, keeping session data, configuration, and state. ACP keepsconnectionFlags: "unsupported"and gains upstream--login.packages/cli/src/commands/handlers/uninstall.ts: removes the cache only, with Shuvcode wording. Curl installer shell-profile cleanup was left out.packages/client/src/promise/generated/types.ts: regenerated withbun run generateinpackages/client.experimental.jevremains. Policy actions areprovider.use | tool.use | integration.use.integration.connecthaskeyandexternal.packages/core/src/database/migration.gen.ts: regenerated withbun script/migration.tsfrompackages/core. The generator reported no schema change and rewrote the registry. Timestamp order is fork20261005094821_subagent-operationthen upstream20261007190000_azure_cli_external_credential(data-only UPDATE).packages/core/src/integration.ts: refresh still takesrefreshLocks.withLock, andshuvcodeAuthImport === "access-only"still refuses a near-expiry imported token. Onlyoauthcredentials refresh;keyandexternalreturn the stored value.packages/script/src/index.ts: channel resolution stays the forkresolveChannel(detached HEAD, jj,GITHUB_*). Fork version helpers below that block were already unconflicted.Also regenerated, rather than hand-merged:
packages/protocol/openapi.jsonand theservices/wwwcopies (openapi.json,public/openapi.json). Regeneration added/api/integration/{integrationID}/connect/external, which upstream's committed OpenAPI had not recorded yet.public/cli.jsonwas unchanged.Judgment calls:
0621ea9d9f, not tagb44eea9e20. The tag is a sibling release commit. Includes fix(tui): open clicked transcript links, including wrapped rows anomalyco/opencode#53903 and chore: upgrade opentui v0.5.17 anomalyco/opencode#53904. Same shape as chore(sync): merge upstream v2 through v2.0.24 #436.2.0.25-shuv.1because the upstream base moved.postinstall.mjsstays deleted. No curl installer and noopencode.aiupdate path.connectionFlags: "unsupported", gains--login, and calls forklogin.defaultwithtarget,method, andansweronly. Per-commandserver/standaloneare global flags on this fork (fix(cli): accept --server and --standalone as global flags #428).jevremains, and the external connect route was added.Unmerged fork branches:
origin/native-supervisor, open PR feat(cli): add native supervisor and Herdr integration #440 (feat(cli): add native supervisor and Herdr integration). Intentionally open. Left out of this sync.cursor/*,fm/sc-*, andsc-*tips, through merged PRs fix: re-enable test and typecheck CI on integration-v2 #420–fix(app): keep session tab preview from intercepting clicks #442. Leftover diffs on those branch tips are stale againstintegration-v2, includingfm/sc-i407-toolcall-recovery(fix(core): recover confirmed subagent calls after provider stream close #437),fm/sc-i438-tab-popover(fix(app): keep session tab preview from intercepting clicks #442),fm/sc-folderswitch-quarantine(test(app): quarantine FolderSwitch tab e2e test #439, later tip superseded by fix(app): keep session tab preview from intercepting clicks #442),fm/sc-i411-watcher-flake(test(core): await native acquisition in HEAD watcher cases #433),fm/sc-i412-run-admission(fix(cli): bound run setup RPCs and report startup progress #434),cursor/stdin-epipe-listener-968d(fix: re-enable test and typecheck CI on integration-v2 #420),cursor/standalone-global-flag-1969(fix(cli): accept --server and --standalone as global flags #428),cursor/antigravity-quota-errors-c5e1(fix(antigravity): surface Google 429 quota exhaustion instead of retrying it #427),sc-permission-fixes(fix(core): cancel orphaned permission asks and auto-approve across session families #429), andcursor/pre-sync-checklist-b97e(checklist is inAGENTS.md).cursor/ci-integration-v2-61f7andfm/sc-ci-reenableworkflow diffs are stale against later fix: re-enable test and typecheck CI on integration-v2 #420 and chore(ci): run full test suite only for releases #441.origin/sync-latest-v2,origin/sync-v2-aug13,origin/sync-v2-sep,origin/integration-backup-20260915,origin/integration,origin/shuvcode-dev,origin/mobile-pairing,origin/shuvbotta/*,origin/fix-prefill,origin/reply-routing-recovery, and the olderfeat/*,fix/*,copilot/*, andopencode/issue*refs. No other open PRs. None were merged or deleted.How did you verify your code works?
Local only. This PR was not merged and auto-merge is off. Bun 1.4.2. Node 22.22.2 for
bun run check(oxlint's TypeScript plugins do not load on the image's Node 22.14).bun install --frozen-lockfile:Checked 2511 installs across 2945 packages (no changes).bun run checkon push: oxlintFound 1519 warnings and 0 errors. Turbo typecheck41 successful, 41 total.Package tests with
bun testfrom each package directory:packages/client: 233 pass, 0 fail, after expectingintegration.connectkeys["key", "external"].packages/cli: the first full run was 340 pass, 7 skip, 40 fail. 39 failures areCannot find module 'react/jsx-dev-runtime'when a test spawns the CLI with cwd outside the package directory. The same failure reproduces onintegration-v2in this VM (bun packages/cli/src/index.ts --helpfrom/tmpexits 1; frompackages/cliit exits 0). OpenTUI JSX depends onpackages/cli/bunfig.tomlpreload, which Bun applies when cwd is the package. The remaining failure waspackages/cli/test/acp/session.test.tsexpectingRun `opencode auth login`; the implementation saysshuvcode. The expectation was updated and that file passes (5 tests).packages/cli/test/launcher.test.tscovers the stale platform package and passes.packages/core: 6368 pass, 365 skip, 2 fail, 1 error under parallel load with the other suites.test/preload.test.ts(OPENCODE_TEST_HOMEundefined) fails the same way onintegration-v2with rawbun test. The RepositoryCache refresh case timed out at 15s under that load and passed in isolation (280ms).packages/tui: 1529 pass, 2 skip, 2 fail.dialog-shell-output.test.tsxshell-output cases at 40 and 100 columns time out at 5000ms. The same timeouts reproduce onintegration-v2in this VM.Review follow-up
56f082dfd3points remote access at ShuvTunnel.@opentunnel/client@0.2.0is wire-compatible (same tunnel HTTP paths and bridge frames) and matches this repo's Effect.@shuvtunnel/*is unpublished and built against an older Effect, so it is not a dependency. Bun patches set the subprotocol toshuvtunnel, the default API tohttps://shuv.zip, and the profile directory toshuvtunnel.SHUVTUNNEL_APIandSHUVTUNNEL_PROFILEoverride those. The client bridge iswss://<api>/api/tunnel/:id/connect. Routes areshuvcodefor channellatestandshuvcode-<channel>otherwise.921ba6d4d3renames pairing and remote-access command hints toshuvcodein the CLI, the embedded web UI, and the desktop pairing page.b76fda012dchanges the ACP auth method name toLogin with Shuvcode. The method id staysopencode-login.1e15f94d59reports MCPclientInfo.nameasGlobal.app(shuvcode).119a26e147ports fix(script): normalize local build channels anomalyco/opencode#53461 into forkresolveChannelso a slashed branch is a valid preview version. ExplicitOPENCODE_CHANNELand detached-HEAD failure stay.services/wwwstill documents the upstreamopencodeCLI. That site is outside fork publish.shuv.zipreturned HTTP 200. Follow-upbun run check: typecheck 41/41. Remote-tunnel, ACP session, channel, and pairing-link tests passed.Screenshots / recordings
N/A. No fork UI layout change.
Checklist