fix(dax): don't toggle radio dax flag on Windows from slice-mode changes (#2315). Principle I.#2670
Merged
Merged
Conversation
…ges (#2315). Principle I. When the TX slice's mode changed (e.g. band-stack restore flipping DIGU back to USB on a band switch), updateDaxTxMode() sent `transmit set dax=0|1` on every platform — including Windows. On Windows, SmartSDR DAX2 owns both the radio's `dax_tx` stream and the `transmit dax` flag, and AetherSDR fighting that on every mode transition parks DAX2's TX Stream in Busy until the user re-arms it from the DAX2 window — silently breaking digital TX (FT8/FT4/etc.) even though the radio keys. Drop Windows from the setDax conditional so AetherSDR only manages the `transmit dax` flag on hosted-DAX platforms (macOS / PipeWire) where it actually owns the audio feed. On Windows, leave the flag to DAX2 — this matches SmartSDR Console's behavior. The Windows ExternalDaxRouteOnly ensureDaxTxStream call was already short-circuited by DaxTxPolicy, so this completes the coexistence story for the v0.9.5 stabilization (#2271). Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
Collaborator
|
Tested FT8 and Winlink and working perfectly on Windows with band switches on 15m, 20m, and 40m. |
ten9876
approved these changes
May 14, 2026
ten9876
left a comment
Collaborator
There was a problem hiding this comment.
Approved. Diagnosis is sound (DAX2 owns the dax flag on Windows; AetherSDR's per-slice-mode toggle parks DAX2's stream as Busy during band-stack mode transitions). Fix correctly carves Windows out of the dax-flag-toggling business. FlexLib citation verified at Radio.cs:9904 — flag is radio-wide and shared between clients.
3 tasks
ten9876
added a commit
that referenced
this pull request
May 24, 2026
## Summary - Adds `src/gui/MainWindow.cpp` and `src/gui/MainWindow.h` to the `dorny/paths-filter` `build` group so the Windows CI job runs whenever the hot file changes. - The file is densely platform-guarded (`#ifdef Q_OS_WIN`, `Q_OS_MAC`, `HAVE_PIPEWIRE`), so Linux-passing edits can still break MSVC. ## Motivation Same class of failure has bitten us repeatedly: - **#2633 → #2662** — unconditional `m_daxBridge` reference inside a macOS-only guard, caught post-release. - **#2670** — Windows behaviour change not exercised by CI. - **v26.5.3 (#3024)** — `ClientPhaseRotator.cpp` bare `M_PI` broke MSVC (needs `_USE_MATH_DEFINES`). Different file, same shape: path not on the filter → `check-windows` didn't run → broken Windows build landed and required a follow-up patch. This PR closes the gap for the highest-leverage file. Other hot platform-guarded files can be added later if their breakage rate justifies the runner time. ## Cost Most PRs continue to skip `check-windows` (the filter still excludes most source paths). Cost increase is bounded to the subset of PRs that touch MainWindow.cpp/.h, which is exactly the subset that needs the coverage. ## Test plan - [ ] CI: `check-paths` job runs and reports `build-changed=true` on this PR (because `.github/workflows/**` is itself a watched path). - [ ] CI: `check-windows` job runs and passes (no source changed, so it should be a clean cache hit). - [ ] After merge: next PR that touches `src/gui/MainWindow.cpp` triggers `check-windows` automatically. Closes #2671. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
3 tasks
ten9876
added a commit
that referenced
this pull request
May 28, 2026
## Summary Drop the \`check-paths\` allow-list job that gated \`check-windows\` and \`check-macos\` based on a hand-maintained set of files. Both cross-platform CI builds now run on every PR. ## Why The path-filter approach has been a chronic leaker. Every time a new file gained a platform-guarded branch (\`#ifdef Q_OS_WIN\`, \`#ifdef Q_OS_MAC\`, \`HAVE_PIPEWIRE\`, etc.) that wasn't on the allow-list, CI silently skipped the relevant cross-platform check and the regression surfaced at release tag time. The follow-up was always to add another path to the filter — and then the same class of issue would resurface elsewhere a few PRs later. Pattern receipts: - #796 — original \"MSVC issue slipped past CI\" lesson - #2633 → #2662 — macOS \`m_daxBridge\` reference inside macOS-only guard, missed - #2670 — Windows behavior change not exercised by CI - #2671 — added MainWindow.cpp/.h to filter after a miss - #2929 → #3052 — WASAPI mono-mic recovery landed unverified; added AudioEngine.cpp/.h - #3210 — re-added AudioEngine after a relapse - v26.5.3 — ClientPhaseRotator.cpp \`M_PI\` MSVC break slipped through - #3241 (yesterday) — CwSidetonePortAudioSink WASAPI fix; entire \`#ifdef Q_OS_WIN\` block never compiled by CI because the file wasn't on the filter ## Trade-off Cost: ~15-20 min of GitHub Actions runner time per PR (Windows + macOS in parallel, both cached aggressively — cold ~5 min, warm ~2-3 min). Benefit: a whole class of release-time regression we've been paying for repeatedly. ## Test plan - [x] YAML valid (\`python3 -c 'import yaml; yaml.safe_load(...)'\`) - [ ] Confirm \`check-windows\` and \`check-macos\` actually run on this PR (no longer marked \`skipping\`) - [ ] Both pass 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
G6PWY-Chris
pushed a commit
to G6PWY-Chris/AetherSDR
that referenced
this pull request
Jun 22, 2026
… (aethersdr#3028) ## Summary - Adds `src/gui/MainWindow.cpp` and `src/gui/MainWindow.h` to the `dorny/paths-filter` `build` group so the Windows CI job runs whenever the hot file changes. - The file is densely platform-guarded (`#ifdef Q_OS_WIN`, `Q_OS_MAC`, `HAVE_PIPEWIRE`), so Linux-passing edits can still break MSVC. ## Motivation Same class of failure has bitten us repeatedly: - **aethersdr#2633 → aethersdr#2662** — unconditional `m_daxBridge` reference inside a macOS-only guard, caught post-release. - **aethersdr#2670** — Windows behaviour change not exercised by CI. - **v26.5.3 (aethersdr#3024)** — `ClientPhaseRotator.cpp` bare `M_PI` broke MSVC (needs `_USE_MATH_DEFINES`). Different file, same shape: path not on the filter → `check-windows` didn't run → broken Windows build landed and required a follow-up patch. This PR closes the gap for the highest-leverage file. Other hot platform-guarded files can be added later if their breakage rate justifies the runner time. ## Cost Most PRs continue to skip `check-windows` (the filter still excludes most source paths). Cost increase is bounded to the subset of PRs that touch MainWindow.cpp/.h, which is exactly the subset that needs the coverage. ## Test plan - [ ] CI: `check-paths` job runs and reports `build-changed=true` on this PR (because `.github/workflows/**` is itself a watched path). - [ ] CI: `check-windows` job runs and passes (no source changed, so it should be a clean cache hit). - [ ] After merge: next PR that touches `src/gui/MainWindow.cpp` triggers `check-windows` automatically. Closes aethersdr#2671. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
G6PWY-Chris
pushed a commit
to G6PWY-Chris/AetherSDR
that referenced
this pull request
Jun 22, 2026
## Summary Drop the \`check-paths\` allow-list job that gated \`check-windows\` and \`check-macos\` based on a hand-maintained set of files. Both cross-platform CI builds now run on every PR. ## Why The path-filter approach has been a chronic leaker. Every time a new file gained a platform-guarded branch (\`#ifdef Q_OS_WIN\`, \`#ifdef Q_OS_MAC\`, \`HAVE_PIPEWIRE\`, etc.) that wasn't on the allow-list, CI silently skipped the relevant cross-platform check and the regression surfaced at release tag time. The follow-up was always to add another path to the filter — and then the same class of issue would resurface elsewhere a few PRs later. Pattern receipts: - aethersdr#796 — original \"MSVC issue slipped past CI\" lesson - aethersdr#2633 → aethersdr#2662 — macOS \`m_daxBridge\` reference inside macOS-only guard, missed - aethersdr#2670 — Windows behavior change not exercised by CI - aethersdr#2671 — added MainWindow.cpp/.h to filter after a miss - aethersdr#2929 → aethersdr#3052 — WASAPI mono-mic recovery landed unverified; added AudioEngine.cpp/.h - aethersdr#3210 — re-added AudioEngine after a relapse - v26.5.3 — ClientPhaseRotator.cpp \`M_PI\` MSVC break slipped through - aethersdr#3241 (yesterday) — CwSidetonePortAudioSink WASAPI fix; entire \`#ifdef Q_OS_WIN\` block never compiled by CI because the file wasn't on the filter ## Trade-off Cost: ~15-20 min of GitHub Actions runner time per PR (Windows + macOS in parallel, both cached aggressively — cold ~5 min, warm ~2-3 min). Benefit: a whole class of release-time regression we've been paying for repeatedly. ## Test plan - [x] YAML valid (\`python3 -c 'import yaml; yaml.safe_load(...)'\`) - [ ] Confirm \`check-windows\` and \`check-macos\` actually run on this PR (no longer marked \`skipping\`) - [ ] Both pass 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Fixes #2315
What was changed
fix(dax): don't toggle radio dax flag on Windows from slice-mode changes (#2315). Principle I.
Files modified
src/gui/MainWindow.cppGenerated by AetherClaude (automated agent for AetherSDR)