Skip to content

Conversation

@prayzey
Copy link

@prayzey prayzey commented Jan 7, 2026

Summary

  • Replaces the binary mute toggle with a volume slider (0-100% reduction)
  • Cross-platform: CoreAudio (macOS), COM API (Windows), wpctl/pactl/amixer (Linux)
  • Persists original volume to disk for crash recovery
  • Backward compatible: old mute setting migrates to 100% ducking

Test plan

  • Tested on macOS with various ducking levels
  • Verified volume restores after recording ends
  • Verified volume restores after app crash/force quit
  • Tested cancel recording restores volume
Screenshot 2026-01-07 at 11 22 03 AM Screenshot 2026-01-07 at 11 21 49 AM

Adds flexible volume reduction during recording instead of binary mute.
Users can now choose reduction amount from 0% (no change) to 100% (full mute).

- Add volume_control.rs with native APIs (CoreAudio/Windows COM/Linux CLI)
- New settings: audio_ducking_enabled, audio_ducking_amount
- Auto-migrate existing mute_while_recording users
- Add AudioDucking.tsx settings component
- Linux: preserve boosted volumes above 100% (PipeWire/PulseAudio)
- Remove dead MuteWhileRecording.tsx component
- Redirect legacy mute_while_recording API to new ducking system
- Rename did_mute to did_duck for code clarity
- Add audioDucking translations for all 9 locales
If the app crashes while volume is ducked, the original volume is now
persisted to a temp file and restored on next startup.
- Fix cancel_recording not restoring volume in always-on mode
- Preserve original volume state if restore fails (allows retry)
- Only persist recovery file after successful volume change
If a previous volume restore failed, attempt to restore again
when starting a new recording instead of dropping the retry.
@cjpais
Copy link
Owner

cjpais commented Jan 7, 2026

I think we're gonna need some solid validation of this before it gets pulled in. Mainly we've gone through a few iterations of this mute implementation before settling on what we have currently, and I would prefer not to break things, if possible. I will definitely round up the testers for this in a little bit. It's gonna probably take me a while because I wanna review the code before I even pull people in.

Can you also let me know is this something that was written with assistance of AI or not?

@prayzey
Copy link
Author

prayzey commented Jan 7, 2026

Thanks for the thorough note, and yes, it was written with the assistance of AI.
Also just curious, were the prior mute implementation iterations tracked via PRs here, or privately/off‑platform?

@cjpais
Copy link
Owner

cjpais commented Jan 8, 2026

@prayzey they are tracked on github PRs and Issues if you search you'll be able to find at least a few "mute"

@Morriz
Copy link

Morriz commented Jan 24, 2026

I just added this related issue: #660

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants