Skip to content
Closed
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
2 changes: 1 addition & 1 deletion .github/workflows/build-ghosttykit.yml
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ concurrency:

jobs:
build-ghosttykit:
runs-on: ${{ vars.MACOS_RUNNER_15 || 'warp-macos-15-arm64-6x' }}
runs-on: warp-macos-15-arm64-6x
timeout-minutes: 20
env:
GHOSTTYKIT_CRASH_REPORT_SUBDIR: cmux/crash
Expand Down
4 changes: 2 additions & 2 deletions .github/workflows/ci-macos-compat.yml
Original file line number Diff line number Diff line change
Expand Up @@ -9,12 +9,12 @@ jobs:
fail-fast: false
matrix:
include:
- os: ${{ vars.MACOS_RUNNER_15 || 'warp-macos-15-arm64-6x' }}
- os: warp-macos-15-arm64-6x
timeout: 30
startup_smoke: true
virtual_display: true
skip_zig: false
- os: ${{ vars.MACOS_RUNNER_26 || 'warp-macos-26-arm64-6x' }}
- os: warp-macos-26-arm64-6x
timeout: 30
startup_smoke: true
virtual_display: false
Expand Down
24 changes: 10 additions & 14 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -253,14 +253,10 @@ jobs:
run: bun run test:db:behavior

tests:
# TEMPORARY (2026-06-18): pinned to hosted runners. The self-hosted austin
# mac-minis in the MACOS_RUNNER_15 pool cannot broker the XCTest control
# session with testmanagerd ("Timed out 120s initiating control session
# with daemon" -> Executed 0 tests -> idle-timeout), so this required check
# can never go green there. Revert to
# `${{ vars.MACOS_RUNNER_15 || 'warp-macos-15-arm64-6x' }}` once the austin
# runners are repaired (GUI login session + automation mode + unwedged
# testmanagerd). Tracked by the CI-flakiness handoff.
# macOS CI runs on paid managed runners only. The self-hosted Mac minis
# were retired (2026-06-18): with no logged-in GUI session, testmanagerd
# could not broker the XCTest control session and tests never ran there.
# All macOS jobs now use warp / depot / hosted runners.
runs-on: warp-macos-15-arm64-6x
timeout-minutes: 75
env:
Expand Down Expand Up @@ -667,7 +663,7 @@ jobs:
# Keep lag validation separate from UI regressions so functional UI failures
# and performance regressions stay isolated. Broader interactive UI suites
# still run via test-e2e.yml on GitHub-hosted runners.
runs-on: ${{ vars.MACOS_RUNNER_DISPLAY || 'warp-macos-15-arm64-6x' }}
runs-on: warp-macos-15-arm64-6x
# A cold DerivedData cache (any project.pbxproj or Package.resolved change
# mints a new cache key with no restore-keys fallback) forces a full
# cmux build whose Swift codegen alone can run 20+ min. Project/package
Expand All @@ -677,7 +673,7 @@ jobs:
steps:
- name: Validate display runner identity
env:
REQUESTED_RUNNER: ${{ vars.MACOS_RUNNER_DISPLAY || 'warp-macos-15-arm64-6x' }}
REQUESTED_RUNNER: warp-macos-15-arm64-6x
Comment thread
coderabbitai[bot] marked this conversation as resolved.
RUNNER_CONTEXT_NAME: ${{ runner.name }}
run: |
set -euo pipefail
Expand Down Expand Up @@ -992,7 +988,7 @@ jobs:
rm -f "${VDISPLAY_HELPER_PATH:-}" "${VDISPLAY_READY:-}" "${VDISPLAY_ID_PATH:-}" "${VDISPLAY_LOG:-}"

release-ghostty-cli-helper:
runs-on: ${{ vars.MACOS_RUNNER_15 || 'warp-macos-15-arm64-6x' }}
runs-on: warp-macos-15-arm64-6x
timeout-minutes: 20
steps:
- name: Clear stale git locks (self-hosted reused workspace)
Expand Down Expand Up @@ -1057,7 +1053,7 @@ jobs:
# Release builds need enough disk for a universal Release build plus the
# restored SwiftPM cache. Default to a clean paid macOS 26 runner instead
# of the generic persistent macOS 26 pool.
runs-on: ${{ vars.MACOS_RUNNER_26_RELEASE || 'warp-macos-26-arm64-6x' }}
runs-on: warp-macos-26-arm64-6x
timeout-minutes: 45
steps:
- name: Clear stale git locks (self-hosted reused workspace)
Expand Down Expand Up @@ -1190,14 +1186,14 @@ jobs:
[[ "$SDK_VERSION" == 26.* ]]

ui-regressions:
runs-on: ${{ vars.MACOS_RUNNER_DISPLAY || 'warp-macos-15-arm64-6x' }}
runs-on: warp-macos-15-arm64-6x
# Cold builds after project/package changes can spend more than 25 minutes
# in build-for-testing before the UI regression script starts.
timeout-minutes: 45
steps:
- name: Validate display runner identity
env:
REQUESTED_RUNNER: ${{ vars.MACOS_RUNNER_DISPLAY || 'warp-macos-15-arm64-6x' }}
REQUESTED_RUNNER: warp-macos-15-arm64-6x
RUNNER_CONTEXT_NAME: ${{ runner.name }}
run: |
set -euo pipefail
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/ios-testflight.yml
Original file line number Diff line number Diff line change
Expand Up @@ -104,7 +104,7 @@ jobs:
# blocks publishing arbitrary code by dispatching the workflow against a
# feature branch (the ASC secrets are only meant to ship reviewed main).
if: needs.decide.outputs.should_build == 'true' && github.ref == 'refs/heads/main'
runs-on: ${{ vars.MACOS_RUNNER_IOS || 'macos-26' }}
runs-on: macos-26
timeout-minutes: 60
env:
ASC_API_KEY_ID: ${{ secrets.ASC_API_KEY_ID }}
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/nightly.yml
Original file line number Diff line number Diff line change
Expand Up @@ -108,7 +108,7 @@ jobs:
# injected before signing, preferring a pre-26 SDK when the runner image has
# one but falling back to the selected app Xcode when the image only ships
# Xcode 26. The helper build remains required and lipo-verified below.
runs-on: ${{ vars.MACOS_RUNNER_15 || 'warp-macos-15-arm64-6x' }}
runs-on: warp-macos-15-arm64-6x
timeout-minutes: 30
steps:
- name: Clear stale git locks (self-hosted reused workspace)
Expand Down
12 changes: 6 additions & 6 deletions .github/workflows/perf-activation.yml
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ on:
required: false
default: ""
runner:
description: macOS runner (PRs use Depot for GUI activation; manual auto follows MACOS_RUNNER_15, then warp)
description: macOS runner (PRs use Depot for GUI activation; manual auto uses warp)
required: false
default: auto
type: choice
Expand Down Expand Up @@ -45,15 +45,15 @@ concurrency:

jobs:
activation-session:
runs-on: ${{ github.event_name == 'pull_request' && 'depot-macos-latest' || ((!inputs.runner || inputs.runner == 'auto') && (vars.MACOS_RUNNER_15 || 'warp-macos-15-arm64-6x') || inputs.runner) }}
runs-on: ${{ github.event_name == 'pull_request' && 'depot-macos-latest' || ((!inputs.runner || inputs.runner == 'auto') && 'warp-macos-15-arm64-6x' || inputs.runner) }}
timeout-minutes: 45
env:
PERF_TAG: perf-${{ github.run_id }}-${{ github.run_attempt }}
steps:
- name: Validate Depot runner identity
if: ${{ startsWith(github.event_name == 'pull_request' && 'depot-macos-latest' || ((!inputs.runner || inputs.runner == 'auto') && (vars.MACOS_RUNNER_15 || 'warp-macos-15-arm64-6x') || inputs.runner), 'depot-macos-') }}
if: ${{ startsWith(github.event_name == 'pull_request' && 'depot-macos-latest' || ((!inputs.runner || inputs.runner == 'auto') && 'warp-macos-15-arm64-6x' || inputs.runner), 'depot-macos-') }}
env:
REQUESTED_RUNNER: ${{ github.event_name == 'pull_request' && 'depot-macos-latest' || ((!inputs.runner || inputs.runner == 'auto') && (vars.MACOS_RUNNER_15 || 'warp-macos-15-arm64-6x') || inputs.runner) }}
REQUESTED_RUNNER: ${{ github.event_name == 'pull_request' && 'depot-macos-latest' || ((!inputs.runner || inputs.runner == 'auto') && 'warp-macos-15-arm64-6x' || inputs.runner) }}
RUNNER_CONTEXT_NAME: ${{ runner.name }}
run: |
set -euo pipefail
Expand Down Expand Up @@ -131,8 +131,8 @@ jobs:
uses: actions/cache@27d5ce7f107fe9357f9df03efb73ab90386fccae # v5.0.5
with:
path: .ci-source-packages
key: spm-${{ github.event_name == 'pull_request' && 'depot-macos-latest' || ((!inputs.runner || inputs.runner == 'auto') && (vars.MACOS_RUNNER_15 || 'warp-macos-15-arm64-6x') || inputs.runner) }}-${{ hashFiles('cmux.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved') }}
restore-keys: spm-${{ github.event_name == 'pull_request' && 'depot-macos-latest' || ((!inputs.runner || inputs.runner == 'auto') && (vars.MACOS_RUNNER_15 || 'warp-macos-15-arm64-6x') || inputs.runner) }}-
key: spm-${{ github.event_name == 'pull_request' && 'depot-macos-latest' || ((!inputs.runner || inputs.runner == 'auto') && 'warp-macos-15-arm64-6x' || inputs.runner) }}-${{ hashFiles('cmux.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved') }}
restore-keys: spm-${{ github.event_name == 'pull_request' && 'depot-macos-latest' || ((!inputs.runner || inputs.runner == 'auto') && 'warp-macos-15-arm64-6x' || inputs.runner) }}-

- name: Sanitize Swift package cache
run: python3 scripts/ci/sanitize-xcode-source-packages-cache.py .ci-source-packages
Expand Down
4 changes: 2 additions & 2 deletions .github/workflows/release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ env:

jobs:
build-ghostty-cli-helper:
runs-on: ${{ vars.MACOS_RUNNER_15 || 'warp-macos-15-arm64-6x' }}
runs-on: warp-macos-15-arm64-6x
timeout-minutes: 20
steps:
- name: Clear stale git locks (self-hosted reused workspace)
Expand Down Expand Up @@ -67,7 +67,7 @@ jobs:
# macOS 15 above because Zig 0.15.2 cannot link it on macOS 26.
# Import the Apple Developer ID intermediate chain into the build keychain
# below so signing does not depend on mutable runner login-keychain state.
runs-on: ${{ vars.MACOS_RUNNER_26 || 'warp-macos-26-arm64-6x' }}
runs-on: warp-macos-26-arm64-6x
# Notarization wait times vary on Apple's side; v0.64.14 finished at 19m16s
# and v0.64.15 attempt 1 was killed by a 20-minute budget mid-notarization.
timeout-minutes: 40
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/reload-build.yml
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,7 @@ on:
runner:
description: >-
macOS runner label to build on. Blacksmith (blacksmith-6vcpu-macos-26),
our self-hosted fleet (cmux-macos-26 / cmux-aws-macos-15), warp, or depot.
warp, or depot. Paid managed runners only; self-hosted minis retired.
required: false
default: blacksmith-6vcpu-macos-26
type: string
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/test-depot.yml
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,7 @@ on:

jobs:
tests:
runs-on: ${{ vars.MACOS_RUNNER_15 || 'warp-macos-15-arm64-6x' }}
runs-on: warp-macos-15-arm64-6x
timeout-minutes: 20
steps:
- name: Clear stale git locks (self-hosted reused workspace)
Expand Down
16 changes: 8 additions & 8 deletions .github/workflows/test-e2e.yml
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
name: E2E test with video recording
run-name: ${{ inputs.test_filter }} on ${{ (!inputs.runner || inputs.runner == 'auto') && (vars.MACOS_RUNNER_15 || 'warp-macos-15-arm64-6x') || inputs.runner }} @ ${{ inputs.ref || github.ref_name }}
run-name: ${{ inputs.test_filter }} on ${{ (!inputs.runner || inputs.runner == 'auto') && 'warp-macos-15-arm64-6x' || inputs.runner }} @ ${{ inputs.ref || github.ref_name }}

on:
workflow_dispatch:
Expand All @@ -25,7 +25,7 @@ on:
default: true
type: boolean
runner:
description: "Runner OS (auto follows the MACOS_RUNNER_15 repo variable, then warp; pick depot-macos-* for GUI activation)"
description: "Runner OS (auto uses warp; pick depot-macos-* for GUI activation)"
required: false
default: "auto"
type: choice
Expand All @@ -40,20 +40,20 @@ on:
- depot-macos-14

concurrency:
group: e2e-${{ (!inputs.runner || inputs.runner == 'auto') && (vars.MACOS_RUNNER_15 || 'warp-macos-15-arm64-6x') || inputs.runner }}-${{ inputs.ref || github.ref_name }}-${{ inputs.test_filter }}
group: e2e-${{ (!inputs.runner || inputs.runner == 'auto') && 'warp-macos-15-arm64-6x' || inputs.runner }}-${{ inputs.ref || github.ref_name }}-${{ inputs.test_filter }}
cancel-in-progress: true

jobs:
e2e:
runs-on: ${{ (!inputs.runner || inputs.runner == 'auto') && (vars.MACOS_RUNNER_15 || 'warp-macos-15-arm64-6x') || inputs.runner }}
runs-on: ${{ (!inputs.runner || inputs.runner == 'auto') && 'warp-macos-15-arm64-6x' || inputs.runner }}
timeout-minutes: ${{ fromJSON(inputs.job_timeout || '20') }}
env:
TEST_REF: ${{ inputs.ref || github.ref }}
steps:
- name: Validate Depot runner identity
if: ${{ startsWith((!inputs.runner || inputs.runner == 'auto') && (vars.MACOS_RUNNER_15 || 'warp-macos-15-arm64-6x') || inputs.runner, 'depot-macos-') }}
if: ${{ startsWith((!inputs.runner || inputs.runner == 'auto') && 'warp-macos-15-arm64-6x' || inputs.runner, 'depot-macos-') }}
env:
REQUESTED_RUNNER: ${{ (!inputs.runner || inputs.runner == 'auto') && (vars.MACOS_RUNNER_15 || 'warp-macos-15-arm64-6x') || inputs.runner }}
REQUESTED_RUNNER: ${{ (!inputs.runner || inputs.runner == 'auto') && 'warp-macos-15-arm64-6x' || inputs.runner }}
RUNNER_CONTEXT_NAME: ${{ runner.name }}
Comment thread
coderabbitai[bot] marked this conversation as resolved.
run: |
set -euo pipefail
Expand Down Expand Up @@ -248,8 +248,8 @@ jobs:
uses: actions/cache@27d5ce7f107fe9357f9df03efb73ab90386fccae # v5.0.5
with:
path: .ci-source-packages
key: spm-${{ (!inputs.runner || inputs.runner == 'auto') && (vars.MACOS_RUNNER_15 || 'warp-macos-15-arm64-6x') || inputs.runner }}-${{ hashFiles('cmux.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved') }}
restore-keys: spm-${{ (!inputs.runner || inputs.runner == 'auto') && (vars.MACOS_RUNNER_15 || 'warp-macos-15-arm64-6x') || inputs.runner }}-
key: spm-${{ (!inputs.runner || inputs.runner == 'auto') && 'warp-macos-15-arm64-6x' || inputs.runner }}-${{ hashFiles('cmux.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved') }}
restore-keys: spm-${{ (!inputs.runner || inputs.runner == 'auto') && 'warp-macos-15-arm64-6x' || inputs.runner }}-

- name: Sanitize Swift package cache
run: python3 scripts/ci/sanitize-xcode-source-packages-cache.py .ci-source-packages
Expand Down
4 changes: 2 additions & 2 deletions .github/workflows/test-ios.yml
Original file line number Diff line number Diff line change
Expand Up @@ -110,7 +110,7 @@ jobs:
mobile-core-package:
needs: detect-ios-changes
if: ${{ needs.detect-ios-changes.outputs.should_run == 'true' }}
runs-on: ${{ vars.MACOS_RUNNER_IOS || 'macos-26' }}
runs-on: macos-26
timeout-minutes: 10
steps:
- name: Checkout
Expand Down Expand Up @@ -150,7 +150,7 @@ jobs:
ios-simulator:
needs: detect-ios-changes
if: ${{ needs.detect-ios-changes.outputs.should_run == 'true' }}
runs-on: ${{ vars.MACOS_RUNNER_IOS || 'macos-26' }}
runs-on: macos-26
timeout-minutes: 35
strategy:
fail-fast: false
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/tmux-corpus.yml
Original file line number Diff line number Diff line change
Expand Up @@ -61,7 +61,7 @@ jobs:

terminal-nightly:
if: github.event_name == 'schedule' || github.event_name == 'workflow_dispatch'
runs-on: ${{ vars.MACOS_RUNNER_15 || 'warp-macos-15-arm64-6x' }}
runs-on: warp-macos-15-arm64-6x
timeout-minutes: 30
env:
# XCTest app-host crashes can leave xcodebuild waiting in Swift's crash
Expand Down
Loading
Loading