Skip to content

Releases

v1.4.0-alpha

Choose a tag to compare

@gottesman gottesman released this 04 Oct 16:11

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 under server/)
  • 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.rs and refinements across cache.rs, playback.rs, commands.rs, paths.rs, and utils.rs to unify media lifecycle, caching, and playback controls
  • Remove legacy server/server.js orchestration 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, and pluginScripts.ts integration 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.tsx and 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.tsx adapted 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.json entries 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.rs with 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

Choose a tag to compare

@gottesman gottesman released this 30 Sep 07:39

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

v1.2.8-test Pre-release
Pre-release

Choose a tag to compare

@gottesman gottesman released this 24 Sep 07:57

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

v1.2.5-test Pre-release
Pre-release

Choose a tag to compare

@gottesman gottesman released this 23 Sep 06:18

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)

Pre-release

Choose a tag to compare

@gottesman gottesman released this 21 Sep 11:39

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.