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: