Repository navigation
Releases
v1.4.0-alpha
Release v1.4.0-alpha: Native Rust Source & Plugin System, Node-less Audio Discovery, and Stability Hardening
🧱 Core Architecture & Platform
- Eliminate hard dependency on the historical Node server for audio source search; begin decommission of
server/managers and routes (large set of deletions underserver/) - Introduce new Rust backend modules (
plugins.rs,scrape.rs,scrapers.rs,torrents.rs,youtube.rs) for native handling of search, extraction, torrent orchestration, and YouTube media resolution - Add
audio_settings.rsand refinements acrosscache.rs,playback.rs,commands.rs,paths.rs, andutils.rsto unify media lifecycle, caching, and playback controls - Remove legacy
server/server.jsorchestration layer and related managers (CacheManager, Torrent*, YtDlpManager, Search, middleware, helpers) now superseded by native logic - Streamline Tauri configuration (updated
tauri.conf.json,Cargo.toml) to bundle only what is required for the leaner architecture - Migrate torrent engine from the JavaScript/WebTorrent stack to native
librqbit, providing a more complete protocol implementation, lower overhead, better piece scheduling, and improved reliability under concurrent downloads
🔌 Plugin System (First Iteration)
- New runtime plugin manifest & loader pipeline:
public/plugins/index.json, example plugin updates, andpluginScripts.tsintegration on the frontend - Manifest-driven activation enabling hot-loaded source / search providers without rebuilding core app
- Safer sandbox boundaries: plugins expose declarative capabilities instead of arbitrary execution
- Foundation laid for future community source providers (torrent indexes, alt metadata, enrichment layers)
🎧 Audio Source & Caching Improvements
- Refactored
audioSource.tsxand related helpers to call native commands directly instead of proxying through Node - More deterministic cache path resolution and cleanup via Rust-side orchestration
- Reduced latency for initial stream resolution (fewer IPC hops, eliminated Node process spin-up)
- Preparatory hooks for adaptive source fallback logic (multiple mirrors / plugin-provided candidates)
🛠 Frontend & UI Enhancements
- Updated panels and center views (
CenterPanel/*,LeftPanel/*,Player,SmallPlayer) to leverage new command set and plugin-provided metadata TrackSources.tsxadapted to native discovery responses (simplified inflight state + clearer cache status)- Download & Queue panels hardened to resolve real track names consistently and survive transient backend restarts
- Context menu and settings refinements for upcoming plugin toggles & debugging
- Appearance runtime extraction (
appearanceRuntime.ts) enabling lighter theme recalculation without full component refresh
🌍 Internationalization & Content
- Updated
en.json/es.jsonentries for new settings, plugin terminology, and diagnostics - Improved i18n helper resilience during early app bootstrap
🧠 Core Logic & Data Layer
- Database & playlists modules tuned for reduced redundant queries under higher concurrency
- Spotify / Genius handling refined with stricter error boundaries and fallback market logic
- Unified alerts & logging (
FrontendLogger.tsx,alerts.tsx) to reflect native-layer failures with actionable context - Refined appearance + runtime persistence to avoid stale caches between alpha upgrades
🪛 Tooling, Config & Build
- Version bump to 1.4.0-alpha (
package.json) - Task updates (
.vscode/tasks.json) aligning workflows with diminished Node server role (focus on Rust builds & typecheck) - Pruned obsolete server build artifacts and scrapers config
- Continuous type safety passes across refactored core modules
🧪 Stability & Resilience
- Reduced points-of-failure by retiring multiple JS manager layers (Pid/Log/Error/Torrent Managers)
- Native torrent & YouTube handling decreases IPC churn and clarifies failure surfaces
- More explicit command routing in
commands.rswith structured errors returned to React layer - Early safeguards for plugin manifest validation (reject malformed capability sets)
- Improved splash / startup ordering to ensure readiness signals only after native subsystems mount
� Removed / Decommissioned (Legacy Node Layer)
Removed directories & files (representative list):
server/*, WebTorrent shims, YtDlp helpers. These responsibilities are now partially or fully reimplemented in Rust; remaining features will migrate fully before stable.
📚 Docs & README
- README updated to reflect evolving architecture (native-first sourcing, plugin system intro, reduced Node footprint)
- Clarified future direction for multiplatform portability (leaner binary + manifest-driven extensions)
- Noting alpha caveats: plugin API may change; legacy server features still in transition
⚠️ Alpha Notes / Known Gaps
- Some advanced torrent edge cases and multi-source fallback still under active development
- Plugin security model is minimal
- Rendering optimizations maybe lacking
Full Changelog: v1.3.0-test...v1.4.0-alpha
v1.3.0-test
Release v1.3.0-test: README overhaul, env config, Spotify endpoint docs, sources/downloads refactor, and Tauri/cache updates
🚀 Highlights
- Add prominent WIP warning and real-world Usage section to README
- Restore and document Spotify External Token Endpoint (Cloudflare Worker)
- Introduce .env.example and clarify how envs are resolved (AccessEnv + VITE_ overrides)
- Centralize byte size utilities and adopt across UI
- Refactor sources and downloads for better performance and correctness
- Update Tauri cache/playback internals and server routes for reliability
📚 Docs & Setup
- README.md
- Add Work-In-Progress warning and realistic “Usage” flow
- Simplify development/build instructions (Tauri-first)
- Revise Environment Setup to explain AccessEnv resolution order (VITE_* ➜ process.env ➜ defaults)
- Restore Spotify “External Token Endpoint (recommended)” with Worker example and deploy steps
- Add Roadmap updates (proxy settings, modding, richsync perf, custom installs) and long-term multiplatform goals (Windows, Linux, Android)
- .env.example (new)
- Provide SPOTIFY_TOKEN_ENDPOINT, CHARTS_SPOTIFY_ENDPOINT, GENIUS_ENDPOINT and VITE_* overrides
- Include APP_USER_AGENT and SPOTIFY_DEFAULT_MARKET with VITE_* variants
⚙️ Environment Management
- src/core/AccessEnv.tsx (env resolver)
- Support overrides from import.meta.env (VITE_*) and process.env with safe fallbacks
- Keys: SPOTIFY_TOKEN_ENDPOINT, CHARTS_SPOTIFY_ENDPOINT, GENIUS_ENDPOINT, SPOTIFY_DEFAULT_MARKET, APP_USER_AGENT
🎛️ Frontend
- src/components/Utilities/Helpers.tsx
- Add parseByteSizeString and formatBytes; replace ad-hoc size math
- src/components/Utilities/TrackSources.tsx
- Optimize rendering and state management; dedupe inflight checks; improve cache-status flow
- Use shared helpers for sizes; improve file list efficiency and selection logic
- Better download progress handling and cached-state detection
- src/components/RightPanel/Downloads.tsx
- Use shared formatBytes; ensure UI shows track names from DB, not IDs/hashes
- src/components/RightPanel/Queue.tsx, Settings.tsx, styles/*
- Minor UI/UX tweaks and styling adjustments
🧠 Core Logic
- src/core/Downloads.tsx
- Normalize IDs, resolve real track names via DB, and refactor event handlers to reduce duplication
- src/core/SpotifyClient.tsx, src/core/Genius.tsx, src/core/Lyrics.tsx, src/core/Database.tsx
- Targeted fixes and enhancements to metadata fetching and persistence
🖥️ Tauri / Backend
- src-tauri/src/cache.rs, playback.rs, main.rs; Cargo.toml; tauri.conf.json
- Cache and playback robustness improvements and config updates
- server/managers/YtDlpManager.js; server/routes/{youtube,torrent}.js
- Stability and integration updates around YouTube DL and torrent handling
- webpack.server.config.js
- Build pipeline adjustments for server bundle
🧰 Tooling & Infra
- .vscode/tasks.json
- Add tasks for typecheck, server bundle build, Tauri dev/build
- package.json, scripts/update-version.js, .gitignore
- Version bump to 1.3.0-test and small maintenance tweaks
🧩 New Files
- .env.example — environment configuration example
- server/utils/shims/node-datachannel.js — shim for server-side dependencies
⚠️ Notes / Known Limitations
- App is a WIP and may be unstable; source reliability can vary
- Proxy settings and some UX polish are in progress
- Custom installation paths are being hardened to avoid breakage
✅ Summary
This release focuses on real-world setup clarity (README + env), secure metadata access via an external Spotify token endpoint, and meaningful optimizations across sources, downloads, and caching. It also tightens Tauri/backend integration and improves overall reliability while laying groundwork for future multiplatform targets.
v1.2.8-test
Release v1.2.8-test: Major Download Performa## ⚡ Performance Improvements
Download Engine Optimization
- 10-100x Progress Event Reduction: Throttled progress events from per-chunk to time/size-based thresholds
- 2-10x I/O Performance: Buffered file writes with 64KB buffer for optimal disk performance
- Direct CDN Access: YouTube downloads now use direct googlevideo.com URLs bypassing localhost streaming
- Reduced Lock Contention: Batched mutex operations for better concurrent download performance
Frontend Optimization
- TrackSources Rendering: Optimized component with memoization and efficient state management
- Cache Management: Intelligent cache TTL and duplicate source prevention
- UI Responsiveness: Reduced re-renders through optimized effect hooks and state helpers
- Memory Efficiency: Better cleanup and resource management in React components
🏗️ Technical Architecture
New Module Structure
- PathConfig System: Centralized path management with proper OS-specific handling
- BackendLogger: Structured logging with file rotation and error categorization
- Download Manager: Enhanced download orchestration with throttling and buffering
- Cache Architecture: Improved cache initialization and directory management
Enhanced Error Handling
- Structured Logging: Comprehensive error tracking across backend, frontend, and server
- Graceful Degradation: Better fallback mechanisms for failed operations
- Resource Cleanup: Proper cleanup of partial downloads and temporary files
- Status Monitoring: Real-time status tracking for server and download operationsation, System Architecture Improvements, and Enhanced Logging
🚀 Major Features & Improvements
Download Performance Revolution
- ⚡ YouTube Download Speed Fix: Eliminated the "1% per second" download bottleneck by bypassing localhost streaming for direct googlevideo.com URLs
- 🎯 Smart URL Resolution: Implemented intelligent detection of direct YouTube CDN URLs to avoid unnecessary localhost routing
- 📊 Progress Event Throttling: Reduced IPC overhead by throttling progress events to every 250ms OR 512KB instead of per-chunk emissions
- � Buffered I/O Implementation: Added 64KB BufWriter for efficient batched file writes, dramatically improving download I/O performance
- 🚀 Mutex Optimization: Reduced lock contention by batching inflight download tracking updates with progress events
System Architecture Enhancements
- 🏗️ Modular Path Management: Introduced dedicated PathConfig system with centralized path configuration and proper audio cache directory structure
- 📝 Advanced Logging System: Implemented comprehensive BackendLogger with structured file-based logging for backend, frontend, and server components
- � Cache Directory Fix: Resolved audio cache directory duplication issue (audio_cache/audio_cache → audio_cache)
- � Binary Management: Enhanced binary fetching and validation for YouTube-DL and BASS dependencies
TrackSources Component Optimization
- 🎨 Complete UI Refactor: Massive performance optimization with extracted utility functions and memoized computations
- ⚡ State Management Overhaul: Simplified state updates with helper functions, reducing re-renders and improving responsiveness
- 🔄 Cache Logic Consolidation: Streamlined cache management with intelligent TTL handling and duplicate prevention
- 📊 Effect Hook Optimization: Combined multiple useEffect hooks to minimize side effects and improve performance
- � Rendering Optimization: Added React.memo and useMemo for expensive operations like source validation and filtering
Server & Backend Improvements
- � Enhanced Error Handling: Improved error reporting and logging across torrent file management and YouTube processing
- 📈 Log Management: Advanced LogManager with file rotation, size limits, and structured error reporting
- � Server Status Monitoring: Enhanced server process management with better PID tracking and status reporting
- 🔄 Resource Cleanup: Improved resource management and cleanup in torrent and streaming operations
🐛 Critical Bug Fixes
Download System Fixes
- ❌ YouTube Streaming Bottleneck: Fixed downloads being artificially limited to ~1% per second by eliminating unnecessary localhost routing
- 🎯 Direct URL Detection: Resolved issue where direct googlevideo.com URLs were being re-resolved through localhost streaming
- 📁 Cache Directory Structure: Fixed nested audio_cache/audio_cache directory creation causing file path issues
- 🔄 Progress Event Flood: Eliminated performance-killing progress event spam (thousands per second) during downloads
System Stability Improvements
- 🛠️ Path Resolution: Fixed inconsistent path handling across different operating system environments
- 📊 Logging Crashes: Resolved logging system crashes and improved error handling for file I/O operations
- 🔧 Memory Leaks: Fixed potential memory leaks in download progress tracking and inflight operations management
- ⚡ Concurrent Access: Improved thread safety in cache operations and download state management
⚡ Performance Improvements
- Lyrics Rendering: GPU-accelerated animations with optimized CSS transforms
- Component Loading: Faster initialization with shared utility functions
- Memory Usage: Reduced memory footprint through code consolidation
- Transition Smoothness: Optimized opacity and transform animations for fluid experience
� Technical Architecture
- Component Unification: Single source of truth for player functionality
- Hook Optimization: Custom hooks for data fetching and state management
- TypeScript Enhancement: Improved type safety across player components
- CSS Performance: Modern CSS features for hardware acceleration
🎨 UI/UX Enhancements
- Improved TrackSources Interface: Better performance and responsiveness in source selection
- Enhanced Progress Reporting: More accurate and smooth download progress indicators
- Error Messaging: Better user feedback for download failures and system issues
- Source Validation: Improved visual feedback for source availability and quality
📦 Technical Improvements
- Audio cache directory structure completely fixed and optimized
- Download performance increased from ~1% per second to full network speed
- Progress event system redesigned for minimal IPC overhead
- File I/O operations optimized with buffering for better disk performance
- Comprehensive logging system for better debugging and monitoring
- Enhanced binary management and validation system
- Improved error handling and recovery mechanisms
🔄 Breaking Changes
- Audio cache directory structure changed (removes duplicate nesting)
- Progress event frequency reduced (may affect UI update patterns)
- Logging output format enhanced with more structured information
🎯 Developer Experience
- Enhanced Debugging: Comprehensive logging system with file-based output
- Better Error Tracking: Structured error reporting across all system components
- Performance Monitoring: Detailed metrics for download and cache performance
- Code Organization: Modular architecture with clear separation of concerns
📋 Notes
- Version bump to 1.2.8-test
- Major focus on download performance and system reliability
- Direct YouTube CDN integration for optimal streaming performance
- Comprehensive system architecture improvements
- Enhanced error handling and logging throughout the application
- All optimizations maintain backward compatibility where possible
TODO
- Fix BMP format for sidebar with error: "warning 5040: Unsupported format src-tauri\icons\installer-sidebar.bmp (macro:MUI_WELCOMEPAGE_GUIINIT:9)"
- Test if the Download's throtling bug is completly resolved
This release transforms the download experience from frustratingly slow to blazing fast while establishing a robust foundation for future development through improved architecture and comprehensive logging systems.
v1.2.5-test
Release v1.2.5-test: Picture-in-Picture Mode, Player Optimization, and Enhanced User Experience
🚀 Major Features & Improvements
Picture-in-Picture (PiP) Mode
- ✅ Full PiP Implementation: Complete Picture-in-Picture mode with seamless window transitions
- 🎯 Smart Position Memory: Automatic window position persistence and restoration between PiP modes
- 🎨 Smooth Transitions: Elegant opacity animations (0.3s) to prevent visual glitches during mode changes
- 📌 Always-On-Top Integration: Pin button in title bar with keep/keep_off icons for window control
- ⚡ Optimized Window Management: Efficient Tauri window API integration with proper state handling
Component Architecture Optimization
- 🔧 Massive Code Reduction: Unified Player component eliminates 95% code duplication between MainPlayer and SmallPlayer
- 🎛️ Variant-Based Design: Single Player component with 'main'/'small' variants using conditional rendering
- 📦 Shared Utilities: Extracted PlayerUtils.tsx for common functionality and event handlers
- 🚀 Performance Gains: Reduced bundle size from 1,380+ lines to ~560 lines in player components
Queue System Enhancements
- 🔄 Automatic Track Fetching: Implemented useMissingTrackFetcher hook for seamless metadata loading
- 📂 Database Integration: Enhanced queue items with Spotify API caching and merged track data
- ⚡ Loading State Management: Eliminated "Loading..." placeholders with proactive data fetching
- 🎵 Smooth User Experience: Queue items now display complete track information immediately
User Interface Improvements
- 🎨 Lyrics Performance Optimization: Enhanced CSS with GPU acceleration and smoother animations
- 📱 Responsive Design: Improved layout handling for different screen sizes and modes
- ✨ Visual Polish: Better transitions, typography improvements, and enhanced readability
- 🎯 Context Menu Enhancements: Improved user interaction patterns throughout the application
🎵 PiP Mode Technical Details
Window Management
- Position Tracking: Automatic save/restore of window coordinates
- Size Optimization: Smart resizing for optimal PiP viewing experience
- State Synchronization: Seamless data flow between PiP and main window modes
- Memory Efficiency: Proper cleanup and resource management during transitions
Always-On-Top Functionality
- Pin Toggle: Dedicated button in title bar for easy access
- Visual Feedback: Clear icon states (keep/keep_off) indicating current mode
- Integration: Deep integration with PiP mode for enhanced workflow
- Tauri API: Leverages native window management capabilities
🐛 Bug Fixes
- Fixed queue items stuck displaying "Loading..." text
- Resolved player component code duplication issues
- Eliminated visual glitches during PiP mode transitions
- Improved window state management edge cases
- Enhanced error handling in track metadata fetching
⚡ Performance Improvements
- Lyrics Rendering: GPU-accelerated animations with optimized CSS transforms
- Component Loading: Faster initialization with shared utility functions
- Memory Usage: Reduced memory footprint through code consolidation
- Transition Smoothness: Optimized opacity and transform animations for fluid experience
� Technical Architecture
- Component Unification: Single source of truth for player functionality
- Hook Optimization: Custom hooks for data fetching and state management
- TypeScript Enhancement: Improved type safety across player components
- CSS Performance: Modern CSS features for hardware acceleration
🎨 UI/UX Enhancements
- Seamless Mode Switching: Intuitive PiP toggle with visual feedback
- Responsive Layout: Adaptive design for different window modes
- Enhanced Typography: Improved readability in lyrics and UI text
- Visual Consistency: Unified design language across all components
📦 Technical Improvements
- Player component architecture completely refactored for maintainability
- Enhanced data flow patterns with optimized React hooks
- Improved CSS performance with modern animation techniques
- Better error handling and loading state management
- Comprehensive TypeScript type coverage for new features
🔄 Breaking Changes
- None - All changes are backward compatible
🎯 Developer Experience
- Code Maintainability: Significantly reduced codebase complexity
- Development Speed: Faster iteration with shared component architecture
- Type Safety: Enhanced TypeScript coverage for new PiP features
- Performance Monitoring: Better debugging capabilities for window management
📋 Notes
- Version bump to 1.2.5-test
- Major focus on user experience and performance optimization
- PiP mode ready for production testing
- Comprehensive player component refactoring complete
- Enhanced queue system with proactive data loading
- All new features designed with accessibility and performance in mind
This release provides users with a modern, efficient, and highly polished music streaming experience through innovative PiP functionality and dramatically optimized codebase architecture.
First public release (testing)
First functional and public version for Freely Player.
This may have issues, bugs, inconsistencies and unpolished UI/UX.
Windows installer is the only one attached, for now.