Skip to content

feat: add artist radio using sonic similarity (#433) - #435

Open
luishidalgoa wants to merge 3 commits into
victoralvesf:developmentfrom
luishidalgoa:feat/#433-artist-radio
Open

feat: add artist radio using sonic similarity (#433)#435
luishidalgoa wants to merge 3 commits into
victoralvesf:developmentfrom
luishidalgoa:feat/#433-artist-radio

Conversation

@luishidalgoa

@luishidalgoa luishidalgoa commented Jul 3, 2026

Copy link
Copy Markdown

What

Implements the artist radio functionality requested in #433. A dedicated Radio button is added to the artist header actions bar (next to shuffle), mirroring Navidrome's own artist page.

How

There are two flavours of "radio" in the Navidrome ecosystem, so this supports both:

  • Classic artist radiogetSimilarSongs2 with the artist id. This is what Navidrome's own artist Radio uses (navidrome#4186) and works on any stock Navidrome server. Used as the primary source.
  • Sonic radiogetSonicSimilarTracks from the sonicSimilarity extension, which is only advertised when a plugin such as AudioMuse-AI is installed. Preferred when available (seeded from the artist's top song), falling back to getSimilarSongs2.

The queue is de-duplicated and the artist is set as the playback source. If nothing is returned, a toast is shown instead of starting an empty queue.

The button is rendered when the server is Navidrome or advertises sonicSimilarity (isRadioAvailable). All the logic lives in a reusable useArtistRadio hook; the button uses a new Actions.RadioIcon.

Details

  • New services subsonic.songs.getSimilarSongs2 and subsonic.songs.getSonicSimilarTracks, with response types (SimilarSongsResponse, ISonicMatch / SonicSimilarTracksResponse) matching the documented shapes.
  • Added sonicSimilarityEnabled to getServerExtensions (mirrors songLyrics).
  • Strings added to en, es, pt and pt-BR (artist.buttons.radio, artist.radio.empty); the rest fall back to en-US and can be filled via Weblate.

Notes

Type-checking (tsc) and Biome (incl. the repo pre-commit hook) are clean. The runtime paths (classic getSimilarSongs2 and the sonic fallback) still need a real-world check against a live server. Happy to tweak icon/wording/placement.

Closes #433

Adds a "Start radio" action to the artist options menu that builds a
queue of sonically similar tracks via the OpenSubsonic
getSonicSimilarTracks endpoint (sonicSimilarity extension).

The radio is seeded from the artist's top song (falling back to their
first available track), then the returned similar tracks are appended
and de-duplicated. The action is only shown when the server advertises
the sonicSimilarity extension, and shows a toast when no similar tracks
are found.

Closes victoralvesf#433

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
@vercel

vercel Bot commented Jul 3, 2026

Copy link
Copy Markdown

@luishidalgoa is attempting to deploy a commit to the Victor Alves' projects Team on Vercel.

A member of the Team first needs to authorize it.

luishidalgoa and others added 2 commits July 4, 2026 00:55
Move the "radio" action out of the artist options (⋯) menu into a
dedicated button in the artist header actions bar, next to shuffle,
matching Navidrome's own artist page layout.

The radio logic is extracted into a reusable useArtistRadio hook and the
button (with a new Actions.RadioIcon) is only rendered when the server
advertises the sonicSimilarity extension. i18n keys moved under
artist.buttons.radio / artist.radio.empty.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
The sonicSimilarity extension (getSonicSimilarTracks) is only advertised
when a plugin like AudioMuse-AI is installed, so gating the radio button
solely on it hid the feature on stock Navidrome servers.

Navidrome's own artist radio uses the classic id3-based getSimilarSongs2
endpoint, which works without any plugin. Use it as the primary source
(seeded directly by the artist id) and prefer getSonicSimilarTracks only
when the sonicSimilarity extension is available. The button is now shown
whenever the server is Navidrome or advertises sonicSimilarity.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
@victoralvesf
victoralvesf deleted the branch victoralvesf:development July 14, 2026 12:20
@victoralvesf victoralvesf reopened this Jul 14, 2026
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.

2 participants