Repository navigation
Downloads
- Volumey_2.0.0.0_x64.zip: everything included, starts on any Windows 10/11 PC (64-bit). The in-app update uses this one.
- Volumey_2.0.0.0_x64_framework-dependent.zip: smaller, but requires the .NET 10 Desktop Runtime (x64).
- Or get it from the Microsoft Store.
SHA-256:
fe410ce4c203fbbeee799041c87dcef1f82e27d5e46a55890dea8f3234413786 Volumey_2.0.0.0_x64_framework-dependent.zip
2bfd9be04bf6db2091ad4e2560f39c7b1b4df3a27e5eaa4dbd9316e151425fba Volumey_2.0.0.0_x64.zip
Changes since 1.5.4.0
- The new app icon in the package assets and the exe (05285e3)
- About: only the version and the update check, no app icon or name (46a154c)
- README: the new icon, from the repository (f1fdafb)
- Version 2.0.0.0 (9e00769)
- Russian: simpler wording for the tray, hotkey mode, volume step, OSD and About texts (3d1639e)
- UI tests: rest the pointer on the tray icon before right-clicking it (70c15fd)
- UI tests: find a saved app's card by its expand pattern (d12f772)
- UI tests: skip a tray icon that goes away while the tray is searched (869653e)
- UI tests: GitHub link tests are inconclusive without internet (932e251)
- UI tests: resize the mixer away from the screen's edge (079fc78)
- UI tests: keep Windows 10's hidden icons flyout from closing under them (e96fc75)
- Name list rows, the hotkey mode choices and card expand buttons for screen readers (249514a)
- UI tests: find the Windows 10 tray icon, survive a slow start in a VM (efb1299)
- Retry a settings save while settings.json is in use (a0780ff)
- UI tests in a VM: install the .NET 10 Desktop Runtime from the host (aa70e24)
- UI tests in a VM: keep the settings file in the repository's root, ignored by git (c13e636)
- UI tests in a VM: read the VM and its sign-in from a settings file (6ae172e)
- Keep the OSD on screen with large distances from the edges (ee72281)
- UI tests: run them in a VMware VM from the builds alone (cc42420)
- Keep the settings folder override in the autostart entry and shortcut (5c3a5c6)
- Keep the settings folder override when Windows restarts the app (edea88c)
- Tidy the README and show the 2.0 mixer (8464ded)
- Require Windows 10 2004 (build 19041) (345f000)
- Follow device renames in the Devices page's device list (3fa8f65)
- Update the README for 2.0 (50abb1a)
- Turn on nullable reference types in the views and the remaining files (193773a)
- Turn on nullable reference types in Services and Helper (444e6bd)
- Grey out the sliders of muted apps and devices (bf966d3)
- Turn on nullable reference types in the view models (579a8fb)
- Turn on nullable reference types in Model and DataProvider (6890375)
- Read the Start menu shortcut off the UI thread at start (bc8d84e)
- Release the Start menu shortcut's COM objects right away (38ba612)
- Seal the classes nothing derives from (bd9470f)
- Don't add HotKeyBox's handlers again when its template is applied again (afa05f8)
- Remove two finalizers that never run (09320cd)
- Remove the unused ObservableConcurrentDictionary (f8d7255)
- Report each app volume or mute change once (b273693)
- Fix the pressed color of WPF-UI's ui:Button (ca45326)
- Show the icon of an app's window, like the taskbar and Windows' mixer (74bacac)
- Remove the rows of apps that can't be watched for their exit (c6bf445)
- Read app icons with ExtractIconEx, straight into the image (6676df6)
- Use an app's first visible icon when the exe's first icon is empty (04161a7)
- Read the path, name and description of apps that can't be opened (d2bf081)
- Read each app's icon once and share it as a frozen image (b0d4687)
- Mark the default device in the mixer's device list (aaeb469)
- Pick the device with real clicks in the mixer's device picker UI test (05376e7)
- Pick a device in the mixer's combo box with the mouse (0cbc16f)
- Compare device IDs ordinally (038fafa)
- Don't hold a pool thread while the screen list is applied (0954ac9)
- Keep one model per device when Windows reports a new device twice (1da09a7)
- Take an outside device volume change over without writing it back (0ccc8b6)
- Update the tray tooltip at most every 100 ms (eaf3b3d)
- Queue one OSD update per app at a time (3581aaa)
- Pass channel level changes that come together on to the UI thread once (b08bfb3)
- Sync the app volumes once for device volume changes that come together (e50d296)
- Fewer calls to Windows per app volume change (8c19da9)
- Follow channel levels only for the selected device on a visible Devices page (50301b1)
- Release the device icon when its model is disposed (a4694e2)
- Match the foreground app by process id before opening its process (8bf688b)
- Fit the settings window on small screens (48754fe)
- Test that the volume step box arrows save the step (5a07118)
- Save the volume step and limit when their arrows are clicked (0fff488)
- Build portable PDBs in Release and Store (e24021a)
- Remove an unused using (ad8f43f)
- Remove AppServices and the view model resources (3b61e4c)
- Pass the hotkey service and mode to the hotkey boxes and note through bindings (a364ac2)
- Bind the mixer window, mixer and tray to MainViewModel (fcce56a)
- Rename SettingsViewModel to HotkeyModeViewModel (3858806)
- Give each settings page its view model through its constructor (fb59793)
- Create the settings view models in the container (94887bf)
- Create services and view models in a container at startup (6db15d0)
- Fail UI tests on logged binding errors (4570d2d)
- Log binding errors in Debug builds (56c45eb)
- Keep comments to explaining the code (f6b156c)
- Release startup sessions that don't end up in the mixer (82b03f6)
- Read a device's formats again when exclusive mode is allowed (536538c)
- Show device volume changes caused by a balance change (0164b89)
- Match devices by ID before name for the make-default hotkeys (336488e)
- Wait for a settings write that's already running when flushing (32d461f)
- Keep window mode's position in physical pixels and the mixer on its screen (596cdeb)
- Keep the pop-up's remembered position in physical pixels (e052bfc)
- Change a saved app's hotkey on every running process of the app (d3bc503)
- Release an app's process when its model is disposed (1f7b0ec)
- Show an error when saved device or app hotkeys fail to register (ebbf910)
- UI test workflow: not on draft pull requests (fb7819b)
- UI test workflow: runs on pull requests and by hand, no ci/ui-tests branch (986cc72)
- UI tests: the update dialog fits the pop-up and Later closes it (110a73b)
- Translations: Russian OK button "ОК", Turkish Exit capitalized (485504d)
- Debug builds: VOLUMEY_SHOW_UPDATE_DIALOG=1 shows the Store build's update dialog (c44f527)
- Update dialog: the text wraps to the dialog's width (b993cc5)
- Mixer: the expand badge's chevron in the theme's text color (b6e65cf)
- Release workflow: the notes list every commit since the previous version (f594e19)
- Release workflow: a version tag builds the zips and drafts the GitHub release (8451ed8)
- Start with Windows works on a profile without a Run key; UI tests on CI (62dfbaa)
- UI test workflow: don't end the step at the test run's first stderr line (80963aa)
- UI test workflow: failed tests as annotations and in the run's summary (10098d4)
- UI test workflow: TEMP/TMP in the step, runner.temp isn't available in the job's env (f175b12)
- UI tests: the two-session test reads the sessions' names right; tray tests and CI without audio (f135e27)
- Package: a new test certificate (the old one expired in 2023) (888513e)
- Release zips: a self-contained one for the updater and a framework-dependent one (459ac5e)
- UI test: an app with two sessions; session sliders and the expand button get names (7ae8e90)
- UI tests: Notifications and About pages (23ceb5a)
- UI tests: App hotkeys and Devices pages; device list tags exposed to screen readers (1d08239)
- UI tests: General page, Volume mixer page, mixer window and tray menu (68eddaf)
- UI tests: foreground-app and media key hotkeys, restart checks for the App hotkeys and Devices pages (bf8805d)
- Hotkey boxes say when a combination is taken instead of staying empty (009484d)
- Notifications: sliders for the edge distances, the sample OSD shows where it lands (3a15e5b)
- OSD: Windows 11's flyout shape (8 px corners) and a regular-weight number (32fdeed)
- WindowChrome: ignore any COMException of the frame extension, not only 0x80263001 (df51efc)
- Survive two WPF bugs: a popup resized before it was positioned, a tablet list refresh (ce298a5)
- Devices: retry reaching Windows audio at start, then in the background (a8fbf78)
- Logging: expected process path and icon failures are debug, Loggly gets info and above (e6a7d11)
- Survive WindowChrome's "desktop composition is disabled" failure (5fa907a)
- UI tests: the pop-up is dragged with the position not remembered and reopens by the tray (bdd0f7d)
- Mixer: the pop-up is dragged whether its position is remembered or not (15b489b)
- UI tests: window mode is dragged by an empty spot and still by its title bar (fe368fa)
- Mixer: window mode is dragged by any spot that isn't a control, like the pop-up (fdda208)
- UI tests: the pop-up is dragged by an app's name (7d476f3)
- Mixer: the pop-up is dragged by any spot inside the apps list too (c1fcb4a)
- Remember position: clearer hint on dragging the pop-up (en, ru, uk) (31fcbbf)
- Notifications page: the distance labels above their boxes (133f283)
- Mixer: an option to remember its position, in both modes (339231c)
- Mixer: one width for both modes, 1/5 narrower (368 px) (923d882)
- Settings: the hotkey mode note at the top of every page that sets hotkeys (898697f)
- Devices page: one header for the default device's volume hotkeys (a335ca8)
- UI tests: the General, Volume mixer and Notifications pages survive a restart (b7fef40)
- UI tests: the OSD (9ab4c14)
- UI tests: the mixer's app rows and device controls (b2dbc88)
- Mixer: the device's slider and mute button have automation IDs, the slider the device's name (66697ef)
- UI tests: start Volumey in English (ebd83fe)
- Media keys: names wrap, the boxes end at the card's edge (e5454ff)
- Hotkey box: a placeholder too long for the box gets smaller instead of cut off (757146d)
- Tests: every language translates every string with the same placeholders (e13427d)
- Translations: every string in all 11 languages (91a23d5)
- Localization: the OSD preview and the device format follow the language (96f88e8)
- Resources: drop the 1.x strings the new UI doesn't use (08b9b98)
- scripts: a README on running the UI tests (53f50d0)
- UI tests: run script and a manual GitHub workflow (51891bf)
- UI tests: device hotkeys and the hotkey mode (0249075)
- UI tests: app hotkeys (25d3d83)
- UI tests: media keys (c679069)
- UI tests: project and the open-mixer hotkey (97d4421)
- Settings: no footer items in the navigation (0af4cc8)
- Settings: no separator above the navigation's footer (3cc06f6)
- Settings window: at least 800 wide (a2538bb)
- Volume mixer: the hotkey mode note under the open-mixer hotkey (eef0fb4)
- Devices: the hotkey mode note right after the hotkey cards (c3f5fd5)
- Settings: the hotkey mode note on every page with hotkeys (a9efdd9)
- Settings: shorter notes (0b8a28d)
- Devices: drop spatial sound (df5de9a)
- Devices: drop the audio enhancements switch (d7e181b)
- Settings: no Source code item in the navigation (d886e34)
- About page (40bcf71)
- OSD: right place and sharp text on a scaled screen (0868940)
- Notifications page (14a9b17)
- Own OSD window instead of the Notification.Wpf fork (b891f7e)
- Placeholder text in every hotkey box (900cdfc)
- Media keys page (f418f48)
- Devices: spatial sound, enhancements, exclusive mode and balance (30e63c0)
- Device mute hotkey: unmute again (0d702f3)
- Devices: change a device's format (a5fc0b4)
- Settings: the Devices page (40ad113)
- Mixer: volume numbers in the normal text color (4db8cf4)
- Captions in the secondary text color (149c2fa)
- Toggle switches keep their color on hover (a2d24ff)
- Hotkey boxes: readable keys while disabled (e09a12c)
- Settings: the App hotkeys page (4ec82e0)
- Update dialog: apply WPF-UI's dialog style (ca13e38)
- Hotkey boxes: show the keys as key caps (65a9c37)
- Settings pages: scroll anywhere on the page; hotkey mode stays selected (7af95ad)
- Settings: the Volume mixer page (f3fb3f0)
- Volume step box: show the clamped value even when it doesn't change (c194616)
- Volume step box: commit the typed value when the window loses focus (10aafff)
- Volume step box: digits only (033c33a)
- General page: wider volume step box (74d23b5)
- Mixer: keep the scroll bar off the mute buttons (6dde65d)
- Mixer: the bottom bar with Sound settings and settings in window mode too (aa8fb24)
- Slider thumb: 10 px inner circle in the fill's accent color, like Windows (9885436)
- Slider thumb grows on hover like Windows 11 instead of changing color (201652e)
- Fix black text on the settings pages after a dark start (185b5b2)
- Redesign: tray menu from the mockup, mute button names, settings window size (5fbc67b)
- Redesign prototype on WPF-UI: mixer flyout, window mode, settings window (5919fd9)
- Respect the OSD switch for foreground-app hotkeys (024fe56)
- Update Autoupdater.NET to 1.9.3 (d9a8c8b)
- Turn on nullable reference types in the audio wrapper (3da2948)
- Take the Loggly key out of the repository, update log4net to 3.5.0 (19b4b38)
- Test the Win32 calls behind hotkeys, the window menu, restarts and the second start (bb6cb6f)
- Small cleanups: one percent conversion, Math.Clamp, static loggers, one catch for volume writes (bef1b78)
- Generate view model properties and commands with CommunityToolkit.Mvvm (ef5519f)
- Share the hotkey and screen view model plumbing (00247a5)
- Generate the Win32 declarations with CsWin32 (c1db554)
- Remove dead code (c46a45a)
- Reformat the code to the style baseline (c3d40fc)
- Add .editorconfig with the code style baseline (061e09c)
- Remove CLAUDE.md (f6d2d33)
- Update the status notes in CLAUDE.md (f66f2c0)
- Fix the remaining small bugs from the audit (82042de)
- Write settings on the UI thread and debounce the file writes (2d6ed2b)
- Fix hotkey lifecycle bugs (bf0a98d)
- Fix hotkey user counting and the duplicate check (8279134)
- Replace async void handlers with logged fire-and-forget tasks (799a3f7)
- Remove UI-thread waits from audio callbacks and releases; fix a flaky test (62ab53c)
- Fix icon ownership and stop waiting for the UI thread to extract icons (53f0aa6)
- Log crashes on every thread in every build (d9a8aab)
- Plan: code quality audit and modernization (item I) (cb536a5)
- Notes: the OSD under exclusive fullscreen games (#63) (9e0855a)
- Apply the re-checked screen on the UI thread (d9a1aeb)
- Add dev-only diagnostics for the foreground-app hotkeys (#63, #88) (d009daf)
- Place the OSD correctly on a scaled screen (#76) (f47b5fb)
- Fix the crash after sleep and wake (#57) (0a2e3ba)
- Limit logging of the ignored window update failure and refresh windows (#58, #66) (34ac2bc)
- Plan: a view of each device's supported features (item H) (26fa7a2)
- Rebuild a reconfigured device instead of restarting the app (#82, #85) (1780821)
- Drop the settings migration; import 1.x screen indexes directly (60397f3)
- Remember screens by device name, not by index (#92) (a0a5f7c)
- Show saved default-device hotkeys on the settings page (#18) (bc7cae3)
- Open the popup when the app is started again in popup mode (#74) (1d30f18)
- Switch the tray icon to H.NotifyIcon.Wpf with the native tooltip (839cf2f)
- Add handoff notes and a test-session helper (453b47e)
- Survive the WPF window update quota failure; triage the GitHub issues (26ea073)
- Mark the 1.x Store import path as unchecked in CLAUDE.md (689a3f3)
- Record the tray and installed MSIX checks; correct the MSIX settings path note (729aac7)
- Record the 2.0 runtime checks in CLAUDE.md (484b1f3)
- Keep dev builds away from the installed app's autostart and shortcut (e77c55b)
- Replace the app's statics with a composition root and constructor injection (67db3e1)
- Defer the tray icon change to the UI redesign in CLAUDE.md (4c2df3a)
- Test that hotkeys block by default; record the owner's hotkey check (ad1cf1e)
- Add non-blocking hotkeys through SharpHook (b7b7235)
- Add audio integration tests and fix repeated session echoes (07137de)
- Add ViewModel tests and fix the bugs they found (56aa7e2)
- Add unit tests for converters, controls, localization and settings loading (b6e9b3e)
- Update CLAUDE.md: NAudio step verified (b4dd4d5)
- Fix a hang when an audio device is disabled (70206d3)
- Record NAudio device volume checks in CLAUDE.md (5319475)
- Record NAudio session checks in CLAUDE.md (c3be828)
- Move the audio layer to NAudio.Wasapi 3.1 (ddcd290)
- Plan hotkeys via a library and the H.NotifyIcon tray icon in CLAUDE.md (aa16771)
- Update current state in CLAUDE.md (de5f473)
- Clean up build warnings, packaging and dependencies; add CI (75e9294)
- Update git remotes note in CLAUDE.md (c20686f)
- Add isolated dev runs and UI inspection scripts (4e29414)
- Replace BinaryFormatter settings with settings.json (Nucs.JsonSettings) (d172985)
- Describe release/2.0 branching workflow in CLAUDE.md (fb3c403)
- Document NAudio coverage gaps in CLAUDE.md (029e78b)
- Add CLAUDE.md with project notes for coding agents (8c9f26a)
- Retarget to .NET 10 and move tests to MSTest 4 (e07cdb1)
- Switch tests from xUnit to MSTest (1443a48)