Skip to content

v2.3.0 - Added synced karaoke style lyrics to the Web UI and metadata lyrics support

Latest

Choose a tag to compare

@Blakeem Blakeem released this 26 Aug 00:44
011fc0e

Synced lyrics view (web player)

A full-viewport lyrics overlay that highlights the current line and scrolls to follow it.

  • Lyrics button uses a microphone icon.
  • Tap any line to seek playback to it.
  • Auto-scroll suspends the moment you scroll, and a jump-back control returns you to the current line.
  • Font size stepper and sync offset nudge, both persisted per device.

Lyrics from your own files

Lyrics stored in a song's audio file tag are now a first-class source, preferred over LRCLIB when timed.

  • The lyrics tools work with LRCLIB disabled, serving file lyrics only.

Lyrics tools split

get_lyrics now takes an identity, not metadata. It accepts a Navidrome songId or an LRCLIB lrclibId.

  • search_lyrics is new and owns the LRCLIB metadata search. It returns candidate records plus any matching library song.
  • Fixed an LRCLIB lookup that missed synced lyrics that exist.

Radio station URL validation

  • Control characters are rejected in station URLs. A value with a line break can no longer be stored or played.
  • create_radio_station validates the home page URL scheme. It previously had no server-side check.
  • The URL error messages are separate. A line break no longer reports as a bad scheme.

Client compatibility (#32)

The streamUrl and homePageUrl patterns in create_radio_station are now fully anchored. An unanchored pattern made llama.cpp's json-schema-to-grammar converter reject the whole tool set, so every tool from this server failed for native function calling.

Other

  • New GET /api/lyrics/:songId endpoint, backed by the shared lyrics resolver.
  • Content-Security-Policy header now served on the web player.
  • Live-read tests moved to pnpm test:live, so pnpm test:run is deterministic.