Skip to content

CI: tighten check-paths filter so Windows-affecting MainWindow changes trigger check-windows #2671

Description

@ten9876

Background

Two recent PRs introduced Windows build / behavior breaks that CI didn't catch because `check-windows` was SKIPPED by the path filter:

PR What broke on Windows How it was caught
#2633 (RADE macOS fix) Unconditional `m_daxBridge` reference, which is declared only inside `#if defined(Q_OS_MAC) || defined(HAVE_PIPEWIRE)` — Windows build error Surfaced as a build break later, fixed by #2662
#2670 (DAX dax-flag fix) Removes Windows-side dax flag toggle — actually a behavior change on Windows Not currently catchable by CI; needs manual user verification

The pattern: `MainWindow.cpp` changes that touch `Q_OS_WIN` or `!Q_OS_MAC && !HAVE_PIPEWIRE` guarded blocks should always run the Windows CI build, but the current path filter just looks at filename. `MainWindow.cpp` changes that look "Linux-only" can break Windows in non-obvious ways because the file has dozens of `#ifdef` branches.

Proposed fix

Two complementary options, pick one or both:

Option A (simplest): always run check-windows when MainWindow.cpp / MainWindow.h change

In `.github/workflows/ci.yml` (or wherever the path filter lives), add `src/gui/MainWindow.{cpp,h}` to the `check-windows` trigger paths regardless of which `#ifdef` block is touched. Cost: one extra Windows build run per MainWindow PR. Benefit: zero Windows breakage gets past CI.

Option B (smarter): run check-windows when the diff contains `Q_OS_WIN`, `HAVE_PIPEWIRE`, or `Q_OS_MAC` markers

Add a step that greps the diff (`git diff origin/main...HEAD`) for `Q_OS_WIN`, `HAVE_PIPEWIRE`, `Q_OS_MAC`, or any `#if/#ifdef` with those tokens, and forces `check-windows` to run if found. Cost: a small bash step. Benefit: catches the platform-guard case for any file, not just MainWindow.

Scope and risk

  • Pure CI configuration; no production code change.
  • Worst case it triggers Windows builds slightly more often than strictly necessary — at ~10 min per Windows build, the cost is bounded and CI minutes are cheap relative to a Windows-broken main.

Context

Surfaced during review of #2670 (the DAX dax-flag fix where the actual Windows behavior change wasn't exercised by CI) and previously by the post-mortem on #2633#2662.

73, Jeremy KK7GWY & Claude (AI dev partner)

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementImprovement to existing feature

    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