UNPKG

desktop-audio-proxy

Version:

A comprehensive audio streaming solution for Tauri and Electron apps that bypasses CORS and WebKit codec issues

224 lines (182 loc) 8.99 kB
# Changelog All notable changes to Desktop Audio Proxy will be documented in this file. ## [1.1.1] - 2025-07-01 ### Quality & Reliability Improvements #### New Framework Integration Features - **React Hooks Support** - `useAudioProxy()` - Complete audio URL processing with loading states - `useAudioCapabilities()` - System codec detection and device enumeration - `useProxyStatus()` - Real-time proxy server monitoring - `useAudioMetadata()` - Audio file metadata extraction (Tauri/Electron) - `AudioProxyProvider` - Global configuration context provider - Full TypeScript support with comprehensive type definitions - **Vue Composables Support** - `useAudioProxy()` - Reactive audio URL processing with Vue refs - `useAudioCapabilities()` - Reactive system capabilities detection - `useProxyStatus()` - Reactive proxy server status monitoring - `useAudioMetadata()` - Reactive metadata extraction (Tauri/Electron) - `createAudioProxy()` - Vue plugin for global configuration - Complete Vue 3 Composition API integration - **Framework Integration Benefits** - One-line audio proxy integration for React/Vue applications - Automatic reactive state management for loading, errors, and data - Built-in retry mechanisms and error handling - Seamless integration with existing React/Vue projects - Optional peer dependencies - no framework lock-in - Comprehensive examples and usage patterns #### Code Quality Enhancements - **Enhanced TypeScript Type Safety** - Eliminated all explicit `any` warnings in core source files - Added comprehensive type declarations for Tauri and Electron APIs - Improved error handling with proper type checking throughout codebase - Added `ElectronAPI` and `TauriAPI` interfaces with full method signatures - Fixed Window interface conflicts between Tauri and Electron declarations - **Improved Code Consistency** - Fixed all ESLint and Prettier formatting issues - Eliminated unused variable warnings in type declarations - Standardized error handling patterns across all modules - Enhanced code organization and documentation ### Framework Integration Examples **React Hook Usage:** ```jsx import { useAudioProxy, useAudioCapabilities } from 'desktop-audio-proxy/react'; function AudioPlayer({ url }) { const { audioUrl, isLoading, error, retry } = useAudioProxy(url); const { capabilities } = useAudioCapabilities(); if (isLoading) return <div>Loading...</div>; if (error) return <div>Error: {error} <button onClick={retry}>Retry</button></div>; return <audio controls src={audioUrl} />; } ``` **Vue Composable Usage:** ```vue <script setup> import { ref } from 'vue'; import { useAudioProxy, useAudioCapabilities } from 'desktop-audio-proxy/vue'; const url = ref('https://example.com/audio.mp3'); const { audioUrl, isLoading, error, retry } = useAudioProxy(url); const { capabilities } = useAudioCapabilities(); </script> <template> <div v-if="isLoading">Loading...</div> <div v-else-if="error">Error: {{ error }} <button @click="retry">Retry</button></div> <audio v-else controls :src="audioUrl" /> </template> ``` ## [1.1.0] - 2025-06-30 ### Added - **Enhanced Tauri Integration** - Real system audio info detection via `invoke('get_system_audio_info')` - Audio metadata extraction with `getAudioMetadata(filePath)` method - Audio device enumeration with `getAudioDevices()` method - Enhanced codec detection with system-level capabilities - Full Tauri backend communication integration - **Enhanced Electron Integration** - System audio info via `electronAPI.getSystemAudioInfo()` - Audio metadata extraction via `electronAPI.getAudioMetadata(filePath)` - Audio device enumeration via `electronAPI.getAudioDevices()` - System audio settings via `electronAPI.getSystemAudioSettings()` - Electron and Chromium version detection - Complete IPC integration for audio capabilities - **Advanced Codec Detection** - Comprehensive format testing (MP3, OGG, WAV, AAC, FLAC, WEBM, M4A) - Codec-specific testing with detailed capabilities mapping - Enhanced support reporting with granular codec information - Platform-specific codec enhancement integration - **Improved URL Processing** - Enhanced local file detection for `blob:` and `data:` URLs - Better Tauri `convertFileSrc` integration with error handling - Improved fallback mechanisms for file conversion failures ### Enhanced - **Error Handling** - Comprehensive error handling and logging throughout all services - **Type Safety** - Enhanced TypeScript types for all new methods and capabilities - **Platform Integration** - Deep integration with platform-specific audio APIs ### Technical Improvements - Enhanced system-level audio integration hooks - Improved cross-platform compatibility and feature detection - Optimized code structure - **Interactive Demo** - Comprehensive web demo with real library integration testing - Auto-detection of available package builds (local, CDN, various formats) - Dynamic version detection from proxy server health endpoint - Feature showcase for v1.1.0 capabilities (codec detection, metadata, devices) - Real-time CORS testing with direct URL vs proxy comparison - Enhanced debugging tools with exposed internals for manual testing - Visual upgrade guidance for users on older versions - Multiple version conflict detection and warnings - **Professional CLI Demo** - Terminal-based interface with professional ASCII art - Real-time system status matrix with live proxy detection - Interactive command system for URL testing and diagnostics - Automatic proxy server scanning across multiple ports (3002, 3001, 3003) - Smart user guidance with helpful tips when proxy is offline - Environment detection showing "Node.js CLI" for terminal usage ### Fixed - **Version Detection** - Web and CLI demos now dynamically detect library version from proxy server - **Proxy Status Detection** - Real-time proxy availability checking instead of hardcoded values - **Multiple Version Handling** - Proper detection and warnings for conflicting installed versions ### Developer Experience - Enhanced debugging with comprehensive logging - Better error messages with context-specific information - Improved TypeScript IntelliSense with complete method signatures - Platform-specific method availability based on environment detection - Professional CLI interface for terminal-based testing and diagnostics - Smart user guidance system with automatic helpful tips ## [1.0.3] - 2025-06-29 ### Added - Comprehensive Jest test suite with TypeScript support - ESLint and Prettier configuration for code quality - GitHub Actions CI/CD pipeline with automated testing - GitHub issue templates (bug report, feature request, question) - GitHub pull request template for structured contributions - Security policy with vulnerability reporting guidelines - Electron-specific integration example with preload script patterns - Code of conduct for community guidelines ### Changed - Updated npm scripts to support Jest testing alongside legacy tests ### Developer Experience - Added `npm run test:watch` for continuous testing during development - Added `npm run test:coverage` for coverage reports - Added `npm run lint:fix` for automatic code formatting - Enhanced TypeScript configuration for better development experience ## [1.0.2] - 2025-06-29 ### Fixed - Minor bug fixes and stability improvements - Updated dependencies to latest stable versions ## [1.0.1] - 2025-06-28 ### Fixed - Package.json export configuration - TypeScript type definitions paths ## [1.0.0] - 2025-06-27 ### Added - Initial release of Desktop Audio Proxy - `AudioProxyClient` for handling URL conversion and environment detection - `AudioProxyServer` for CORS bypass and streaming proxy - `TauriAudioService` with Tauri-specific optimizations - `ElectronAudioService` with Electron-specific handling - Automatic environment detection (Tauri/Electron/Web) - Smart proxy detection and fallback mechanisms - Support for local file handling with `convertFileSrc` - Comprehensive TypeScript types and interfaces - Health check and stream info endpoints - Configurable CORS, timeout, and redirect settings - Examples for Tauri integration and standalone usage ### Features - ✅ CORS bypass for external audio URLs - ✅ Automatic proxy detection and usage - ✅ Environment-specific URL handling - ✅ Smart fallback to original URLs - ✅ Retry mechanisms with configurable attempts - ✅ Stream info and health check endpoints - ✅ Support for redirects (podcasts, streaming URLs) - ✅ TypeScript support with full type definitions - ✅ ES modules and CommonJS builds - ✅ Comprehensive documentation and examples ### Tested With - Node.js 14+ ✅ - Tauri 1.x ✅ - Electron 20+ ✅ - Modern browsers ✅ - Various audio formats (MP3, OGG, WAV, etc.) ✅ - Podcast URLs with multiple redirects ✅ - Radio streaming URLs ✅