diff --git a/.github/workflows/build-desktop.yml b/.github/workflows/build-desktop.yml index 38c586b81..9e557a001 100644 --- a/.github/workflows/build-desktop.yml +++ b/.github/workflows/build-desktop.yml @@ -31,8 +31,8 @@ concurrency: jobs: macos: - name: macOS arm64 desktop artifacts - runs-on: macos-15 + name: macOS arm64 + x64 desktop artifacts + runs-on: macos-15-intel timeout-minutes: 45 steps: @@ -51,8 +51,8 @@ jobs: node-version: ${{ env.NODE_VERSION }} cache: pnpm - - name: Verify arm64 runner - run: test "$(uname -m)" = "arm64" + - name: Verify Intel runner + run: test "$(uname -m)" = "x86_64" - name: Install dependencies run: pnpm install --frozen-lockfile --prefer-offline @@ -103,7 +103,7 @@ jobs: exit 1 fi - - name: Package arm64 desktop artifacts + - name: Package arm64 and x64 desktop artifacts env: CSC_LINK: ${{ secrets.MACOS_CERTIFICATE_P12 }} CSC_KEY_PASSWORD: ${{ secrets.MACOS_CERTIFICATE_PASSWORD }} @@ -166,7 +166,7 @@ jobs: - name: Upload desktop workflow artifacts uses: actions/upload-artifact@v4 with: - name: bb-desktop-macos-arm64 + name: bb-desktop-macos-arm64-x64 path: | apps/desktop/release/*.dmg apps/desktop/release/*.zip @@ -250,7 +250,7 @@ jobs: { echo "## bb desktop artifacts" echo - echo "- arm64 macOS .dmg, .zip, latest-mac.yml, and desktop-version.json uploaded as workflow artifacts" + echo "- arm64 and x64 macOS .dmg/.zip artifacts, latest-mac.yml, and desktop-version.json uploaded as workflow artifacts" echo "- version: ${VERSION}" echo "- prerelease version: ${IS_PRERELEASE}" echo "- stable release publication requested and allowed: ${SHOULD_PUBLISH}" diff --git a/.github/workflows/publish-bb-app.yml b/.github/workflows/publish-bb-app.yml index 717d9ced2..abc99b0c4 100644 --- a/.github/workflows/publish-bb-app.yml +++ b/.github/workflows/publish-bb-app.yml @@ -222,7 +222,7 @@ jobs: name: Publish bb Nightly desktop if: ${{ github.event_name == 'schedule' || (inputs.npm_tag == 'nightly' && inputs.dry_run == false) }} needs: publish - runs-on: macos-15 + runs-on: macos-15-intel timeout-minutes: 45 permissions: contents: write @@ -246,8 +246,8 @@ jobs: node-version: 22.x cache: pnpm - - name: Verify arm64 runner - run: test "$(uname -m)" = "arm64" + - name: Verify Intel runner + run: test "$(uname -m)" = "x86_64" - name: Install dependencies run: pnpm install --frozen-lockfile --prefer-offline @@ -298,7 +298,7 @@ jobs: exit 1 fi - - name: Package signed arm64 nightly desktop artifacts + - name: Package signed arm64 and x64 nightly desktop artifacts env: CSC_LINK: ${{ secrets.MACOS_CERTIFICATE_P12 }} CSC_KEY_PASSWORD: ${{ secrets.MACOS_CERTIFICATE_PASSWORD }} @@ -317,7 +317,7 @@ jobs: - name: Upload nightly desktop workflow artifacts uses: actions/upload-artifact@v4 with: - name: bb-nightly-desktop-macos-arm64-${{ steps.nightly_version.outputs.version }} + name: bb-nightly-desktop-macos-arm64-x64-${{ steps.nightly_version.outputs.version }} retention-days: 14 path: | apps/desktop/release/*.dmg diff --git a/README.md b/README.md index 81403bd1f..137e0f753 100644 --- a/README.md +++ b/README.md @@ -35,7 +35,7 @@ The recommended way to start using bb is the desktop app: **[Download the latest desktop app](https://github.com/get-bb/bb/releases/tag/desktop-latest)** -The desktop build is currently macOS Apple Silicon (arm64) only. Intel Mac and +The desktop build supports macOS on Apple Silicon (arm64) and Intel (x64). Linux users should run bb with `npx` instead. On Windows, run bb inside [WSL2 (Windows Subsystem for Linux)](https://learn.microsoft.com/windows/wsl/install): install WSL2 first, then run the same `npx` command below from your WSL2 (Linux) diff --git a/apps/desktop/README.md b/apps/desktop/README.md index 552c20e40..c2275e2c4 100644 --- a/apps/desktop/README.md +++ b/apps/desktop/README.md @@ -73,7 +73,8 @@ pnpm exec turbo run smoke:packaged --filter=@bb/desktop ``` Artifacts are written under `apps/desktop/release/`. The desktop build is -macOS-only and Apple Silicon arm64-only. Without signing secrets, local builds +macOS-only and produces separate Apple Silicon arm64 and Intel x64 artifacts. +Without signing secrets, local builds sign with a code-signing identity auto-discovered from the keychain and skip notarization. A valid signature matters even for local builds: macOS provenance-tracks unsigned apps, forcing syspolicyd to evaluate every exec in diff --git a/apps/desktop/electron-builder.config.json b/apps/desktop/electron-builder.config.json index d84d1ee08..02223ecd4 100644 --- a/apps/desktop/electron-builder.config.json +++ b/apps/desktop/electron-builder.config.json @@ -40,11 +40,11 @@ "target": [ { "target": "dmg", - "arch": ["arm64"] + "arch": ["arm64", "x64"] }, { "target": "zip", - "arch": ["arm64"] + "arch": ["arm64", "x64"] } ] }, diff --git a/apps/desktop/package.json b/apps/desktop/package.json index 9122bb2cd..20145a412 100644 --- a/apps/desktop/package.json +++ b/apps/desktop/package.json @@ -10,11 +10,11 @@ "scripts": { "build": "node scripts/build.mjs", "clean": "rimraf dist release", - "desktop:build": "pnpm run build && node scripts/run-electron-builder.mjs --mac --arm64 --publish always", + "desktop:build": "pnpm run build && node scripts/run-electron-builder.mjs --mac --publish always", "desktop:version-feed": "tsx scripts/generate-version-feed.mts", "dev": "pnpm run prepare-runtime && pnpm run build && node --conditions=source --import tsx scripts/run-electron-dev.mjs", "dist": "pnpm run prepare-runtime && pnpm run desktop:build", - "package": "pnpm run prepare-runtime && pnpm run build && node scripts/run-electron-builder.mjs --mac --dir --arm64", + "package": "pnpm run prepare-runtime && pnpm run build && node scripts/run-electron-builder.mjs --mac --dir", "prepare-runtime": "pnpm exec turbo run build --filter=bb-app --output-logs=new-only", "smoke:packaged": "node scripts/smoke-packaged-app.mjs", "start": "pnpm run package && node scripts/run-packaged-app.mjs",