Repository navigation
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