From 5563a77a3bf7857f27721763f77ff5d6e1f018da Mon Sep 17 00:00:00 2001 From: Byron Guina Date: Sun, 15 Mar 2026 00:15:58 -0500 Subject: [PATCH 1/4] feat(ci): add scoped Swift workflow and narrow Go triggers The repository now contains both Go and Swift code, but the existing CI workflow ran on every push and pull request even when only unrelated files changed. That added noise to reviews and still left the Swift package without any dedicated GitHub Actions coverage. Add a separate Swift CI workflow that runs swift build and swift test for macos/ControlCenter when Swift package files change, and scope the existing Go CI workflow so it only runs for Go source or dependency updates. Each workflow still triggers on edits to its own YAML so CI configuration changes remain validated without reintroducing broad repo-wide runs. This change only adjusts workflow triggering and adds Swift package validation in GitHub Actions. It does not change the release workflow or application code. --- .github/workflows/ci.yaml | 10 +++++++++ .github/workflows/swift-ci.yaml | 37 +++++++++++++++++++++++++++++++++ 2 files changed, 47 insertions(+) create mode 100644 .github/workflows/swift-ci.yaml diff --git a/.github/workflows/ci.yaml b/.github/workflows/ci.yaml index ef25284..805c0e6 100644 --- a/.github/workflows/ci.yaml +++ b/.github/workflows/ci.yaml @@ -3,7 +3,17 @@ name: CI on: push: branches: [main] + paths: + - "**/*.go" + - "go.mod" + - "go.sum" + - ".github/workflows/ci.yaml" pull_request: + paths: + - "**/*.go" + - "go.mod" + - "go.sum" + - ".github/workflows/ci.yaml" jobs: build: diff --git a/.github/workflows/swift-ci.yaml b/.github/workflows/swift-ci.yaml new file mode 100644 index 0000000..33ae585 --- /dev/null +++ b/.github/workflows/swift-ci.yaml @@ -0,0 +1,37 @@ +name: Swift CI + +on: + push: + branches: [main] + paths: + - "macos/ControlCenter/**/*.swift" + - "macos/ControlCenter/Package.swift" + - "macos/ControlCenter/Package.resolved" + - ".github/workflows/swift-ci.yaml" + pull_request: + paths: + - "macos/ControlCenter/**/*.swift" + - "macos/ControlCenter/Package.swift" + - "macos/ControlCenter/Package.resolved" + - ".github/workflows/swift-ci.yaml" + +jobs: + build-and-test: + runs-on: macos-15 + steps: + - uses: actions/checkout@v4 + + - uses: swift-actions/setup-swift@v2 + with: + swift-version: "6.2" + + - name: Show Swift version + run: swift --version + + - name: Build + working-directory: macos/ControlCenter + run: swift build + + - name: Test + working-directory: macos/ControlCenter + run: swift test From e2b3644676022b8470ba5044ed9bc0365bbacffa Mon Sep 17 00:00:00 2001 From: Byron Guina Date: Sun, 15 Mar 2026 00:17:33 -0500 Subject: [PATCH 2/4] chore(ci): rename workflows by target The PR added scoped Go and Swift workflows, but their display names still reflected generic CI labels instead of the platform each workflow validates. Rename the workflow titles to Go and macOS so the Actions tab and PR checks clearly describe what each job is responsible for. This only changes workflow metadata and leaves triggers and commands unchanged. --- .github/workflows/ci.yaml | 2 +- .github/workflows/swift-ci.yaml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/ci.yaml b/.github/workflows/ci.yaml index 805c0e6..97321a8 100644 --- a/.github/workflows/ci.yaml +++ b/.github/workflows/ci.yaml @@ -1,4 +1,4 @@ -name: CI +name: Go on: push: diff --git a/.github/workflows/swift-ci.yaml b/.github/workflows/swift-ci.yaml index 33ae585..1bf04e7 100644 --- a/.github/workflows/swift-ci.yaml +++ b/.github/workflows/swift-ci.yaml @@ -1,4 +1,4 @@ -name: Swift CI +name: macOS on: push: From bdfe465fffd20b8a13c95896999a7ace317cf004 Mon Sep 17 00:00:00 2001 From: Byron Guina Date: Sun, 15 Mar 2026 00:18:11 -0500 Subject: [PATCH 3/4] chore(ci): split macOS build and test jobs The macOS workflow previously exposed Swift validation as a single combined job, which made it harder to see whether failures came from compilation or test execution. Split the workflow into separate build and test jobs so GitHub reports them independently. The jobs intentionally remain parallel instead of chaining through needs because GitHub-hosted jobs do not share Swift build output by default, so serializing them would only slow feedback without avoiding a rebuild in the test job. --- .github/workflows/swift-ci.yaml | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/.github/workflows/swift-ci.yaml b/.github/workflows/swift-ci.yaml index 1bf04e7..5a3c8df 100644 --- a/.github/workflows/swift-ci.yaml +++ b/.github/workflows/swift-ci.yaml @@ -16,7 +16,7 @@ on: - ".github/workflows/swift-ci.yaml" jobs: - build-and-test: + build: runs-on: macos-15 steps: - uses: actions/checkout@v4 @@ -32,6 +32,18 @@ jobs: working-directory: macos/ControlCenter run: swift build + test: + runs-on: macos-15 + steps: + - uses: actions/checkout@v4 + + - uses: swift-actions/setup-swift@v2 + with: + swift-version: "6.2" + + - name: Show Swift version + run: swift --version + - name: Test working-directory: macos/ControlCenter run: swift test From b1592fbb404ae7ed98b34d9ba5251856988c6f08 Mon Sep 17 00:00:00 2001 From: Byron Guina Date: Sun, 15 Mar 2026 00:18:54 -0500 Subject: [PATCH 4/4] chore(ci): name macOS jobs explicitly The macOS workflow already split build and test into separate jobs, but GitHub Actions would display only the lowercase job ids by default. Add explicit Build and Test job names so the PR checks read clearly in the Actions tab and review UI. This is a metadata-only workflow change; triggers and commands stay the same. --- .github/workflows/swift-ci.yaml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.github/workflows/swift-ci.yaml b/.github/workflows/swift-ci.yaml index 5a3c8df..b91329f 100644 --- a/.github/workflows/swift-ci.yaml +++ b/.github/workflows/swift-ci.yaml @@ -17,6 +17,7 @@ on: jobs: build: + name: Build runs-on: macos-15 steps: - uses: actions/checkout@v4 @@ -33,6 +34,7 @@ jobs: run: swift build test: + name: Test runs-on: macos-15 steps: - uses: actions/checkout@v4