Highlights
- Eliminated the Symphonia/yt-dlp download pipeline in favor of a pure ffmpeg + Riva resolver stack; playback now streams PCM directly from ffmpeg with zero intermediate files (decoder.rs, mod.rs).
- Added a first-class ffmpeg bootstrapper that transparently downloads the latest BtbN build into
~/.resonix/binon Linux/Windows when no system binary is available (ffmpeg.rs, main.rs). - Queueing is smarter: enqueued tracks are pre-resolved, logged, and players now block on a
Notifyinstead of hot-looping, so idle nodes no longer busy-wait (handlers.rs, player.rs).
Breaking Changes
[resolver]config no longer acceptsytdlp_pathorpreferred_format, and the deprecated environment variablesYTDLP_PATH,RESONIX_YTDLP_BIN,RESONIX_TOOLS_DIR, etc. have been removed. UseFFMPEG_PATHif you need a custom binary (mod.rs, Resonix.toml).- All on-disk encryption helpers (enc.rs) and tool-management code (tools.rs) were deleted; temporary media files are now plain and cleaned up immediately (source.rs).
- The resolver depends on Spotify credentials when resolving Spotify links; without
SPOTIFY_CLIENT_ID/SECRETSpotify URLs now error early (mod.rs).
Improvements & Fixes
enqueuenow logs and reuses resolver output, storing prepared paths when the resolver yielded a local file, which avoids double downloads and cuts queue latency (handlers.rs).Playergained deterministic temp-file cleanup, queue notifications, richer tracing, and now always reuses the configured ffmpeg binary without cascading fallbacks (player.rs).- Startup checks were simplified: we only verify ffmpeg, fall back to the bundled installer if possible, and bail with actionable errors otherwise (main.rs).
- Resolver logic moved to Riva extractors with regex-based YouTube search scraping, configurable timeouts, and retry logic that only retries on probe/codec failures (mod.rs).
Full Changelog: v0.2.8...v0.3.0