From f29ff40f191d95bba773c62e90ab8ccdda082d2d Mon Sep 17 00:00:00 2001 From: mini Date: Fri, 3 Jul 2026 20:58:16 -0500 Subject: [PATCH] build mac releases for both intel and apple silicon The mac dmg was previously built only on macos-13 (an Intel runner), so releases only ran natively on Intel Macs and required Rosetta 2 on Apple Silicon. cx_Freeze can only build for the host architecture, so this adds a build matrix with macos-14 (arm64) alongside macos-13 (x64), and adds ${arch} to the mac artifact name so the two dmgs don't collide. Build-tested natively on an M2 Mac (macOS 26.5): frontend, cx_Freeze backend, and electron-builder dmg all build and run natively. Co-Authored-By: Claude Fable 5 --- .github/workflows/build.yml | 9 +++++++-- package.json | 2 +- 2 files changed, 8 insertions(+), 3 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 18c3502..30ced88 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -45,7 +45,12 @@ jobs: artifacts: "dist/*-win-installer.exe,dist/*-win-portable.exe" build_mac: - runs-on: macos-13 + strategy: + matrix: + # macos-13 is an Intel (x64) runner, macos-14 is an Apple Silicon (arm64) runner. + # cx_Freeze can only build for the host architecture, so each arch needs its own runner. + os: [macos-13, macos-14] + runs-on: ${{ matrix.os }} permissions: contents: write steps: @@ -80,7 +85,7 @@ jobs: replacesArtifacts: true omitDraftDuringUpdate: true omitNameDuringUpdate: true - artifacts: "dist/*-mac.dmg" + artifacts: "dist/*-mac-*.dmg" build_linux: runs-on: ubuntu-latest diff --git a/package.json b/package.json index 94911c3..fc6ecb7 100644 --- a/package.json +++ b/package.json @@ -33,7 +33,7 @@ "mac": { "target": "dmg", "identity": null, - "artifactName": "ReticulumMeshChat-v${version}-${os}.${ext}", + "artifactName": "ReticulumMeshChat-v${version}-${os}-${arch}.${ext}", "extendInfo": { "NSMicrophoneUsageDescription": "Microphone access is only needed for Audio Calls", "com.apple.security.device.audio-input": true