github Belphemur/SoundSwitch v7.3.0
SoundSwitch v7.3.0

4 hours ago

Major rewrite of the main audio component. If you're on v7.2.1 please update asap, as that version has multiples crashes especially at startup.

7.3.0 (2026-08-26)

Features

  • audio: add AudioDevice COM wrappers + AudioDeviceEnumerator (Phase 2) (3defcfc), closes #2371 #401
  • audio: decode MP3 via vendored MP3Sharp (pure managed) (d796683)
  • audio: replace NAudio notification playback with in-house WASAPI renderer (f8e6792)
  • audio: support MP3 custom notification sounds (9b2e40d)
  • nightly: record sha512, commit and changelog per nightly artifact (2f8f015)
  • ui: show nightly update channel indicator in settings (bbc6332)
  • updater: add nightly update channel with SHA-512 verification (443206a)
  • updater: offer release-train updates to nightly builds as a beta track (fe599bb)
  • website: show nightly changelog and SHA-512 checksum (2535e7a)

Enhancements

  • notification: render Windows notification as native toast with balloon fallback (#2370) (3fb1282)
  • telemetry: track update subsystem usage and startup config snapshot (#2369) (1f43f32), closes #1 #4 #2 #5 #7

Bug Fixes

  • audio: address Copilot review — SeletedDevicesList typo + EndpointVolume null guard (e0b32b5)
  • audio: correct ERole profile matching + NameClean in mic response (8583f2d)
  • audio: correct IMFSourceReader.ReadSample native signature (MP3 crash) (0a0cdb3)
  • audio: dispose DeviceFullInfo on all non-happy paths (COM leak) (7841e7b)
  • audio: guard nullable EndpointVolume in IPC microphone-state lambda (f8ff7c4)
  • audio: harden vendored MP3Sharp decoder (7 CodeRabbit findings) (92e7920)
  • audio: normalize truncated WAV errors + localize WAV filter label (a3feb8b)
  • audio: prevent AudioDevice deadlock and finalizer crash in volume client (b0d5199)
  • audio: propagate registration failure + document MMNotificationClient (e6229ab)
  • audio: refresh default device after waking from sleep (issue #2009) (3e3ac93)
  • audio: reset seekable stream + handle non-EOS null samples (MP3) (6ccb148)
  • audio: use FluentAssertions v8 ThrowAsync for async null-data test (7b48ee6)
  • audio: use nullable tuple for volume-copy + Serilog for conversion warnings (b8df9f1)
  • audio: use typeof() for the static-class Serilog context (b2abcf2)
  • ci: stamp version via AssemblyInfo rewrite and tag-relative revision (19c0604)
  • ci: validate all -Version components against the 16-bit limit (d8db090)
  • model: fully remove misspelled seletedDevicesList (param + property) (ceaef69)
  • model: rename misspelled SeletedDevicesList property to SelectedDevicesList (a3c949e)
  • nightly: use installer version in issue comment so the build number matches the download link (373cd27)
  • reliability: harden audio device object and single-instance IPC against transient failures (#2371) (06fe289)
  • updater: address review findings on nightly release-train fallback (436c8af)
  • updater: encode nightly revision as prerelease identifier (8bccc3e)
  • updater: normalize integrity-check failure to string in nightly ternary (d03435d)
  • website: parse bold/italic and bullet markers in nightly changelog (4b4b18a)

Tests

  • audio: migrate tests to in-house enums, add PROPVARIANT contract tests (89fd591)

🛡 VirusTotal GitHub Action analysis:

Don't miss a new SoundSwitch release

NewReleases is sending notifications on new releases.