Skip to content

CI: expand check-windows path filter to hot platform-guarded files #3052

Description

@ten9876

Background

PR #3028 added `src/gui/MainWindow.cpp` and `src/gui/MainWindow.h` to the dorny/paths-filter `build` group in `.github/workflows/ci.yml` so check-windows fires whenever those hot platform-guarded files change. Tonight's PR #3036 (fix #2929 — WASAPI mono-only USB mic recovery) made a Windows-only change to `src/core/AudioEngine.cpp` inside a `#ifdef Q_OS_WIN` block, and check-windows correctly skipped because AudioEngine.{cpp,h} aren't in the filter. If the change had an MSVC compile error, it would have landed on main unverified.

AudioEngine.{cpp,h} is exactly the same class of file as MainWindow.{cpp,h} that #3028 was scoped to catch:

  • Densely populated with `#ifdef Q_OS_WIN` / `Q_OS_MAC` / `Q_OS_LINUX` blocks (WASAPI, CoreAudio, ALSA/PulseAudio/PipeWire paths each gated separately)
  • Recent history of platform-conditional bug fixes (AetherSDR does not recognize input from USB microphone. #2929 is just the most recent; multiple WASAPI / CoreAudio / pw_stream issues have shipped over the v26.5.x series)
  • Linux-passing changes can break Windows in non-obvious ways

Proposed fix

Add to the existing `build` filter at `.github/workflows/ci.yml:50`:

```yaml
filters: |
build:
- 'CMakeLists.txt'
- 'third_party/'
- '.github/workflows/
'
- 'src/gui/MainWindow.cpp'
- 'src/gui/MainWindow.h'
- 'src/core/AudioEngine.cpp' # NEW
- 'src/core/AudioEngine.h' # NEW
```

Effort

~30 seconds. Single-file, two-line addition to the ci.yml `build` filter.

Eligibility

CI-config change — outside the orchestrator's `src/`/`docs/` scope per the same response pattern that bailed on #3043 and #2439's CI half. Maintainer-owned.

Forward-looking

Worth a periodic sweep of "hot platform-guarded files not in the check-windows filter" — if a third or fourth file with the same shape lands in the next few months, consider whether the filter approach is still right vs. just running check-windows on every PR (the wall-clock cost is ~7 min cached, ~14 min cold). The trade-off was originally documented in `.github/workflows/ci.yml:60-62` when #3028 was scoped.

73, Jeremy KK7GWY & Claude (AI dev partner)

Metadata

Metadata

Assignees

No one assigned

    Labels

    WindowsWindows-specific issueenhancementImprovement to existing featuregithub_actionsPull requests that update GitHub Actions code

    Type

    No type

    Fields

    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions