Skip to content

feat: native Core Audio backend (replaces svcl) + Active-only pickers + cycle shortcut - #13

Merged
Ayerdi merged 3 commits into
mainfrom
feat/native-core-audio-v2
Aug 13, 2026
Merged

feat: native Core Audio backend (replaces svcl) + Active-only pickers + cycle shortcut#13
Ayerdi merged 3 commits into
mainfrom
feat/native-core-audio-v2

Conversation

@Ayerdi

@Ayerdi Ayerdi commented Aug 13, 2026

Copy link
Copy Markdown
Owner

Summary

Replaces svcl.exe (SoundVolumeCommandLine/NirSoft) with an in-process Windows Core Audio COM backend, and improves the device pickers.

  • Core Audio backend: enumerate render endpoints with real states (Active, NotPresent, Disabled, Unplugged), read the default render endpoint, set Console/Multimedia/Communications via IPolicyConfig, and verify all three roles after each switch with one bounded retry. Failures read as Unknown (never switch on unknown).
  • No more svcl.exe: removes the NirSoft download/hash/extraction path from clean installs and deletes a stale legacy svcl.exe during upgrades.
  • Active-only pickers: installer and Reconfigure wizard list only endpoints whose Device State is Active (fallback to all with a notice if none are Active), so you don't pick a NotPresent/Disabled device by mistake.
  • Cycle shortcut: after picking headset/fallback, the installer asks whether to validate the ON→OFF→ON cycle (auto-detect mode) or use the endpoints as-is assuming WindowsEndpoint (skips the power dance).
  • Language guard: allow plural collection helper nouns and avoid the submenu false positive.

Based on the closed #10 with the picker improvements and cycle shortcut added; rebased cleanly onto main after #9 merged (no svcl, no #9 churn).

Validation

  • Pester: 42/42 (CI).
  • PSScriptAnalyzer + PowerShell syntax: pass.
  • Language guard: pass.
  • Secret scan: pass.
  • Embedded C# Core Audio bridge compiles (CI, windows-latest).

Not validated by CI: real headset behavior. Recommend a manual ON→OFF→ON test on a WindowsEndpoint device (e.g. Jabra) and on Logitech PRO X 2 (G HUB fallback) before releasing.

Ayerdi and others added 3 commits August 13, 2026 21:02
… + cycle shortcut

- Replace SoundVolumeCommandLine (svcl.exe) with an in-process Windows Core
  Audio COM backend: enumerate render endpoints with their real states,
  read the default endpoint, set Console/Multimedia/Communications through
  IPolicyConfig and verify all three roles with one bounded retry.
- Remove the NirSoft download/hash/extraction path from clean installs and
  delete a stale legacy svcl.exe during upgrades.
- Device pickers (installer + Reconfigure wizard) list only Active
  endpoints (falling back to all with a notice if none are Active).
- Installer offers a shortcut after picking headset/fallback: validate the
  ON->OFF->ON cycle (auto-detect mode) or use the endpoints as-is assuming
  WindowsEndpoint.
- Language guard: allow plural collection helper nouns, avoid the submenu
  false positive.

Co-authored-by: CommandCodeBot <noreply@commandcode.ai>
… cycle shortcut)

Co-authored-by: CommandCodeBot <noreply@commandcode.ai>
The installer now asks which kind of headset was picked instead of a vague
"validate cycle or use as-is":
  [1] Standard wireless (Bluetooth/USB, e.g. Jabra) -> WindowsEndpoint
  [2] Logitech PRO X 2 (LIGHTSPEED) -> LogitechGHub via G HUB
  [3] Not sure -> run the ON->OFF->ON cycle and auto-detect
Explains per option when each detection mode is the right one, so a
Logitech user does not pick WindowsEndpoint (which cannot tell ON from OFF
for the PRO X 2).

Co-authored-by: CommandCodeBot <noreply@commandcode.ai>
@Ayerdi
Ayerdi merged commit 72a8327 into main Aug 13, 2026
3 checks passed
@Ayerdi
Ayerdi deleted the feat/native-core-audio-v2 branch August 13, 2026 20:20
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant