Skip to content

Releases: Peter-L-SVK/pro_audio_config

v1.9.1

23 Dec 16:57
Immutable release. Only release title and notes can be modified.
615de45

Choose a tag to compare

[1.9.1] - Thread Safety & Bug Fixes

🐛 Critical Bug Fixes

  • Fixed GTK Thread-safety Panic: Resolved "GTK may only be used from the main thread" crash during configuration scanning
  • Linux Compatibility: Specifically addressed issue occurring on Linux with GNOME 49 desktop environment
  • Background Thread Safety: Removed GTK dialog calls from file scanning background threads
  • Error Handling Refactor: Error collection now safely passed to main thread via message channels

🔄 Architecture Improvements

  • Thread-safe Error Display: All GTK dialog operations now properly routed through main thread
  • Message Passing Enhancement: Clean separation between background scanning and UI notification logic
  • Error Collection: Background scanning collects errors for batch main-thread display
  • Race Condition Prevention: Eliminated potential crashes during intensive configuration directory scanning

⚠️ Compatibility Notes

  • GNOME: Now fully compatible with Linux distributions running GNOME 49
  • Thread-safe Operations: Background file operations no longer attempt direct UI updates
  • Error Feedback: Users still receive comprehensive error messages for missing directories or permission issues
  • Performance: Maintains efficient background scanning while ensuring UI thread safety

🚀 User Experience

  • Stable Scanning: Configuration Inspector tab no longer crashes during file discovery
  • Reliable Error Reporting: File access issues now reported without application instability
  • Smooth Operation: Maintains responsive UI during intensive configuration directory traversal
  • Cross-distribution Stability: Enhanced compatibility across different Linux distributions and desktop environments

🔧 Technical Implementation

  • Error Channel System: New scan_config_directory_with_errors() method returns error collections
  • Main Thread Routing: All show_error_dialog() calls properly dispatched from GLib timeout callbacks
  • Thread Boundary Enforcement: Strict separation between file system operations and GTK UI updates
  • Backward Compatibility: Maintains all functionality while fixing thread-safety issues

The v1.9.1 maintenance release focuses on critical stability improvements, specifically addressing the thread-safety issue that caused crashes during configuration scanning on Linux systems with Gnome 49. This ensures reliable operation across all supported distributions while maintaining the comprehensive configuration inspection capabilities introduced in v1.9.0.

v1.9

23 Dec 12:49
Immutable release. Only release title and notes can be modified.
e2c230c

Choose a tag to compare

[1.9.0] - Configuration Inspector & Monitoring Resilience

🔍 Configuration Inspector Tab

  • Comprehensive File Scanning: Automatic discovery of all PipeWire/WirePlumber configuration files
  • Active Status Detection: Heuristic-based identification of active pro-audio configurations
  • Visual File Indicators: ✓ checkmarks show files currently influencing system audio settings
  • Smart File Organization: Clear separation between user and system configuration files
  • Desktop Environment Integration: Intelligent terminal detection for system file editing
  • File Metadata Display: Size, modification time, owner information, and content preview
  • Refresh Capability: On-demand rescanning of configuration files and PipeWire state

🔌 Enhanced Audio Monitoring Reconnection

  • Manual Reconnect Button: One-click recovery for monitoring connection issues
  • Multi-attempt Strategy: Exponential backoff reconnection with intelligent retry logic
  • Service Health Monitoring: Automatic detection of PipeWire service interruptions
  • Connection Cleanup: Removal of stale monitor ports before reconnection attempts
  • PID Change Handling: Automatic recovery when audio daemons restart
  • Monitoring Thread Lifecycle: Proper cleanup and restart of monitoring threads

🎯 Smart Active Configuration Detection

  • Filename Pattern Recognition: Files starting with "99-" or containing "pro-audio" identified as active
  • Content Analysis: Detection of common pro-audio settings in configuration files
  • Application Signature: Files containing "# Generated by Pro Audio Config" marked as active
  • pw-dump Integration: Property parsing to identify referenced configuration files
  • Heuristic Fallback: Content-based detection when direct references unavailable

🛠️ System Architecture Improvements

  • Thread-safe UI Updates: Resolved *mut c_void cannot be sent between threads safely errors
  • Simplified Message Handling: Removed unnecessary callback_sender system
  • Main Thread Optimization: All UI updates now properly routed through GLib timeout mechanism
  • Clean Architecture: Proper separation between audio worker threads and GTK UI thread
  • Improved Error Recovery: Enhanced handling of monitoring service interruptions

🖥️ User Interface Enhancements

  • Tabbed Interface Expansion: Fourth dedicated tab for configuration management
  • Intuitive File Operations: Double-click to open files with appropriate editors
  • Visual Status Feedback: Clear indicators of file activity and system status
  • Legend Documentation: Clear explanation of active file indicators
  • Progress Feedback: Real-time status updates during configuration scanning
  • Error Messaging: Improved user feedback for file access issues

🔄 Configuration Management Workflow

  • File Discovery: Recursive scanning of standard PipeWire/WirePlumber directories
  • User/System Separation: Clear distinction between personal and global configurations
  • Active Configuration Insights: Understanding which files affect current audio behavior
  • Editing Workflows: Seamless transition from discovery to configuration editing
  • Change Verification: Ability to refresh and verify configuration status changes

⚠️ Requirements & Compatibility

  • Enhanced PipeWire Support: Improved compatibility with PipeWire service restarts
  • Desktop Environment Coverage: Terminal detection for GNOME, KDE, MATE, Cinnamon, LXQt, Xfce, COSMIC, Budgie, Pantheon, Deepin, Enlightenment
  • Privilege Management: Secure handling of system file editing with privilege escalation
  • Fallback Instructions: Clear manual instructions when automated terminal detection fails
  • Comprehensive Error Handling: Graceful degradation when individual scanning operations fail

🐛 Bug Fixes & Refinements

  • Fixed Thread-safety Issues: Resolved GTK object sharing across thread boundaries
  • Improved File Opening: Enhanced terminal detection for system configuration editing
  • Active Detection Refinement: More accurate identification of influencing configuration files
  • Memory Management: Proper cleanup of temporary scripts and resources
  • UI Responsiveness: Maintained smooth interface during intensive file scanning operations
  • Error Message Clarity: More informative feedback for configuration access issues

🚀 Upgrade & Usage Notes

  • First-time Use: Configuration Inspector automatically scans on tab activation
  • Active File Identification: Heuristics may indicate files as active based on content patterns
  • System File Editing: May prompt for authentication when editing system configurations
  • Refresh Timing: Scanning large configuration directories may take several seconds
  • Monitor Recovery: Manual reconnect useful after PipeWire service updates or crashes
  • Visual Feedback: Check terminal for detailed scanning and reconnection debug output

🔧 Configuration & Integration

  • New Module: config_inspector.rs for comprehensive configuration management
  • Enhanced Monitoring: Improved recovery logic in monitoring.rs
  • Dependency Update: Added chrono crate for file timestamp handling
  • File System Integration: Direct interaction with configuration directories
  • Process Management: Integration with system commands for file metadata and editing

📊 Quality Improvements

  • Expanded Test Coverage: Additional unit tests for configuration file detection
  • Error Resilience: Robust handling of missing directories and permission issues
  • Documentation Updates: Enhanced README with Configuration Inspector features
  • Code Structure: Clean separation between configuration discovery and UI presentation
  • Performance Optimization: Efficient file scanning with background thread processing
  • User Experience: Streamlined workflows for configuration inspection and editing

The v1.9 release completes the professional audio configuration suite with comprehensive configuration management and enhanced monitoring resilience. The Configuration Inspector provides unprecedented visibility into audio system configuration, while the improved monitoring reconnection ensures reliable real-time audio feedback even through service interruptions and system changes.

v1.8

12 Dec 17:00
Immutable release. Only release title and notes can be modified.
1c91f5f

Choose a tag to compare

[1.8.0] - Real-time Audio Monitoring & Smart Device Detection

🎚️ Real-time Audio Monitoring Tab

  • Live Audio Level Meters: Visual monitoring of stereo channel output levels
  • PipeWire Integration: Native PipeWire API access for system audio monitoring
  • Color-coded Visual Feedback: Safe (green), warning (yellow), and clipping (red) zones
  • Smooth Meter Animation: 10 FPS updates with proper threading architecture
  • DB Scale Display: Accurate decibel readings with peak level calculations
  • Professional Thresholds: Studio-standard -3dB warning and 0dB clipping indicators
  • Auto-connect Support: Intelligent auto-connection to system audio monitor sources

🎯 Smart Device Detection & Configuration

  • Enhanced Audio Detection: Improved accuracy for PipeWire, ALSA, and PulseAudio devices
  • Cache Management: Dynamic caching with clear_cache() functionality
  • Unified Configuration: Seamless integration between detection and monitoring systems
  • Error Recovery: Graceful fallback to simulation mode when real monitoring unavailable

🔄 System Architecture Improvements

  • Thread-safe Communication: Message-passing channels between audio capture and UI threads
  • Non-blocking UI Updates: GTK idle callbacks for smooth user interface response
  • CSS-based Styling: Professional visual design with configurable color schemes
  • Auto-detection Logic: Intelligent fallback between real monitoring and simulation
  • Rate Limiting: Time-based throttling for expensive detection operations

🛠️ Technical Implementation

  • Native PipeWire Crate: Direct Rust bindings to PipeWire C API
  • Monitor Stream Configuration: MEDIA_CATEGORY: "Monitor" property for system audio capture
  • Audio Format Negotiation: Support for F32LE and other professional audio formats
  • Buffer Management: Proper buffer queuing and data processing pipelines
  • Real-time Thread Safety: Thread-safe audio processing with minimal latency

⚠️ Requirements & Compatibility

  • PipeWire 1.4.0+ Required: Native real-time monitoring features require modern PipeWire
    -WirePlumber 0.5+ Recommended: Full configuration features require version 0.5 and higher, due new JSON-based policy format
  • Fallback Support: Simulation mode for systems without PipeWire
  • GTK3 Styling: Requires data/styles.css for proper visual presentation
  • Auto-connect Permissions: May require manual connection for first-time use
  • Fedora 42+ Optimized: Best experience on modern Fedora, but any distribution with PipeWire 1.4.0+ and WirePlumber 0.5+ is fully compatible.

🐛 Bug Fixes & Refinements

  • Fixed Level Calculation: Corrected dB conversion formulas and threshold mapping
  • Enhanced Error Messages: Clearer status indicators for monitoring issues
  • Memory Management: Proper cleanup of PipeWire resources on shutdown
  • UI Synchronization: Fixed race conditions between audio capture and UI updates
  • Delayed Auto-connect: 5-second delay to ensure monitoring initialization completes
  • CSS Class Management: Proper removal/addition of styling classes based on audio levels

🚀 Upgrade & Usage Notes

  • First Run: May need to manually connect monitor via pw-link on initial setup
  • Audio Sources: Requires system audio playback for meter activity
  • Performance: Real monitoring adds minimal CPU overhead (<2% typical)
  • Visual Feedback: Check terminal for debug output during connection attempts
  • Fallback Mode: Automatically uses simulation if PipeWire unavailable
  • Testing: Play system audio to verify real-time meter functionality

🔧 Configuration Changes

  • New Module: audio_capture.rs for PipeWire monitoring implementation
  • CSS Requirements: data/styles.css for level meter styling
  • Dependency Update: Requires pipewire = "0.8" and libspa = "0.8" crates
  • Build Feature: Optional --features pipewire-monitoring for release builds
  • Thread Architecture: Separate threads for UI, configuration, and audio capture

📊 Quality Improvements

  • Increased Test Coverage: Additional unit tests for audio capture functionality
  • Error Handling: Comprehensive error reporting for monitoring failures
  • Documentation: Updated README with monitoring feature highlights
  • Code Structure: Clean separation between simulation and real monitoring logic
  • Performance Optimization: Efficient audio level calculation algorithms

The v1.8 release represents a major step forward in audio visualization capabilities, bringing professional studio-style monitoring to Linux desktop audio configuration. The real-time PipeWire integration provides users with immediate visual feedback on their audio system's performance and configuration effectiveness.

v1.7

04 Dec 19:51
Immutable release. Only release title and notes can be modified.
c6bf7aa

Choose a tag to compare

[1.7.0] - Professional Audio Exclusive Mode

✨ New Features

  • Advanced Tab: Dedicated panel for studio/professional audio configuration
  • Exclusive Mode: ASIO/WASAPI-style direct hardware access (bypasses audio mixing)
  • Low Latency Mode: Configurations down to 64 samples (~1.33ms @''48kHz'')
  • Quantum Floor Override: Bypasses PipeWire's minimum buffer size restrictions
  • Application Targeting: Route specific apps (DAWs) to exclusive hardware access
  • Real-time Mode Status: Visual feedback on exclusive/shared audio mode

🎛️ Configuration & Performance

  • PipeWire Passthrough: Direct ALSA hardware access configurations
  • WirePlumber Routing Rules: Application-specific audio routing (0.5+)
  • Automatic Fallback: Graceful degradation to standard mode if exclusive fails
  • Dual Configuration: User-specific (~/.config/) and system-wide (/etc/) support
  • Memory Locking: mlock() support for reduced audio buffer latency

⚠️ Breaking Changes & Known Limitations

  • Exclusive Mode Blocks Other Apps: When active, other applications cannot access audio device
  • Advanced Tab Overrides Basic: Professional settings take precedence over Output/Input tab configurations
  • PipeWire 0.5+ Recommended: Full functionality requires modern PipeWire/WirePlumber
  • USB Audio Preferred: Exclusive mode works best with external USB/Firewire interfaces
  • System Sounds Disabled: No notifications/alerts while exclusive mode active
  • Removed Support Lua: Now works only with Wireplumber 0.5+

🐛 Bug Fixes & Improvements

  • Fixed JSON Syntax: Corrected configuration generation for PipeWire 0.5+
  • Enhanced Cleanup: Unified configuration cleanup functions (5→1)
  • Service Restart Reliability: Improved audio service management during changes
  • Hardware Detection: Better capability checking for pro audio devices
  • Error Handling: Graceful recovery from exclusive access conflicts
  • Test Coverage: 36 unit tests + 35 integration tests passing (100% audio module)

🚀 Upgrade Notes

  1. Backup existing configurations before upgrading
  2. Test with non-critical projects first when using exclusive mode
  3. Use "Disable Exclusive Mode" to return to standard shared audio
  4. Check journalctl --user -u pipewire if experiencing issues
  5. Minimum Requirements: PipeWire 0.3.70+, WirePlumber 0.5+ recommended

v1.6.1

30 Nov 11:49
51251b5

Choose a tag to compare

v1.6.1 Release Notes

Maintenance Release

This is a minor update focusing on stability and maintenance since v1.6:

  • Bug fixes and minor improvements
  • Code quality and documentation updates
  • All existing functionality preserved
  • Code headers and documentation will still talk about 1.6 since this update doesn't change the fundamentals or features, introduced in v1.6

All test passing + GitHub Action pipline is green.

v1.6

29 Nov 20:44
8369670

Choose a tag to compare

Pro Audio Config v1.6 Release Notes

🎉 Major New Feature: Configuration Scope & Enhanced Reliability

I'm excited to announce the release of Pro Audio Config v1.6, featuring flexible configuration scope and a robust multi-approach configuration system that ensures your audio settings apply reliably across all environments!

✨ What's New

🔧 Configuration Scope System

  • User vs System-Wide: Toggle between user-specific (~/.config/pipewire/) and system-wide (/etc/pipewire/) configuration
  • Persisted Preferences: Automatic saving of your configuration scope preference
  • Admin Authentication: Secure privilege escalation for system-wide changes
  • Conflict Prevention: Automatic cleanup of opposite scope configurations to ensure settings apply correctly

🛡️ Multi-Approach Configuration System

  • Primary: PipeWire config fragments with user/system directory support
  • Fallback: WirePlumber JSON configuration (versions >= 0.5)
  • Legacy: WirePlumber Lua configuration (versions < 0.5)
  • Emergency: Direct modification of main pipewire.conf as last resort

🔍 Enhanced Reliability Features

  • Automatic Redetection: Devices automatically rediscovered after service restart
  • Settings Verification: Comprehensive validation that applied settings match expected values
  • Enhanced Device Resolution: Improved device detection with better fallback logic
  • Robust Path Handling: Secure path expansion for reliable configuration file management

📊 Technical Improvements

  • WirePlumber Version Detection: Automatic detection and appropriate configuration generation
  • Configuration Cleanup: Smart removal of old config files to prevent conflicts
  • Service Management: Improved audio service restart with better error handling
  • Preference Management: TOML-based preference storage with serde serialization

🛠️ For Developers

  • Extended API: New functions for user/system configuration management
  • Debug Utilities: Built-in WirePlumber configuration debugging tools
  • Cross-Version Compatibility: Support for all WirePlumber versions (0.4+)
  • Comprehensive Error Handling: Better error messages and recovery paths

🎯 Why This Matters

  • Deployment Flexibility: Perfect for both individual users and multi-user environments
  • Enterprise Ready: Meets requirements for professional studio and enterprise deployments
  • Backward Compatibility: Works reliably across all PipeWire/WirePlumber versions
  • Professional Workflows: Supports complex audio production setups with separate input/output configurations

🐛 Bug Fixes & Optimizations

  • Fixed configuration scope conflicts between user and system settings
  • Improved privilege escalation security with better polkit integration
  • Enhanced configuration file priority management
  • Better handling of PipeWire service restarts
  • Optimized device detection after configuration changes

📈 Test Results

Enhanced test coverage ensuring reliability:

  • ✅ Comprehensive configuration scope testing
  • ✅ Multi-approach fallback system validation
  • ✅ Cross-version WirePlumber compatibility tests
  • ✅ User vs system configuration conflict resolution
  • ✅ Service restart and settings verification tests
  • ✅ All tests passed: 63 passed, 0 failed.

🔄 Backward Compatibility

  • Full compatibility with v1.5 configurations and settings
  • Seamless upgrade path from previous versions
  • Preserved workflows with enhanced reliability

Stop fighting config files. Start making great audio with confidence.

v1.5

23 Nov 21:37
3213bed

Choose a tag to compare

Pro Audio Config v1.5 Release Notes

🎉 Major New Feature: Separate Input/Output Configuration

I'm excited to announce the release of Pro Audio Config v1.5, featuring a complete overhaul of the user interface with dedicated input and output configuration tabs!

✨ What's New

🖥️ Multi-Tab Interface

  • Output Tab: Configure playback devices (speakers, headphones, HDMI outputs)
  • Input Tab: Configure recording devices (microphones, audio interfaces, line inputs)
  • Independent Settings: Each tab maintains separate configurations for optimal audio setup

🔧 Advanced Configuration

  • Dedicated WirePlumber Configs: Separate configuration generators for input vs output devices
  • Independent Signal Handlers: Each tab manages its own settings and apply operations
  • Improved User Experience: Clear visual separation between recording and playback settings

📊 Technical Improvements

  • Comprehensive Testing: 89 tests passing across all modules
  • Robust Error Handling: Improved error messages and recovery mechanisms
  • Thread-Safe Operations: Better handling of concurrent device detection and configuration
  • Enhanced Validation: More thorough validation of audio settings and device patterns

🛠️ For Developers

  • Modular Architecture: Clean separation between input/output functionality
  • Extensible Design: Easy to add new audio backends and device types
  • Comprehensive Test Suite: 38 unit tests + 51 integration tests ensuring reliability

🐛 Bug Fixes & Optimizations

  • Migrated entire codebase from Rust 2021 to Rust 2024 edition
  • Improved device detection reliability
  • Better handling of virtual audio devices
  • Enhanced privilege escalation security
  • Optimized WirePlumber configuration generation

📈 Test Results

All 89 tests passing:

  • ✅ 38 unit tests
  • ✅ 14 audio integration tests
  • ✅ 27 comprehensive integration tests
  • ✅ 10 UI integration tests

Stop fighting config files. Start making great audio.

v1.3

19 Nov 14:08
dd96573

Choose a tag to compare

Pro Audio Config v1.3 Release Notes

🚀 Major Improvements

  • Complete Codebase Restructuring: Split monolithic architecture into focused modules (audio, config, ui)
  • Enhanced Device Detection: Smart categorization by connection type (USB, PCI, HDMI) without brand dependencies
  • Robust Input Validation: Comprehensive settings validation with user-friendly error messages
  • Professional UI: Non-selectable separators and better device organization

🔧 Technical Enhancements

  • Type-safe configuration management with ScriptGenerator and ServiceConfig
  • Extensive integration test suite with CI support
  • Improved error handling and resilience throughout
  • Better code organization following Rust best practices

🐛 Bug Fixes

  • Fixed separator selection issue in device dropdown
  • Corrected PipeWire buffer size detection (was reading quantum-floor instead of quantum)
  • Resolved device ID validation edge cases

⚠️ Breaking Changes

  • apply_audio_settings_with_auth_blocking moved from audio to config module

Upgrade Note: Update imports if using the library directly.

Code Quality

  • 31 passing tests across all modules
  • Clean separation of concerns
  • Future-proof device detection
  • Maintainable architecture

v1.2

19 Nov 02:40
53a3006

Choose a tag to compare

UI enhancements and addition of device selection to configure.

v1.0

17 Nov 21:30

Choose a tag to compare

First release, new updates and quality improvements will come soon