Skip to content

2.5.0

Choose a tag to compare

@github-actions github-actions released this 09 May 14:59
· 109 commits to main since this release
0b2b233

JRiver Remote 2.5.0

Highlights

  • Server-less Offline Startup. The app can now be used without ever logging into a JRiver Media Center server. A new "Continue Offline" button on the login screen lets you jump straight into your downloaded library.
  • Album Download Progress. When downloading entire albums, you now see a combined progress indicator directly in the album list. No more guessing when a bulk download is finished.
  • Improved Playback Stability. Several critical race conditions in the local player have been fixed, ensuring that playback doesn't stop unexpectedly when background downloads complete or when managing large queues.

What's new

Offline Mode

  • "Continue Offline" button: New entry point on the server setup screen for a fully local experience.
  • Persistent Offline State: If you were using the Offline zone when you last closed the app, it will now automatically return to that state on launch, bypassing the network check and login screen.
  • Aggregated Album Progress: Added AlbumDownloadProgressIndicator which calculates the combined download status of all tracks in an album.
  • Intelligent Queue Management: The player now only reloads the playback queue if a newly finished download is actually in the current list, reducing unnecessary audio engine restarts.

Playback & Controls

  • Synchronized Queue Reloads: Implemented a locking mechanism in LocalPlayer to prevent race conditions when multiple tracks finish downloading simultaneously. Playback state (playing/paused) is now reliably preserved.
  • Safer Queue Modifications: Properly awaited all asynchronous audio engine operations (insertion, movement, removal), eliminating "RangeError" crashes during batch track deletions.
  • Context-Aware Mini Player: Transport controls (play, pause, next, prev) are now correctly disabled and dimmed when the playback queue is empty.
  • Fallback Labels: Improved "Unknown Artist" and "Unknown Track" displays on the mini player when no media is loaded.

UI & UX

  • Refined Logout Path: In Offline Mode, the "Logout" button now dynamically changes to "Setup Server / Login" with a matching icon, providing a clear path back to server configuration.
  • Detailed Player Logging: Enhanced internal logging to include full snapshots of the playback sequence (shuffle state, indices, track names), making future diagnostics much faster.

Fixes

  • MCWS "Play" Action: Fixed a bug where selecting "Play" from an album's menu would only append the tracks to the queue instead of starting playback immediately.
  • Typo in MCWS Headers: Corrected a syntax error in the auth token header that could cause intermittent connection issues on some platforms.
  • Stuck Offline State: Fixed a circular dependency that could crash the app when transitioning from the login screen to offline mode.

Migration notes for developers

  • New Synthetic Session: Added ServerInfo.offline constant to represent a server-less session. Repositories should check for empty addresses to skip network calls.
  • Provider Synchronization: LocalPlayer now uses _isReloading and _reloadRequestedDuringReload flags. Custom modifications to _reloadWithNewQuality must respect this locking pattern.
  • Updated LocalPlayerService: Methods like removeTrack, moveTrack, and insertTracksAt are now Future<void> and MUST be awaited.