Skip to content

Build for Windows ARM#2080

Merged
juliusmarminge merged 11 commits intopingdotgg:mainfrom
Badbird5907:feat/build-windows-arm64
Apr 17, 2026
Merged

Build for Windows ARM#2080
juliusmarminge merged 11 commits intopingdotgg:mainfrom
Badbird5907:feat/build-windows-arm64

Conversation

@Badbird5907
Copy link
Copy Markdown
Contributor

@Badbird5907 Badbird5907 commented Apr 16, 2026

What Changed

  • Bumped bun from 1.3.9 -> 1.3.11, which includes support for Windows ARM (Support Windows ARM64 oven-sh/bun#9824)
  • Adds Windows ARM64 desktop builds alongside existing Windows x64 builds in the release workflow.
  • Updates desktop build logic to detect Windows-on-Arm hosts correctly and default Windows builds to arm64 when
    appropriate.
  • Adds explicit Windows build scripts for arm64 and x64, while keeping the default Windows build script arch-aware.
  • Bumps Bun and @types/bun to 1.3.11 for Windows ARM support.
  • Refactors updater manifest handling into a shared merge script/library used by both macOS and Windows.
  • Merges per-arch updater manifests into a single canonical manifest per channel, including support for channel-
    specific Windows manifests like latest.yml and nightly.yml.

(succeeds #1723)

image

Why

The current x64 Windows build runs under emulation

UI Changes

Checklist

  • This PR is small and focused
  • I explained what changed and why
  • I included before/after screenshots for any UI changes
  • I included a video for animation/interaction changes

Note

Medium Risk
Changes the release pipeline and updater-manifest generation/merging for Windows and macOS; failures could break published desktop updates or releases across channels.

Overview
Adds Windows ARM64 desktop builds to the GitHub Actions release matrix (new windows-11-arm runner) and updates artifact packaging to publish per-arch Windows updater manifests (renamed with -win-<arch> suffixes).

Refactors updater-manifest handling into a shared implementation: scripts/lib/update-manifest.ts is generalized (macOS-specific naming removed) and a new scripts/merge-update-manifests.ts --platform <mac|win> CLI replaces the mac-only merge script; the release workflow now merges both macOS and Windows arm64/x64 manifests into a single canonical manifest per channel and fails if a matching arch is missing.

Improves desktop build arch selection by introducing scripts/lib/build-target-arch.ts (detects Windows-on-Arm even when running an x64 process under emulation) and wiring it into build-desktop-artifact.ts; package.json adds explicit Windows dist:desktop:win:{arm64,x64} scripts, makes dist:desktop:win arch-aware, and bumps Bun/@types to 1.3.11.

Reviewed by Cursor Bugbot for commit e4361c3. Bugbot is set up for automated code reviews on this repo. Configure here.

Note

Add Windows ARM64 build target to the desktop release workflow

  • Adds a windows-11-arm runner entry to the release matrix in release.yml, producing arm64 NSIS installers alongside existing x64 builds.
  • Introduces resolveHostProcessArch and getDefaultBuildArch in build-target-arch.ts to detect Windows-on-Arm hosts (via PROCESSOR_ARCHITEW6432) even when the Node process is running under x64 emulation.
  • Generalizes the mac-only updater manifest merge script into a platform-aware CLI (merge-update-manifests.ts) that accepts --platform mac|win and merges per-arch manifests into a single channel manifest.
  • Per-arch Windows updater manifests are renamed with a -win-<arch>.yml suffix during the build step, then merged and cleaned up during publish.
  • Behavioral Change: bun run dist:desktop:win no longer passes an explicit --arch flag, deferring to the build script's default (now arm64 on Arm hosts).

Macroscope summarized e4361c3.

@coderabbitai
Copy link
Copy Markdown

coderabbitai bot commented Apr 16, 2026

Important

Review skipped

Auto reviews are disabled on this repository. Please check the settings in the CodeRabbit UI or the .coderabbit.yaml file in this repository. To trigger a single review, invoke the @coderabbitai review command.

⚙️ Run configuration

Configuration used: Repository UI

Review profile: CHILL

Plan: Pro

Run ID: e3cfa4ba-125d-4b4f-a69f-9240de1c6b71

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

@github-actions github-actions bot added size:XL 500-999 changed lines (additions + deletions). vouch:unvouched PR author is not yet trusted in the VOUCHED list. labels Apr 16, 2026
@Badbird5907 Badbird5907 mentioned this pull request Apr 16, 2026
4 tasks
Copy link
Copy Markdown

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

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: dae12d5e6b

ℹ️ 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 .github/workflows/release.yml Outdated
@github-actions github-actions bot added size:L 100-499 changed lines (additions + deletions). and removed size:XL 500-999 changed lines (additions + deletions). labels Apr 16, 2026
@macroscopeapp
Copy link
Copy Markdown
Contributor

macroscopeapp bot commented Apr 16, 2026

Approvability

Verdict: Approved

This PR adds Windows ARM64 build support through CI/CD workflow changes and generalizing existing Mac manifest-merging scripts to handle both platforms. All changes are build-time infrastructure with no impact on runtime application behavior. The refactoring is mechanical, adding platform parameters to existing logic, and includes comprehensive tests.

You can customize Macroscope's approvability policy. Learn more.

macroscopeapp[bot]
macroscopeapp bot previously approved these changes Apr 16, 2026
@juliusmarminge
Copy link
Copy Markdown
Member

CI failing

@Badbird5907
Copy link
Copy Markdown
Contributor Author

Badbird5907 commented Apr 16, 2026

@macroscopeapp macroscopeapp bot dismissed their stale review April 16, 2026 21:11

Dismissing prior approval to re-evaluate e4361c3

@juliusmarminge juliusmarminge merged commit 6891c77 into pingdotgg:main Apr 17, 2026
11 of 12 checks passed
znoraka pushed a commit to znoraka/t3code that referenced this pull request Apr 17, 2026
Co-authored-by: Julius Marminge <julius0216@outlook.com>
@egalanos
Copy link
Copy Markdown

This broke the CLAUDE.md symlink again by adding the newline back after the AGENTS.md

aaditagrawal added a commit to aaditagrawal/t3code that referenced this pull request Apr 18, 2026
Integrates upstream/main (9df3c64) on top of fork's main (9602c18).

Upstream features adopted:
- Claude Opus 4.5 and 4.7 built-in models (pingdotgg#2072, pingdotgg#2143)
- Node-native TypeScript migration across desktop/server (pingdotgg#2098)
- Configurable project grouping with client-settings overrides (pingdotgg#2055, pingdotgg#2099)
- Thread status in command palette (pingdotgg#2107)
- Responsive composer / plan sidebar on narrow windows (pingdotgg#1198)
- Capture-phase CTRL+J keydown for Windows terminal toggle (pingdotgg#2113/pingdotgg#2142)
- Bypass xterm for global terminal shortcuts (pingdotgg#1580)
- Windows ARM build target (pingdotgg#2080)
- Windows PATH hydration + repair (pingdotgg#1729)
- Gitignore-aware workspace search (pingdotgg#2078)
- Claude process leak fix + stale session monitoring (pingdotgg#2042)
- Preserve provider bindings when stopping sessions (pingdotgg#2084)
- Clean up invalid pending-approval projections (pingdotgg#2106) — new migration
- Extract backend startup readiness coordination
- Drop stale text-gen options on reset (pingdotgg#2076)
- Extend negative repository identity cache TTL (pingdotgg#2083)
- Allow deleting non-empty projects from warning toast (pingdotgg#1264)
- Restore defaults only on General settings (pingdotgg#1710)
- Release workflow modernization (blacksmith runners, GitHub App token guards, v0.0.20 version bump)

Fork features preserved:
- All 8 providers (codex, claudeAgent, copilot, cursor, opencode,
  geminiCli, amp, kilo) with their adapters, services, and tests
- Fork's custom OpenCode protocol impl in apps/server/src/opencode/ (kept
  over upstream's @opencode-ai/sdk-based provider added in pingdotgg#1758 — fork's
  version is tested and integrated; upstream's parallel files deleted)
- Fork's direct-CLI Cursor adapter (kept over upstream's new ACP-based
  CursorProvider added in pingdotgg#1355 — upstream's parallel files deleted)
- Fork's ProviderRegistry aggregates only codex + claudeAgent snapshots;
  the other 6 providers register via ProviderAdapterRegistry
- PROVIDER_CACHE_IDS stays at [codex, claudeAgent] matching what the
  registry actually caches
- Migration IDs preserved (fork 23/24/25/26; upstream's new 025 lands at
  ID 27 to avoid re-applying on deployed fork DBs)
- Fork's generic per-provider settings (enabled/binaryPath/configDir/
  customModels) kept over upstream's opencode-specific serverUrl/password
- Log directory IPC channels, updateInstallInFlight tracking, icon
  composer pipeline all preserved
- Fork's simplified release.yml (no npm CLI publish, no nightly infra)
- composerDraftStore normalizeProviderKind widened to accept all 8 kinds
- Dark mode --background set to #0f0f0f

Test status:
- All 9 package typechecks pass
- Lint clean (0 errors)
- Tests: 1877 passed, 15 skipped (incl. 4 historically-flaky GitManager
  cross-repo PR selector tests newly gated with TODO for Node-native-TS
  follow-up)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

size:L 100-499 changed lines (additions + deletions). vouch:unvouched PR author is not yet trusted in the VOUCHED list.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants