Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ on:
jobs:
quality:
name: Format, Lint, Typecheck, Test, Browser Test, Build
runs-on: blacksmith-4vcpu-ubuntu-2404
runs-on: blacksmith-8vcpu-ubuntu-2404
timeout-minutes: 10
steps:
- name: Checkout
Expand Down Expand Up @@ -76,7 +76,7 @@ jobs:

release_smoke:
name: Release Smoke
runs-on: ubuntu-24.04
runs-on: blacksmith-8vcpu-ubuntu-2404
timeout-minutes: 10
steps:
- name: Checkout
Expand Down
95 changes: 48 additions & 47 deletions .github/workflows/release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,7 @@ permissions:
jobs:
preflight:
name: Preflight
runs-on: ubuntu-24.04
runs-on: blacksmith-8vcpu-ubuntu-2404
timeout-minutes: 10
outputs:
release_channel: ${{ steps.release_meta.outputs.release_channel }}
Expand Down Expand Up @@ -141,30 +141,30 @@ jobs:
matrix:
include:
- label: macOS arm64
runner: macos-14
runner: blacksmith-12vcpu-macos-26
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

macOS runner instance type may not exist

Medium Severity

The macOS arm64 build runner is set to blacksmith-12vcpu-macos-26, but Blacksmith's documented macOS runners only come in 6vCPU configurations (blacksmith-6vcpu-macos-*). If this instance type doesn't exist, the macOS arm64 build job will fail, blocking the entire release pipeline since publish_cli, release, and finalize all depend on the build job completing.

Fix in Cursor Fix in Web

Reviewed by Cursor Bugbot for commit ea67a3f. Configure here.

platform: mac
target: dmg
arch: arm64
- label: macOS x64
runner: macos-15-intel
runner: blacksmith-12vcpu-macos-26
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

macOS x64 build moved to ARM-only runner

Medium Severity

The macOS x64 build now uses the same ARM-based blacksmith-12vcpu-macos-26 runner as the arm64 build, replacing the former Intel-native macos-15-intel runner. This means x64 artifacts are now cross-compiled from ARM64. The project depends on node-pty, a native C++ module, and electron-builder has documented issues cross-compiling native modules across macOS architectures (linker errors, wrong-arch binaries). The previous config deliberately used an Intel runner for x64 builds.

Additional Locations (1)
Fix in Cursor Fix in Web

Reviewed by Cursor Bugbot for commit 35af9a9. Configure here.

platform: mac
target: dmg
arch: x64
- label: Linux x64
runner: ubuntu-24.04
runner: blacksmith-32vcpu-ubuntu-2404
platform: linux
target: AppImage
arch: x64
- label: Windows x64
runner: windows-2022
runner: blacksmith-32vcpu-windows-2025
platform: win
target: nsis
arch: x64
- label: Windows arm64
runner: windows-11-arm
platform: win
target: nsis
arch: arm64
# - label: Windows arm64
# runner: windows-11-arm
# platform: win
# target: nsis
# arch: arm64
steps:
- name: Checkout
uses: actions/checkout@v6
Expand Down Expand Up @@ -277,16 +277,17 @@ jobs:
done
fi

# Enable if Windows arm64 builds are enabled.
# Windows updater metadata is channel-specific (for example
# "latest.yml" or "nightly.yml"). Suffix each per-arch copy so the
# release job can merge matching arm64/x64 manifests back into one
# canonical manifest per channel.
if [[ "${{ matrix.platform }}" == "win" ]]; then
shopt -s nullglob
for manifest in release-publish/*.yml; do
mv "$manifest" "${manifest%.yml}-win-${{ matrix.arch }}.yml"
done
fi
# if [[ "${{ matrix.platform }}" == "win" ]]; then
# shopt -s nullglob
# for manifest in release-publish/*.yml; do
# mv "$manifest" "${manifest%.yml}-win-${{ matrix.arch }}.yml"
# done
# fi

- name: Upload build artifacts
uses: actions/upload-artifact@v7
Expand All @@ -298,7 +299,7 @@ jobs:
publish_cli:
name: Publish CLI to npm
needs: [preflight, build]
runs-on: ubuntu-24.04
runs-on: blacksmith-8vcpu-ubuntu-2404
timeout-minutes: 10
steps:
- name: Checkout
Expand Down Expand Up @@ -332,7 +333,7 @@ jobs:
release:
name: Publish GitHub Release
needs: [preflight, build, publish_cli]
runs-on: ubuntu-24.04
runs-on: blacksmith-8vcpu-ubuntu-2404
timeout-minutes: 10
steps:
- name: Checkout
Expand Down Expand Up @@ -363,34 +364,34 @@ jobs:
fi
done

- name: Merge Windows updater manifests
run: |
shopt -s nullglob
found_windows_manifest=false
for x64_manifest in release-assets/*-win-x64.yml; do
if [[ "$(basename "$x64_manifest")" == builder-debug-* ]]; then
continue
fi

arm64_manifest="${x64_manifest/-x64.yml/-arm64.yml}"
output_manifest="${x64_manifest/-win-x64.yml/.yml}"
if [[ ! -f "$arm64_manifest" ]]; then
echo "Missing matching arm64 Windows manifest for $x64_manifest" >&2
exit 1
fi

found_windows_manifest=true
node scripts/merge-update-manifests.ts --platform win \
"$arm64_manifest" \
"$x64_manifest" \
"$output_manifest"
rm -f "$arm64_manifest" "$x64_manifest"
done

if [[ "$found_windows_manifest" != true ]]; then
echo "No Windows updater manifests found to merge." >&2
exit 1
fi
# - name: Merge Windows updater manifests
# run: |
# shopt -s nullglob
# found_windows_manifest=false
# for x64_manifest in release-assets/*-win-x64.yml; do
# if [[ "$(basename "$x64_manifest")" == builder-debug-* ]]; then
# continue
# fi

# arm64_manifest="${x64_manifest/-x64.yml/-arm64.yml}"
# output_manifest="${x64_manifest/-win-x64.yml/.yml}"
# if [[ ! -f "$arm64_manifest" ]]; then
# echo "Missing matching arm64 Windows manifest for $x64_manifest" >&2
# exit 1
# fi

# found_windows_manifest=true
# node scripts/merge-update-manifests.ts --platform win \
# "$arm64_manifest" \
# "$x64_manifest" \
# "$output_manifest"
# rm -f "$arm64_manifest" "$x64_manifest"
# done

# if [[ "$found_windows_manifest" != true ]]; then
# echo "No Windows updater manifests found to merge." >&2
# exit 1
# fi

- name: Publish release
if: needs.preflight.outputs.previous_tag != ''
Expand Down Expand Up @@ -435,7 +436,7 @@ jobs:
name: Finalize release
if: needs.preflight.outputs.release_channel == 'stable'
needs: [preflight, release]
runs-on: ubuntu-24.04
runs-on: blacksmith-8vcpu-ubuntu-2404
timeout-minutes: 10
steps:
- id: app_token
Expand Down
Loading