diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 5aa7afeed..8bb0d084d 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -14,6 +14,8 @@ jobs: steps: - name: Checkout uses: actions/checkout@v4 + with: + submodules: recursive - name: Setup Node.js if: matrix.runtime == 'node' @@ -26,7 +28,9 @@ jobs: if: matrix.runtime == 'bun' uses: oven-sh/setup-bun@v2 with: - bun-version: "1.3.x" + # bun.sh downloads currently fail with: + # "Failed to list releases from GitHub: 401" -> "Unexpected HTTP response: 400" + bun-download-url: "https://github.com/oven-sh/bun/releases/latest/download/bun-linux-x64.zip" - name: Setup Node.js (tooling for bun) if: matrix.runtime == 'bun' @@ -93,6 +97,8 @@ jobs: steps: - name: Checkout uses: actions/checkout@v4 + with: + submodules: recursive - name: Select Xcode 26.1 run: | diff --git a/src/infra/restart.ts b/src/infra/restart.ts index 46c93b38b..c7b3b703d 100644 --- a/src/infra/restart.ts +++ b/src/infra/restart.ts @@ -3,6 +3,10 @@ import { spawn } from "node:child_process"; const DEFAULT_LAUNCHD_LABEL = "com.steipete.clawdis"; export function triggerClawdisRestart(): void { + if (process.platform !== "darwin") { + return; + } + const label = process.env.CLAWDIS_LAUNCHD_LABEL || DEFAULT_LAUNCHD_LABEL; const uid = typeof process.getuid === "function" ? process.getuid() : undefined; @@ -11,5 +15,8 @@ export function triggerClawdisRestart(): void { detached: true, stdio: "ignore", }); + child.on("error", () => { + // Best-effort restart; ignore failures (e.g. missing launchctl, invalid label). + }); child.unref(); }