Skip to content

v0.3.0

Latest

Choose a tag to compare

@builtbyjonas builtbyjonas released this 06 Dec 23:13

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/bin on 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 Notify instead of hot-looping, so idle nodes no longer busy-wait (handlers.rs, player.rs).

Breaking Changes

  • [resolver] config no longer accepts ytdlp_path or preferred_format, and the deprecated environment variables YTDLP_PATH, RESONIX_YTDLP_BIN, RESONIX_TOOLS_DIR, etc. have been removed. Use FFMPEG_PATH if 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/SECRET Spotify URLs now error early (mod.rs).

Improvements & Fixes

  • enqueue now 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).
  • Player gained 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