🎉 Version 3.0.0+197 - The Plugin Era: Local Music, Equalizer & 'bex' Engine
Note 🚀
Welcome to Version 3.0.0! This is a massive milestone release focusing on our brand-new Rust-backed plugin architecture ([bex]), alongside highly requested features like Local Music Support, Global Equalizer, and Crossfade.
This update completely redefines the foundation of the app. By shifting to a modular plugin system, we are opening the doors to endless customization and stability. Plus, we're giving you ultimate control over your audio experience with an equalizer, seamless crossfade, karaoke lyrics, and the ability to finally play your local music library!
✨ What's New: Major Features
- 🎧 Local Music Support:
- Play Your Own Files: Full support introduced for browsing and playing local music files directly from your device.
- 🎛️ Ultimate Audio Control:
- Equalizer: Fine-tune your sound! Global equalizer support is now available for all devices 😊.
- Crossfade: Seamlessly blend tracks together. Crossfade is now supported everywhere (defaulted to 2s).
- 🎤 Upgraded Lyrics Experience:
- Karaoke Mode: Karaoke-style lyrics are now the default player view.
- Lyrics Offset: Are your lyrics not quite syncing up? You can now manually offset them for perfect timing.
- 🧩 The New Plugin Engine [bex]:
- Rust-Backed Runtime: Introduced a powerful, Rust-backed plugin system built with waclay + wasmi. Handles loading, unloading, execution, and automatic background updates.
- Expanded Plugin Types: Support for
contentResolver,chartProvider,lyricsProvider,searchSuggestionProvider, andcontentImporter. - Smart Repositories: Includes hosted repository bootstrapping, one-time setup flows, caching, and country-aware plugin distribution.
- 🔄 Smart Library Management:
- Smart Replace: Automatically revive "dead" remote songs in your playlist by finding and replacing them with working tracks.
- Refresh Metadata: Easily refresh old or fuzzy track metadata.
- Playlist Pinning: You can now pin and natively reorder playlists in your library.
- 🌍 Expanding Localization:
- More Languages: Strings are being heavily localized. Currently implemented languages are Hindi, English, Korean, Chinese and Japanese etc. You will soon have the app fully translated into your native language!
- 🎨 UI/UX Refreshes:
- Visual Upgrades: Redesigned the mini-player and player settings. Enhanced browsing experiences for charts, search, and playlists. Modernized the app's theme using
withValuesfor visual consistency. - Keyboard Shortcuts: Added desktop-focused shortcut improvements and refined the shortcut feedback indicator.
- Visual Upgrades: Redesigned the mini-player and player settings. Enhanced browsing experiences for charts, search, and playlists. Modernized the app's theme using
⚙️ Under the Hood Changes
- 🏗️ Architecture Migration (v3 line):
- Shifted away from tightly coupled source integrations to a modular, plugin-first foundation.
- Massive data/storage refactoring across repository/DAO/state boundaries to support plugin-native IDs.
- 📥 Downloader Evolution:
- Major portions of the downloading workflow have been moved to Rust-backed internals with an improved tracking pipeline.
- 🤖 Smart Playback & Resolution:
- Unified Playback: Improved coexistence between local content pathing and remote plugin resolutions.
- Cross-Plugin Fallbacks: Added fallback and replacement logic for unavailable tracks and dead source links. Added stronger recovery paths for failed streaming operations.
- 👨💻 Developer Notes:
- Legacy source-specific identifiers are retained only where required for migration compatibility. The recommended integration path is now fully plugin-based via repository manifests and
.bexpackages.
- Legacy source-specific identifiers are retained only where required for migration compatibility. The recommended integration path is now fully plugin-based via repository manifests and
🛠️ Key Fixes & Stability
- 📱 Player Engine Stability:
- Queue & Transitions: Refactored the queue, transitions, crossfade flow, and error handling to drastically reduce edge-case dead states, skip/advance races, and stale resolver transitions.
- ⚙️ Settings & Defaults Sync:
- Startup Accuracy: Fixed mismatch bugs where UI default settings (like Stream Quality reverting to lower quality or Crossfade disabling on first launch) differed from runtime behavior. Stream Quality defaults are now strictly aligned to
High.
- Startup Accuracy: Fixed mismatch bugs where UI default settings (like Stream Quality reverting to lower quality or Crossfade disabling on first launch) differed from runtime behavior. Stream Quality defaults are now strictly aligned to
- 🐛 Bootstrap & Plugin Fixes:
- Setup Stalls Fixed: Resolved plugin setup stalls during early bootstrap caused by strict network/country resolution paths. Removed fragile reachability gates that caused false "offline" failures.
- Auto-Update Gating: Fixed an issue that skipped valid plugin updates under older manifest formats. Improved retry resilience for repository/bootstrap failures.
- 📱 UI State Sync:
- Interface Reliability: Fixed numerous UI state syncing issues across the search, playlist, and details surfaces.
Full Changelog: v2.13.3+188...v3.0.0+193