8888 - os : macos-latest
8989 target : aarch64-apple-darwin
9090 artifact : macos-arm
91- - os : macos-latest
91+ - os : macos-15-intel
9292 target : x86_64-apple-darwin
9393 artifact : macos-intel
9494
@@ -129,7 +129,7 @@ jobs:
129129 # strings as present (Some("")), so we must completely omit the env var.
130130 # Instead we import the cert here and only pass APPLE_SIGNING_IDENTITY.
131131 - name : Import Apple certificate
132- if : matrix .os == 'macos-latest' || matrix.os == 'macos-15 '
132+ if : runner .os == 'macOS '
133133 id : apple-cert
134134 env :
135135 APPLE_CERTIFICATE : ${{ secrets.APPLE_CERTIFICATE }}
@@ -182,6 +182,7 @@ jobs:
182182 # Upload to the existing draft release
183183 releaseId : ${{ needs.release-please.outputs.release_id }}
184184 updaterJsonKeepUniversal : true
185+ args : --target ${{ matrix.target }}
185186
186187 # ─────────────────────────────────────────────────────────────
187188 # Publish Release: Flip draft → published after all artifacts
@@ -264,7 +265,7 @@ jobs:
264265 --repo "${{ github.repository }}"
265266
266267 # ─────────────────────────────────────────────────────────────
267- # Update Homebrew Tap: Push new version to homebrew-mcpmux
268+ # Update Homebrew Tap: Push new version to homebrew-tap
268269 # ─────────────────────────────────────────────────────────────
269270 update-homebrew :
270271 needs : [release-please, publish-release]
@@ -286,34 +287,53 @@ jobs:
286287 # Download DMGs and compute SHA256
287288 echo "Downloading macOS DMGs..."
288289 curl -fSL "${BASE_URL}/McpMux_${VERSION}_aarch64.dmg" -o arm64.dmg || { echo "ARM64 DMG not found — skipping Homebrew update"; exit 0; }
289- curl -fSL "${BASE_URL}/McpMux_${VERSION}_x64.dmg" -o x64.dmg || { echo "x64 DMG not found — skipping Homebrew update"; exit 0; }
290-
291290 SHA_ARM64=$(shasum -a 256 arm64.dmg | cut -d' ' -f1)
292- SHA_X64=$(shasum -a 256 x64.dmg | cut -d' ' -f1)
293291 echo "ARM64 SHA256: $SHA_ARM64"
294- echo "x64 SHA256: $SHA_X64"
292+
293+ # x64 DMG (built on macos-15-intel runner)
294+ HAS_X64=false
295+ if curl -fSL "${BASE_URL}/McpMux_${VERSION}_x64.dmg" -o x64.dmg 2>/dev/null; then
296+ SHA_X64=$(shasum -a 256 x64.dmg | cut -d' ' -f1)
297+ echo "x64 SHA256: $SHA_X64"
298+ HAS_X64=true
299+ else
300+ echo "x64 DMG not found — generating ARM-only cask"
301+ fi
295302
296303 # Clone the tap repo and update the cask
297- git clone https://x-access-token:${GH_TOKEN}@github.com/mcpmux/homebrew-mcpmux .git tap
304+ git clone https://x-access-token:${GH_TOKEN}@github.com/mcpmux/homebrew-tap .git tap
298305
299- # Generate cask file (Ruby heredoc content with shell variable expansion)
306+ # Generate cask file
300307 CASK_FILE="tap/Casks/mcpmux.rb"
301308 {
302309 echo 'cask "mcpmux" do'
303- echo ' arch arm: "aarch64", intel: "x64"'
310+ if [ "$HAS_X64" = true ]; then
311+ echo ' arch arm: "aarch64", intel: "x64"'
312+ fi
304313 echo ''
305314 echo " version \"${VERSION}\""
306- echo " sha256 arm: \"${SHA_ARM64}\","
307- echo " intel: \"${SHA_X64}\""
315+ if [ "$HAS_X64" = true ]; then
316+ echo " sha256 arm: \"${SHA_ARM64}\","
317+ echo " intel: \"${SHA_X64}\""
318+ else
319+ echo " sha256 \"${SHA_ARM64}\""
320+ fi
308321 echo ''
309- echo ' url "https://github.com/mcpmux/mcp-mux/releases/download/v#{version}/McpMux_#{version}_#{arch}.dmg",'
322+ if [ "$HAS_X64" = true ]; then
323+ echo ' url "https://github.com/mcpmux/mcp-mux/releases/download/v#{version}/McpMux_#{version}_#{arch}.dmg",'
324+ else
325+ echo ' url "https://github.com/mcpmux/mcp-mux/releases/download/v#{version}/McpMux_#{version}_aarch64.dmg",'
326+ fi
310327 echo ' verified: "github.com/mcpmux/mcp-mux/"'
311328 echo ''
312329 echo ' name "McpMux"'
313330 echo ' desc "Unified MCP gateway and manager for AI clients"'
314331 echo ' homepage "https://mcpmux.com"'
315332 echo ''
316333 echo ' depends_on macos: ">= :high_sierra"'
334+ if [ "$HAS_X64" != true ]; then
335+ echo ' depends_on arch: :arm64'
336+ fi
317337 echo ''
318338 echo ' livecheck do'
319339 echo ' url "https://github.com/mcpmux/mcp-mux/releases/latest"'
0 commit comments