Skip to content

Sync fork with upstream anomalyco/opencode dev - #11

Open
dannypaz wants to merge 170 commits into
devfrom
claude/amazing-goldberg-wgzy2z
Open

Sync fork with upstream anomalyco/opencode dev#11
dannypaz wants to merge 170 commits into
devfrom
claude/amazing-goldberg-wgzy2z

Conversation

@dannypaz

Copy link
Copy Markdown
Owner

Type of change

  • Bug fix
  • New feature
  • Refactor / code improvement (merge/sync)
  • Documentation

What does this PR do?

Merges upstream anomalyco/opencode dev (168 commits ahead) into this fork's dev, while keeping every fork-specific change intact. No fork commits were reverted or altered — this is a forward merge that resolved 11 files with real textual conflicts.

Fork-specific behavior that was deliberately preserved (not upstream's version):

  • Electron auto-updater / CLI self-upgrade stays removed. Dropped upstream's new useUpdaterAction hook, the "Check for updates" settings row, UpdateAvailableToast, the titlebar update pill/TitlebarUpdate plumbing, the electron-updater dependency, and the electron-builder publish: { provider: "github", ... } auto-update config.
  • Session share feature stays removed. Dropped upstream's new viewShare/share-URL wiring in the message timeline.
  • No-network models catalog behavior is preserved (this fork never fetches models.dev/models.opencode.ai at runtime, disk cache + build snapshot only). Adopted upstream's models.opencode.ai naming purely as the on-disk cache-key string, since the cache-key comparison logic downstream of it had already been renamed upstream.
  • OPENCODE_DEBUG_NETLOG opt-in gating for Electron net logging, and the AWS Lambda cloud-session control plane, are both kept as-is.

Notable upstream changes picked up as-is (no fork opinion on these):

  • New "sidecar v2" desktop background-CLI architecture (OPENCODE_SIDECAR_V2), which now lives alongside this fork's netlog gating in packages/desktop/src/main/index.ts.
  • settings-v2/general.tsx was substantially refactored upstream into a controller-based architecture (general-controllers.tsx: createPermissionScopeController, createShellSettingsController, etc.). This fork's copy of that file predated the refactor, so the merge adopts upstream's controller architecture wholesale (only the updater row was cut back out).
  • Session rename now goes through sdk().api.session.rename instead of sdk().client.session.update.
  • AppStream .metainfo.xml packaging for the Linux deb/rpm builds.
  • Electron titlebar.tsx's Tauri-vs-Electron window distinction (electronWindows()) was dropped in favor of upstream's simpler windows() check — upstream had already fully retired Tauri-specific handling elsewhere in that file, so keeping the two-way split around electronWindows() would have referenced a helper that no longer exists.

Architectural concerns worth a maintainer's eye

  • packages/desktop/src/main/index.ts: the sidecar-v2 vs. sidecar-v1 branching now coexists with this fork's Lambda-based cloud control plane and netlog opt-in. Both merged cleanly with no textual conflict, but nobody has verified the two together at runtime (see verification note below).
  • settings-v2/general.tsx: because the fork's copy was stale relative to upstream's controller refactor, this merge is effectively "take upstream's file, delete the updater row" rather than a line-level reconciliation. Worth a sanity check that no fork-only General-tab behavior was silently dropped along the way.
  • Upstream also appears to have removed a show-notification / get-window-count IPC pair and the parseMarkdown IPC bridge entirely (not something this fork had touched) — confirmed no remaining references anywhere in the app or desktop packages, so this looks like an intentional upstream removal rather than an accidental drop, but flagging it since it's a behavior change riding in on the sync.

How did you verify your code works?

  • Resolved every conflicted file by diffing this fork's actual changes against the merge-base (not just eyeballing the conflict markers) to distinguish "fork feature, must keep" from "stale pre-refactor code, take upstream's version."
  • Searched the full merged tree for dangling references to anything removed or renamed during conflict resolution (electronWindows, Notification, updater symbols, share-feature symbols, etc.) — none found.
  • Ran a bun build --target=... --external '*' syntax check on every hand-resolved file — all pass.
  • Could not run the full bun install / typecheck / test suite in this sandbox: bun install fails fetching a GitHub-hosted dependency tarball (ghostty-web) because this environment's network policy blocks that host. A maintainer with full network access should run bun install && bun turbo typecheck before merging.

Checklist

  • I have not included unrelated changes in this PR (pure upstream sync + conflict resolution)
  • I have tested my changes locally — blocked by sandbox network restrictions, see above

Generated by Claude Code

arvsrn and others added 30 commits July 21, 2026 17:56
Co-authored-by: Luke Parker <10430890+Hona@users.noreply.github.com>
Co-authored-by: Luke Parker <10430890+Hona@users.noreply.github.com>
Co-authored-by: opencode <noreply@opencode.ai>
arvsrn and others added 27 commits July 30, 2026 17:02
Co-authored-by: Dax Raad <d@ironbay.co>
Co-authored-by: Aiden Cline <rekram1-node@users.noreply.github.com>
Co-authored-by: Brendan Allan <git@brendonovich.dev>
Pulls in ~168 upstream commits while preserving this fork's intentional
divergences:
- Self-updater / CLI auto-upgrade stays removed (dropped the new
  useUpdaterAction/UpdateAvailableToast/electron-updater UI and the
  electron-builder "publish" auto-update config upstream added).
- Session share feature stays removed (dropped the new viewShare wiring).
- No-network models catalog behavior is preserved, adopting upstream's
  models.opencode.ai naming for the on-disk cache key.
- Netlog opt-in gating and the AWS Lambda cloud session control plane are
  kept as-is alongside upstream's new sidecar v2 architecture.

Picked up from upstream: sidecar v2 desktop architecture, settings-v2
general-controllers refactor, AppStream metainfo packaging for Linux,
session rename API, and other unrelated fixes/features.
@cursor

cursor Bot commented Jul 31, 2026

Copy link
Copy Markdown

Bugbot is not enabled for your account, so this pull request was not reviewed.

Enable Bugbot in the Cursor dashboard to get automatic reviews on future PRs.

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 2b9dd1685b

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment thread packages/app/src/utils/notification-click.ts
layout-new.tsx was resolved to keep the fork's old useNavigate/setNavigate
wiring from packages/app/src/utils/notification-click.ts, but upstream
deleted that module (and all its other call sites) in an unrelated
refactor (anomalyco#39820). Fork never touched this file, so
there was nothing fork-specific to preserve here - this brings
layout-new.tsx in line with how the same pattern was already handled
correctly elsewhere in the merge (e.g. titlebar.tsx's electronWindows,
general.tsx's controller refactor).

Caught by Codex review on PR #11.
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.