Skip to content

chore(sync): merge upstream v2 through v2.0.26 - #444

Merged
shuv1337 merged 14 commits into
integration-v2from
cursor/sync-upstream-v226-9fef
Oct 8, 2026
Merged

shuv1337 merged 14 commits into
integration-v2from
cursor/sync-upstream-v226-9fef

Conversation

@shuv1337

@shuv1337 shuv1337 commented Oct 8, 2026 •

Copy link
Copy Markdown
Owner

Issue for this PR

N/A. Upstream sync.

Type of change

  • Bug fix
  • New feature
  • Refactor / code improvement
  • Documentation

Upstream sync of anomalyco/opencode branch v2 into the Shuvcode fork, stacked on the unmerged v2.0.25 sync.

Base is temporary. This PR targets cursor/sync-upstream-v225-9a24 (PR #443) so it can land after that sync. Retarget the base to integration-v2 once #443 merges. Do not merge this PR, and do not enable auto-merge. #443 was not modified.

What does this PR do?

Merges anomalyco/opencode branch v2 through the v2.0.26 tip onto the v2.0.25 sync and keeps fork identity.

  • Fork base: cursor/sync-upstream-v225-9a24 at 119a26e14779f4fdac0e0f38b9503d878b3f582f (PR chore(sync): merge upstream v2 through v2.0.25 #443).
  • Previous sync stopped at 0621ea9d9fe0916b1f4fca5941d5d1932641537f (chore: update nix node_modules hashes).
  • Merged upstream sha: 8059cdcbdf17bd4b7d48e934f18275288b8eaab4 (sync release versions for v2.0.26 [skip ci]). That was upstream/v2 HEAD at merge time.
  • Merge commit: 095e69d630767f6f564b8ac498dd076210290b63 (119a26e147 + 8059cdcbdf). Regular merge. No squash, no rebase, no force-push. Branch HEAD is that merge commit.
  • CLI stays package/bin shuvcode at 2.0.26-shuv.1.
  • GitHub Actions workflows are unchanged versus the v2.0.25 branch. CI stays on the self-hosted runner.

Tag relationship:

  • Signal tag: v2.0.26 @ 9b4ec5714d481559990db0a816d5dec19541a814 (release: v2.0.26).
  • The tag is not an ancestor of upstream/v2. Merge-base of the tag and 8059cdcbdf is 5e73d5cb1f788637b1b3d5cf1298ea694cbad0c5 (parent of both).
  • Commit on the v2 tip that the tag lacks (1): 8059cdcbdf sync release versions for v2.0.26 [skip ci].
  • Commit the tag has that v2 lacks (1): 9b4ec5714d release: v2.0.26.
  • Tree difference between the tag and the v2 tip is CHANGELOG.md only (+36 lines on the v2 tip).
  • This PR merges the v2 tip, so it includes the version sync and excludes the tag's own release commit.

Upstream range 0621ea9d9f..8059cdcbdf: 13 commits, 77 files, +3631 / −335.

Conflicts (5) and resolutions:

  • .github/workflows/publish.yml: kept the fork file. Upstream added an optional release_notes input and extra publish env (AUR, desktop signing, changelog). Those workflow edits were not taken. CI stays on the self-hosted runner.
  • bun.lock: took the fork lock, then regenerated with bun install. The diff is workspace version bumps only (2.0.25 to 2.0.26, CLI 2.0.26-shuv.1). Fork plugins stay (@shuvcode/antigravity-plugin, @shuvcode/claude-plugin, @shuvcode/gpt-live-plugin, @shuvcode/quota-plugin). Frozen install: Checked 2511 installs across 2945 packages (no changes).
  • packages/cli/package.json: name and bin stay shuvcode (./bin/shuvcode.mjs). Version is 2.0.26-shuv.1.
  • packages/cli/src/services/remote-tunnel.ts: stayed on ShuvTunnel. API https://shuv.zip (SHUVTUNNEL_API), profile default under the patched shuvtunnel data dir (SHUVTUNNEL_PROFILE), subprotocol shuvtunnel via the existing @opentunnel/client and @opentunnel/protocol patches. run and hostname take the route the service config stores, and that route is still shuvcode on latest and shuvcode-<channel> otherwise. The error text stays shuvcode service set remote true.
  • packages/cli/test/remote-tunnel.test.ts: upstream deleted it; the fork test is kept. It still expects shuvcode / shuvcode-dev / shuvcode-beta and subprotocol shuvtunnel.

packages/cli/src/services/service-config.ts auto-merged anomalyco#53962's stored { route } shape. The route written on enable, and when repairing a legacy boolean, is RemoteTunnel.route() rather than 16 random hex characters. shuvcode service get prints that route; it is the public channel name, not a secret. packages/cli/test/service.test.ts expects the channel route and that turning remote off and on records the same route again.

Generated files: bun run generate in packages/client and bun script/migration.ts in packages/core reported no schema change and did not rewrite client types, OpenAPI, or the migration registry. Migration order stays fork 20261005094821_subagent-operation, then upstream 20261007190000_azure_cli_external_credential. This range added no migration.

Judgment calls:

  • Merged v2 tip 8059cdcbdf, not tag 9b4ec5714d. The tag is a sibling release commit. Same shape as chore(sync): merge upstream v2 through v2.0.25 #443.
  • Version counter restarts at 2.0.26-shuv.1 because the upstream base moved. Other workspace packages follow upstream at 2.0.26.
  • Did not adopt fix(cli): serve remote access on a random unguessable subdomain anomalyco/opencode#53962's random subdomain. Remote access stays on the named ShuvTunnel route (shuvcode / shuvcode-<channel>), not the OpenCode route and not a shared latest tunnel. The new config stores that named route so restarts keep the same URL. The hostname is still unguessable; the route label is the channel name.
  • Pairing and remote hints were already shuvcode pair / shuvcode service set remote true on this branch (CLI, web UI, desktop pairing page) and this range did not touch them. ACP login text stays "Login with Shuvcode". MCP clientInfo.name stays Global.app (shuvcode).
  • Fork resolveChannel still sanitizes slashed branch names (fix(script): normalize local build channels anomalyco/opencode#53461). This range did not touch it.
  • Root script/publish.ts and script/release.ts took upstream's changelog and highlights tooling. Fork npm publish remains packages/cli/script/publish.ts, and the fork workflow does not pass OPENCODE_RELEASE_NOTES, so writeChangelog does not run in fork CI.
  • GitHub Actions runners were not modified.

Unmerged fork branches:

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.

  • Pre-push bun run lint && bun run typecheck: oxlint Found 1519 warnings and 0 errors. Turbo typecheck 41 successful, 41 total.
  • bun install --frozen-lockfile: Checked 2511 installs across 2945 packages (no changes).

Package tests with bun test from each package directory:

  • packages/cli: test/remote-tunnel.test.ts and test/service.test.ts — 26 pass, 0 fail. The channel route is shuvcode-local in this test process, stable across off/on, and a legacy "remote": true config repairs to that route.
  • packages/core: snapshot, git, vcs, Google Vertex, and session-runner tool events — 101 pass, 0 fail.
  • packages/tui: session activity anchor, session verbosity, mini verbosity, and home footer — 27 pass, 0 fail.
  • packages/script: test/version.test.ts — 15 pass, 12 skip (jj cases), 0 fail. The slashed-branch sanitizer still passes.

Known failures recorded on #443 were not re-run here. They were: CLI react/jsx-dev-runtime when a test spawns the CLI with cwd outside packages/cli; packages/core/test/preload.test.ts (OPENCODE_TEST_HOME undefined) under raw bun test; packages/tui dialog-shell-output.test.tsx timeouts at 40 and 100 columns. #443 reproduced those on integration-v2 in that VM.

Screenshots / recordings

N/A. No fork UI layout change.

Checklist

  • I have tested my changes locally
  • I have not included unrelated changes in this PR
Open in Web Open in Cursor 

shuv1337 commented Oct 8, 2026

Copy link
Copy Markdown
Owner Author

🔍 Automated Cursor review is underway. Please hold off on merging until the review comment lands here (usually 10–20 minutes).

@cursor

cursor Bot commented Oct 8, 2026

Copy link
Copy Markdown

Review complete: no findings

@shuv1337
shuv1337 changed the base branch from cursor/sync-upstream-v225-9a24 to integration-v2 October 8, 2026 20:33
@shuv1337

shuv1337 commented Oct 8, 2026

Copy link
Copy Markdown
Owner Author

Review complete: re-review after retarget to integration-v2, no findings.

#443 merged as cc86ee7, and its tree (192d0da1fd) is identical to #443's reviewed head 119a26e. So this PR's diff against integration-v2 (14 commits, 75 files, +3620/−317, head 095e69d) is the same diff reviewed in #444 (comment). GitHub reports it mergeable and clean, and typecheck and Socket are green. Hold lifted.

@shuv1337
shuv1337 merged commit cacea1f into integration-v2 Oct 8, 2026
3 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

10 participants