✨ New Features
🎤 Input Device Control
- Microphone monitoring — View and control input devices (microphones) alongside output devices
- Tabbed interface — Seamlessly switch between Output and Input devices with a sleek pill toggle
- Input level & mute control — Adjust input gain and mute state for any microphone
🔊 Multi-Device Output
- Aggregate device support — Route app audio to multiple output devices simultaneously
- Multi-device picker — Select multiple devices with checkbox interface in Multi mode
- Mode toggle — Switch between Single and Multi device modes per app
📌 Pinned Apps
- Pin your favorites — Keep apps visible in the list even when they're not playing audio
- Pre-configure settings — Set volume, EQ, and device routing before an app starts playing
- Persistent pins — Pinned apps and their settings survive app restarts
🔧 Improvements & Stability
- Bluetooth codec protection — Input device lock prevents Bluetooth audio quality downgrade when monitoring microphones
- Bluetooth timing — Improved device warmup delay (300ms) for more reliable volume readings on Bluetooth devices
- System sound sync — Validates "follow default" preference on startup and enforces it if macOS state drifted
- Explicit shutdown — Clean audio engine shutdown on app termination
- Code architecture — Extracted reusable components (AppRowControls, BaseMuteButton, CrossfadeOrchestrator) for better maintainability
- Consolidated state — Unified volume/mute/identifier into AppAudioState for cleaner data flow
- Auto-updates — Fixed Sparkle installer for sandboxed app; future updates will install automatically
🐛 Bug Fixes
- Popover flicker — Fixed visual flickering when popover content updates by reusing hosting view
- System daemon filtering — Added more Apple system processes to filter list (FrontBoardServices, NotificationCenter, etc.)
- Multi-device toggle — Hidden in Settings device picker where it doesn't apply
- Popover reactivity — Fixed content not updating when state changes while popover is open
- EditablePercentage — Improved discoverability and click-outside behavior