From 009aa8570db376203d7d9654e7446a73922b2c5f Mon Sep 17 00:00:00 2001 From: branchseer Date: Fri, 13 Mar 2026 10:16:45 +0800 Subject: [PATCH 1/7] ci: switch macOS CI from Namespace to GitHub-hosted runners Co-Authored-By: Claude Opus 4.6 --- .github/workflows/ci.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index b0f6aaca..ee98159a 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -51,9 +51,9 @@ jobs: target: x86_64-unknown-linux-gnu - os: windows-latest target: x86_64-pc-windows-msvc - - os: namespace-profile-mac-default + - os: macos-latest target: aarch64-apple-darwin - - os: namespace-profile-mac-default + - os: macos-latest target: x86_64-apple-darwin runs-on: ${{ matrix.os }} steps: From aff24d2d607e0b60d2d141ab72c1ebbe9df5e8f8 Mon Sep 17 00:00:00 2001 From: branchseer Date: Fri, 13 Mar 2026 10:50:48 +0800 Subject: [PATCH 2/7] ci: use oxc-project/setup-node for x86_64 macOS to install pnpm The previous setup used actions/setup-node directly which doesn't install pnpm. This was not an issue with Namespace runners which had pnpm pre-installed, but GitHub-hosted macos-latest does not. Co-Authored-By: Claude Opus 4.6 --- .github/workflows/ci.yml | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index ee98159a..a9c38716 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -93,9 +93,8 @@ jobs: # Set up node and pnpm for running tests # For x86_64-apple-darwin, use x64 node for fspy tests that verify Node.js fs accesses - - uses: actions/setup-node@395ad3262231945c25e8478fd5baf05154b1d79f # v6.1.0 + - uses: oxc-project/setup-node@fdbf0dfd334c4e6d56ceeb77d91c76339c2a0885 # v1.0.4 with: - node-version-file: .node-version architecture: x64 if: ${{ matrix.target == 'x86_64-apple-darwin' }} From b19e7211cc725cfe18c71cc58769dcb0725e0b92 Mon Sep 17 00:00:00 2001 From: branchseer Date: Fri, 13 Mar 2026 11:03:12 +0800 Subject: [PATCH 3/7] ci: use macos-13 for x86_64 target (last x86_64 GitHub-hosted runner) macos-latest is arm64, so the x86_64 fspy preload dylib cannot be injected into arm64 processes. macos-13 is a native x86_64 runner. Co-Authored-By: Claude Opus 4.6 --- .github/workflows/ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index a9c38716..8a2cbd32 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -53,7 +53,7 @@ jobs: target: x86_64-pc-windows-msvc - os: macos-latest target: aarch64-apple-darwin - - os: macos-latest + - os: macos-13 target: x86_64-apple-darwin runs-on: ${{ matrix.os }} steps: From 204f72d8c7b797eb1a2c2ed99cfed9b3ea5207c3 Mon Sep 17 00:00:00 2001 From: branchseer Date: Fri, 13 Mar 2026 11:04:36 +0800 Subject: [PATCH 4/7] ci: simplify node setup now that macos-13 is native x86_64 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit No need for architecture override or conditional steps — macos-13 defaults to x64 node. Co-Authored-By: Claude Opus 4.6 --- .github/workflows/ci.yml | 8 -------- 1 file changed, 8 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 8a2cbd32..592e7266 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -91,15 +91,7 @@ jobs: continue-on-error: true run: cargo clippy --all-targets --all-features -- -D warnings - # Set up node and pnpm for running tests - # For x86_64-apple-darwin, use x64 node for fspy tests that verify Node.js fs accesses - uses: oxc-project/setup-node@fdbf0dfd334c4e6d56ceeb77d91c76339c2a0885 # v1.0.4 - with: - architecture: x64 - if: ${{ matrix.target == 'x86_64-apple-darwin' }} - - - uses: oxc-project/setup-node@fdbf0dfd334c4e6d56ceeb77d91c76339c2a0885 # v1.0.4 - if: ${{ matrix.target != 'x86_64-apple-darwin' }} # `pnpm install` prepares test bins used in snapshot tests # Must run after setup-node so correct native binaries are installed From bc5ebf541725a39553c3352eed3c4aadc69fe049 Mon Sep 17 00:00:00 2001 From: branchseer Date: Fri, 13 Mar 2026 11:12:53 +0800 Subject: [PATCH 5/7] ci: use macos-26-intel for x86_64 target Co-Authored-By: Claude Opus 4.6 --- .github/workflows/ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 592e7266..96b42f1e 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -53,7 +53,7 @@ jobs: target: x86_64-pc-windows-msvc - os: macos-latest target: aarch64-apple-darwin - - os: macos-13 + - os: macos-26-intel target: x86_64-apple-darwin runs-on: ${{ matrix.os }} steps: From 80edbdec60ac09d2e187084f5720c881fbd9bf71 Mon Sep 17 00:00:00 2001 From: branchseer Date: Fri, 13 Mar 2026 11:35:16 +0800 Subject: [PATCH 6/7] ci: use macos-latest with Rosetta for x86_64 target Install x64 node on arm64 runner so fspy preload dylib (x86_64) can be injected into node processes running under Rosetta. Co-Authored-By: Claude Opus 4.6 --- .github/workflows/ci.yml | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 96b42f1e..980e5e8f 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -53,7 +53,7 @@ jobs: target: x86_64-pc-windows-msvc - os: macos-latest target: aarch64-apple-darwin - - os: macos-26-intel + - os: macos-latest target: x86_64-apple-darwin runs-on: ${{ matrix.os }} steps: @@ -91,7 +91,15 @@ jobs: continue-on-error: true run: cargo clippy --all-targets --all-features -- -D warnings + # For x86_64-apple-darwin on arm64 runner, install x64 node so fspy preload dylib + # (compiled for x86_64) can be injected into node processes running under Rosetta. + - uses: oxc-project/setup-node@fdbf0dfd334c4e6d56ceeb77d91c76339c2a0885 # v1.0.4 + with: + architecture: x64 + if: ${{ matrix.target == 'x86_64-apple-darwin' }} + - uses: oxc-project/setup-node@fdbf0dfd334c4e6d56ceeb77d91c76339c2a0885 # v1.0.4 + if: ${{ matrix.target != 'x86_64-apple-darwin' }} # `pnpm install` prepares test bins used in snapshot tests # Must run after setup-node so correct native binaries are installed From e67cf34378175ade413154f6da343a8341c9cb33 Mon Sep 17 00:00:00 2001 From: branchseer Date: Fri, 13 Mar 2026 11:48:23 +0800 Subject: [PATCH 7/7] ci: use actions/setup-node with x64 arch for Rosetta fspy tests oxc-project/setup-node v1.0.4 doesn't support the architecture input, so use pnpm/action-setup + actions/setup-node directly for the x86_64-apple-darwin target to install x64 node (runs under Rosetta). Co-Authored-By: Claude Opus 4.6 --- .github/workflows/ci.yml | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 980e5e8f..81014efa 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -93,8 +93,14 @@ jobs: # For x86_64-apple-darwin on arm64 runner, install x64 node so fspy preload dylib # (compiled for x86_64) can be injected into node processes running under Rosetta. - - uses: oxc-project/setup-node@fdbf0dfd334c4e6d56ceeb77d91c76339c2a0885 # v1.0.4 + # oxc-project/setup-node doesn't support the architecture input, so use + # pnpm/action-setup + actions/setup-node directly. + - uses: pnpm/action-setup@a7487c7e89a18df4991f7f222e4898a00d66ddda # v4.1.0 + if: ${{ matrix.target == 'x86_64-apple-darwin' }} + + - uses: actions/setup-node@395ad3262231945c25e8478fd5baf05154b1d79f # v6.1.0 with: + node-version-file: .node-version architecture: x64 if: ${{ matrix.target == 'x86_64-apple-darwin' }}