Skip to content

v0.2.0

Choose a tag to compare

@jeffreytse jeffreytse released this 11 Jun 12:20
· 12 commits to main since this release
fb1e600

Release v0.2.0

This release significantly expands WinSoftVol with new tray interactions, a persistent config file with hot-reload, volume cap controls, device change notifications, exclusive mode detection, an upgraded About dialog, and automatic update detection.

πŸš€ Features

  • Volume Cap: Add volume cap support β€” set a ceiling on maximum output (100% / 80% / 60% / 40%) from the tray menu (52288f4)
  • Scroll Wheel: Adjust volume Β±2% per notch directly on the tray icon (2ca5a6b)
  • Left-click Mute: Toggle mute/unmute with a single left-click on the tray icon (da4a7ed)
  • Dynamic Tray Icon: Real-time volume bar overlay on the tray icon; bar turns red when muted (e0338d1)
  • Device Change Notification: Toast notification confirms re-initialization after USB plug/unplug (cadd0f9)
  • Exclusive Mode Warning: Detects when a game or DAW takes WASAPI exclusive mode and notifies the user (a444ca4)
  • Config File: Persistent settings in %APPDATA%\WinSoftVol\config.toml with hot-reload β€” changes apply without restarting; supports per-device overrides (3e67028)
  • About Dialog: Upgraded to TaskDialog with clickable links to the project homepage and GitHub Sponsors; shows a download link when a newer version is available (e7c630a)
  • Auto-update Check: Background thread checks GitHub for new releases on startup. Fires a clickable toast notification (opens the release page directly) and surfaces a download link inside the About dialog when a newer version is found (5db0ddc)

πŸ› Bug Fixes

  • Resolve volume cap logic bugs (81d5f2d)
  • Volume cap menu items now correctly uncheck the previously selected preset (85e7a35)
  • Left-click tray icon now correctly opens the popup menu (82b4361)
  • Resolve wrong volume applied when GetMasterVolume fails (163296e)
  • Resolve incorrect string length calculation in UTF-16 encoding (c91e7be)
  • Clamp cap_percent to [10, 100] after TOML parse β€” a value of 0 previously silenced all audio (83476a5)
  • Embed comctl32 v6 manifest β€” fixes "procedure entry point TaskDialogIndirect could not be located" crash on startup (a57248e)

πŸ“ Documentation

  • Update README.md to reflect current features (3edc774)
  • Add LICENSE file (d8b9aa8)
  • Add CONTRIBUTING.md (6215abc)
  • Document config file, hot-reload, and About dialog links in README (48bdb85)
  • Document auto-update check feature in README (06d7528)

πŸ§ͺ Tests & CI

  • Expand test coverage across audio session management, config parsing, and tray presets (4ecdd19)

πŸ’… Style & Formatting

  • Resolve code formatting issues and align with styling guidelines (f504ef2, a3a90b7)

πŸ”§ Build & Maintenance

  • Add make lint command to check format and lint errors (0736974)
  • Add make fix command to quickly apply fmt and lint fixes (271d5b7)
  • Update funding sources in FUNDING.yml (ede4c2c)

Full Changelog: v0.1.0...v0.2.0

Full Changelog: v0.1.0...v0.2.0