github Belphemur/SoundSwitch v7.0.0
SoundSwitch v7.0.0

4 hours ago

This is a huge new version where you can test setting audio device for specific application using the new app rules setting. Thanks to @Bluscream

Also, the notification settings has been fully overhauled to let you decide where to put your notification. Thanks to @XangelMusic

Also the installer has been completely overhaul to support arm64 natively. Now, SoundSwitch installer will download the right version of the .NET Runtime and install it on your machine.

Last but not least, the website has been fully rewritten with helpful guide and information about the different features: https://soundswitch.aaflalo.me

7.0.0 (2026-05-19)

⚠ BREAKING CHANGES

  • support arm64 architecture

Features

  • add copilot-setup-steps.yml to run Copilot agent on Windows (6dbc87f)
  • add FAQ-from-discussion Copilot skill (c1ef56e)
  • add Sign-Binary.ps1 with SHA-256 signing, move code signing out of Inno Setup (95cc05b)
  • app-rules: auto-open process picker and add description when creating a new App Rule (#2050) (0431a44)
  • app-sound-lock: decouple process polling and implement notification batching (05b9f57)
  • audio-manager: add ProcessMonitor for periodic process polling (202aa72)
  • build-tools: detect .NET SDK version from csproj and migrate copilot setup to Linux (62be3ca)
  • build: add ARM64 support with framework-dependent publish and winget-managed runtime (bc048f1)
  • hotkey: WH_KEYBOARD_LL fallback for RegisterHotKey conflicts (#2105) (#2112) (2c74501)
  • notification: add support for App Rule triggers and configuration (4fafaec)
  • release: add parserOpts breakingHeaderPattern for ! breaking change notation (8a32b16)
  • rethink release pipeline with zip artifact, Python markdown tool, and PowerShell download script (98a2a16)
  • settings: auto-refresh device lists when CachedDeviceLister refreshes (#2114) (e1a63b8)
  • support arm64 architecture (9afc160), closes #2094
  • tools: add GitHub CLI as dependency in Install-BuildTools.ps1 (9a98686)
  • tools: add Publish-Release.ps1, refactor Build-Installer.ps1, enforce PS 7.0+ (09a9e5b)
  • ui: improve app rules grid, add process selection icons, and clear buttons (e48b47f)
  • website: add backend-driven y-axis ticks for download chart (633fd2c)
  • website: add custom theme layouts for ads (3436be3)
  • website: add durable download history (b6fa8bc)
  • website: add FAQ section and changelog page (698f02a)
  • website: add quick start section to home page (0cb75f1)
  • website: add SEO title and description frontmatter to every doc page (9e6455e)
  • website: add vuepress llms plugin to generate llms.txt (22197f7)
  • website: add Weblate languages list with smart placement (221e405)
  • website: blue theme, search, GitHub link and home redesign (03522c2), closes #2196f3
  • website: configure SEO plugin, sitemap and home metadata (be2b5be)
  • website: make GoogleAd configurable, add :key for route reload, add AGENTS.md (b106756)
  • website: migrate to vuepress-theme-hope with built-in footer, drop --legacy-peer-deps (0f9513f)
  • website: redesign homepage with custom hero, feature cards, and Font Awesome icons (a25d6dd)
  • website: show total GitHub download count on the home page (9a752eb)

Enhancements

  • .net: Update .NET dependencies to version 10.0.8 (ffb8883)
  • bump version to 6.14.3 for app rules patches (f6ba43c)
  • icon: refactor icon extraction into general-purpose ref-counted GDI infrastructure (#2039) (a44433a)
  • move to .NET 10 (0942d7c)
  • Notifications Tab (877bd41)

Bug Fixes

  • add missing [Code] section header to winget-dotnet-runtime.iss (427a50a)
  • add Switch Recording Device option for tray icon double-click (615e354)
  • address PR review feedback - revert Make.bat, add Build-Installer.ps1 and Install-BuildTools.ps1, fix LASTEXITCODE check, add permissions, auto-detect framework (0fcc4c7)
  • app-rules: add logging to empty catch blocks (37e4867)
  • app-rules: fix NU1510 compiler warnings (bbffe63)
  • apply review feedback — error checks, LiteralPath, fix CI winget failure, document PowerShell 7+ (f349ea4)
  • auto-detect .NET SDK version in copilot-setup-steps.yml from csproj TargetFramework (f064d96)
  • banner: reuse custom position notification and improve keyboard hints (551c45f)
  • build: replace NuGet signtool with Windows Driver Kit (WDK) installation via winget (8903306)
  • ci: align installer log artifact path (d8de8c4)
  • ci: build the full solution instead of individual projects (17a0c35)
  • ci: check Inno Setup registry before running winget install (85b17db)
  • ci: finding the right version of the framework (cfc8f32)
  • ci: reset exit code after handling already-installed Inno Setup in test-installer-build (4e97121)
  • ci: trigger build on root-level NuGet/SDK configuration file changes (fcf1cc3)
  • ci: upload installer artifacts and improve dotnet install logging (e02e9c5)
  • cli: change ExecuteAsync to protected for Spectre.Console 0.55.0 and build CLI in normal CI (4c9ab27)
  • cli: fix cli lib update (a93a131)
  • copilot-setup: add EnableWindowsTargeting=true to dotnet restore on Linux (8af7cce)
  • copilot-setup: replace variable-length lookbehind with sed for .NET version extraction (90de88c)
  • docs: resolve PR review comments and fix CI build (72bd74c)
  • double-click: fix naming of double click feature (6101c48)
  • download signtool from GitHub with smoke test, fallback to Windows SDK (7bed774)
  • filter null TargetFramework values, rename winget methods to version-agnostic names (4f94862)
  • hotkey: reject AltGr input in hotkey capture to prevent blocking international key sequences on Windows 11 (#2075) (21f66ba)
  • icon: use the new way to extract icons (8e53fa9)
  • improve error message consistency and winget exit code handling (547fcc4)
  • improve footer (b95c45f)
  • instaler: fix new light installer (requires internet for .NET framework) (d0156cf), closes #2095
  • installer: address code review feedback (490b326)
  • installer: check uninstall ResultCode with proper logging (7a771a6)
  • installer: clean app directory before install (e6311ef)
  • installer: use Dependency_ArchTitle for uninstall display name suffix matching (3048506)
  • installer: wrap QuietUninstallString in quotes for safer cmd execution (5b9ef83)
  • localization: Add fallback mechanism for missing localized strings (5a36295)
  • missing designer file for switch Recording device (a04c624)
  • notifications: address PR review feedback (3ec10e7)
  • null-safe PATH refresh in Install-BuildTools.ps1 (4a669ca)
  • parameterize .NET version for winget, remove stale win-x64 references (3e1daaa)
  • pass DotNetMajorVersion from CI to installer, add include guard, fix repoRoot init order (31a041b)
  • pin System.Security.Cryptography.Xml 10.0.7 to resolve CVE-2026-33116 and CVE-2026-26171 (5df71f9)
  • proper config for website (a894e16)
  • publish: disambiguate $tag variable in Read-Host string interpolation (c86b702)
  • publish: resolve Count property error when uploading single installer (#2081) (f58f15a)
  • remove ready to run (640b5b4)
  • remove SelfContained from CLI, exclude arch-suffixed installers from fallback (d46d93b)
  • remove unsupported --scope from winget runtime install (43caf63)
  • replace full Windows SDK with lightweight NuGet signtool, add Certum SimplySign Desktop (1884ebf)
  • replace ternary operator in Install-BuildTools.ps1 and add Pester tests (0b69f88)
  • restore localized dropdown fallback behavior (63ffe2b)
  • scope mismatch in callCount variable and add Directory.Parent mock properties (9f18897)
  • settings: align split notification settings with model and runtime (c3e2c9a)
  • signing: switch to DigiCert timestamp server with SHA-512 timestamp digest (ef978a1)
  • tools: streamline responsibilities, invoke ISCC directly, derive release state from channel (83ef154)
  • typo on switch device hotkey labels (e16a206)
  • update CodeQL SDK to 10.0.x, remove unused ARCH env var (bf71d15)
  • update Python version to 3.14 in Install-BuildTools.ps1 (e77b965)
  • use {pf} not {commonpf}, FileSearch for winget PATH, NeedRestart on 3010 (5002a75)
  • use underscore for arch suffix in auto-updater, prefer arch-specific first (4a524f7)
  • use windows-latest runner instead of windows-2025 in test-installer-build.yml (7f2061c)
  • website: add llm.txt alias build step and document llms endpoint (09c44b0)
  • website: correct AdSense slot id and defer push until laid out (1d5a495)
  • website: defer adsense slot init to next tick (d786044)
  • website: disable theme-hope drop-in animation on page mount (6cb7712)
  • website: fix base path (ab5c4f1)
  • website: force homepage to use Home layout (5602d8e)
  • website: generate changelog page from CHANGELOG.md instead of symlinking (77a2884)
  • website: guard adsense slot initialization against duplicate push (9d9260c)
  • website: log adsense init errors in console (91d5f44)
  • website: pin vuepress deps to compatible exact versions, add home page footer (1af1b4e)
  • website: prevent SSR hydration mismatch in HomeHero (e5685a8)
  • website: refine ad layout integration (60e4027)
  • website: refine download count card (6ca8fe8)
  • website: remove llm.txt alias - llms.txt is sufficient (b7409fe)
  • website: remove page level ads (#2109) (82ce157)
  • website: render banner position table correctly (18650e9)
  • website: restore adsense component to snippet flow (e57cf3b)
  • website: retry Google Ad push when ad slot has no width (808dace)
  • website: use shared type, clamp max>=min, validate ticks against floor (1cc076b)
  • website: use Unicode chars in footer string instead of HTML entities (219d7d7)
  • winsdk detection (f664d00)

Languages

  • Slovak: Added About translation using Weblate (3c41295)
  • Slovak: Added Settings translation using Weblate (1e9c83c)
  • Slovak: Added Tray Icon translation using Weblate (6fda308)
  • Slovak: Added Update Download translation using Weblate (3765663)

🛡 VirusTotal GitHub Action analysis:

Don't miss a new SoundSwitch release

NewReleases is sending notifications on new releases.