Skip to content

feat: Added Navidrome server side "song radio" queue support - #617

Open
FormalSnake wants to merge 2 commits into
Kopuz-org:masterfrom
FormalSnake:track-radio
Open

feat: Added Navidrome server side "song radio" queue support#617
FormalSnake wants to merge 2 commits into
Kopuz-org:masterfrom
FormalSnake:track-radio

Conversation

@FormalSnake

Copy link
Copy Markdown
Contributor

Added song radio support for navidrome servers that support it. For example, Audiomuse classifies songs with a ML and adds queue support, other clients support this and Kopuz did not.
AI has been used for some parts, it has been tested by hand

Sanity Checking

  • I have read and followed the contribution guidelines.
  • My commits follow Kopuz's scoped commit convention and history hygiene
    rules.
  • I have disclosed any AI assistance as required by the AI policy in the
    contribution guidelines, or this pull request did not use AI assistance.
  • I have tested and self-reviewed my changes.

Style and Consistency

  • My changes are consistent with the existing crate boundaries and Dioxus
    style.
  • I ran cargo fmt --all --check or cargo fmt --all as appropriate.
  • I ran cargo clippy --workspace --all-targets -- -D warnings, or
    explained why it could not be run.
  • I kept generated assets, translations, and packaging files in sync when
    this change depends on them.

Testing

  • I ran the smallest relevant verifier for this change.
  • I documented any platform or verifier that I could not run.

Tested on platform(s):

  • x86_64-linux
  • aarch64-linux
  • x86_64-darwin
  • aarch64-darwin
  • Windows
  • Android
  • iOS

@coderabbitai

coderabbitai Bot commented Aug 9, 2026

Copy link
Copy Markdown
Contributor

Review Change Stack

📝 Walkthrough

Walkthrough

Subsonic now supports similar-song retrieval for radio playback. A shared converter maps songs to tracks with cover and album metadata. Playlist conversion reuses the converter.

Changes

Subsonic radio support

Layer / File(s) Summary
Similar-song API contract and client method
crates/server/src/subsonic.rs
Adds response models for getSimilarSongs2 and a client method that returns similar songs or an empty list when data is absent.
Track conversion and radio initialization
crates/server/src/source/subsonic.rs
Adds shared song-to-track conversion, reuses it for playlist entries, enables radio, and converts up to 50 similar songs into tracks.

Sequence Diagram(s)

sequenceDiagram
  participant SubsonicSource
  participant SubsonicClient
  participant SubsonicServer
  participant TrackConverter
  SubsonicSource->>SubsonicClient: request up to 50 similar songs
  SubsonicClient->>SubsonicServer: call getSimilarSongs2.view
  SubsonicServer-->>SubsonicClient: return similar-song response
  SubsonicClient-->>SubsonicSource: return song vector
  SubsonicSource->>TrackConverter: convert songs to tracks
  TrackConverter-->>SubsonicSource: return tracks
Loading

Suggested reviewers: temidaradev, notashelf, umceko

🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check name Status Explanation
Title check ✅ Passed The title clearly identifies the main change: server-side song radio queue support for Navidrome.
Description check ✅ Passed The description explains the Navidrome song radio support, its purpose, testing, and verification scope.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 1

🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@crates/server/src/source/subsonic.rs`:
- Line 230: Update the Subsonic source setup surrounding the radio capability
assignment so radio is enabled only when the server is confirmed to support
getSimilarSongs2; otherwise set radio to false or leave it disabled. Ensure
start_radio is not advertised for servers lacking similar-song support.
🪄 Autofix

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro Plus

Run ID: d60ec925-449b-47bd-b190-09fbb7da2118

📥 Commits

Reviewing files that changed from the base of the PR and between 0f8b355 and 8ed87eb.

📒 Files selected for processing (2)
  • crates/server/src/source/subsonic.rs
  • crates/server/src/subsonic.rs

downloads: true,
discover: false,
radio: false,
radio: true,

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🎯 Functional Correctness | 🟠 Major | 🏗️ Heavy lift

Do not advertise radio when the server cannot provide similar songs.

Line 230 enables radio for every Subsonic source. get_similar_songs documents that the endpoint needs a server-side plugin. Servers without that plugin will expose the radio action and then fail at start_radio.

Detect support during source setup, or keep radio disabled until configuration confirms that the server supports getSimilarSongs2.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@crates/server/src/source/subsonic.rs` at line 230, Update the Subsonic source
setup surrounding the radio capability assignment so radio is enabled only when
the server is confirmed to support getSimilarSongs2; otherwise set radio to
false or leave it disabled. Ensure start_radio is not advertised for servers
lacking similar-song support.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant