You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
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)
~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.
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:
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)