- Subsonic REST API — full implementation backing browsing, search, stars (tracks/albums/artists), bookmarks, cross-device play queue, sharing, and jukebox control. Per-user API keys for client auth via
apiKey=instead of username/password. - Airsonic Refix web client bundled as a third UI option (
config.ui: 'subsonic') — still hand-edit-only until the admin panel story lands. - DLNA / UPnP MediaServer with three modes (
disabled/same-port/separate-port). Six browse layouts per library, smart containers (recent, recently-played, most-played, favorites, shuffle, by-year), time-based seek, Samsung compatibility. - Lyrics support — real
GET /api/v1/lyrics+ SubsonicgetLyrics/getLyricsBySongId. Reads embedded tags (USLT, SYLT, Vorbis, MP4, APE) and sidecar.lrc/.txtfiles (including multi-language variants). - LRCLib fallback — opt-in (
lyrics.lrclib: true) auto-fetch from lrclib.net for tracks with no local lyrics, with optional sidecar write-back. - Multi-artist / compilation support — tracks and albums now store multiple credited artists. Clicking an artist returns every album they appear on (primary, collab, or featured), not just albums where they're the sole artist.
- Server-side audio playback —
/server-remotepage +/api/v1/server-playback/*. Auto-detects and prefers MPD, falls back to MPV / VLC / MPlayer. Gated per-user by an opt-in permission flag. - Inline waveform generation — rust scanner produces the 800-bar waveform during scan; admin UI gets the waveform-as-progress-bar with no delay thanks to per-queue prefetching.
- OpenSubsonic extended fields —
sampleRate,channels,bitDepthon every song so clients can render "24/96 FLAC" quality badges. - OpenAPI 3.0 spec — first complete machine-readable documentation of the REST API at
docs/openapi.yaml. - Per-library
followSymlinksflag — scanner behavior is now configurable per folder in the admin panel instead of a global on/off. - Playlist rename support in the default UI.