Skip to content

v1.4.0-alpha

Latest

Choose a tag to compare

@gottesman gottesman released this 04 Oct 16:11
· 1 commit to tauri since this release

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