87 Commits

Author SHA1 Message Date
Deluan Quintão
03cf74556c
Convert all Subsonic API ints to int32 as per specification (#2252)
* Fix Genre

* Fix ArtistID3

* Fix AlbumID3

* Fix Child

* Fix NowPlayingEntry

* Fix Playlist

* Fix Share

* Fix User

* Fix Artist

* Fix Directory

* Fix Error
2026-01-02 20:24:47 +00:00
Deluan
ba72a29f1d
Change throttling log messages 2026-01-02 20:22:23 +00:00
Deluan
5390670cc3
Add dev option to increase external metadata cache expiration. More logs 2026-01-02 20:22:23 +00:00
Deluan
7b6f877ed8
Rename DevEnableShare to EnableSharing 2026-01-02 20:22:02 +00:00
Deluan
a929c752b2
Disable Subsonic Share endpoints if feature is disabled 2026-01-02 20:22:01 +00:00
Deluan
0140bf268c
Implement updateShare and deleteShare Subsonic endpoints 2026-01-02 20:21:59 +00:00
Deluan
041f91ad53
Add getShares and createShare Subsonic endpoints 2026-01-02 20:21:59 +00:00
Kendall Garner
3242ae96b7
Get album info (when available) from Last.fm, add getAlbumInfo endpoint (#2061)
* lastfm album.getInfo, getAlbuminfo(2) endpoints

* ... for description and reduce not found log level

* address first comments

* return all images

* Update migration timestamp

* Handle a few edge cases

* Add CoverArtPriority option to retrieve albumart from external sources

* Make agents methods more descriptive

* Use Last.fm name consistently

Co-authored-by: Deluan <deluan@navidrome.org>
2026-01-02 20:21:18 +00:00
Kendall Garner
2cab4a4352
Add Internet Radio support (#2063)
* add internet radio support

* Add dynamic sidebar icon to Radios

* Fix typos

* Make URL suffix consistent

* Fix typo

* address feedback

* Don't need to preload when playing Internet Radios

* Reorder migration, or else it won't be applied

* Make Radio list view responsive

Also added filter by name, removed RadioActions and RadioContextMenu, and added a default radio icon, in case of favicon is not available.

* Simplify StreamField usage

* fix button, hide progress on mobile

* use js styles over index.css

Co-authored-by: Deluan <deluan@navidrome.org>
2026-01-02 20:21:17 +00:00
Deluan
0642449ce8
New dev options to control getCoverArt throttling 2026-01-02 20:21:17 +00:00
Deluan
881370001a
Move artwork handling to its own package 2026-01-02 20:20:19 +00:00
Deluan
203a0f3657
Fallback extracting tags using ffmpeg 2026-01-02 20:20:18 +00:00
Deluan
9cf05a6b60
Moved logic of collapsing songs into albums to model package
(it should really be called domain.... maybe will rename it later)
2026-01-02 20:20:17 +00:00
Deluan
542496b2f3
Replace MinInt/MaxInt with generic versions 2026-01-02 20:20:17 +00:00
Deluan
172e1a4054
Add endpoints in Subsonic API logs 2026-01-02 20:19:52 +00:00
Deluan
7028cc05f5
Compress more http content-types.
Also, some minor refactoring
2026-01-02 20:17:20 +00:00
Deluan
4b338dcf3d
Simplify Subsonic API handler implementation 2026-01-02 20:16:00 +00:00
Deluan
2afc93bb9b
Add missing context to logger calls 2026-01-02 20:16:00 +00:00
Deluan
c45ec227ec
Reduce spurious error/warn messages, if loglevel != debug 2026-01-02 20:16:00 +00:00
Deluan
d66b04750b
Add errorlint linter 2026-01-02 20:15:58 +00:00
Deluan
03128f2b97
Fix error comparisons 2026-01-02 20:15:58 +00:00
Deluan
dac39d1d4f
Add log warn when request is cancelled/interrupted 2026-01-02 20:14:22 +00:00
Deluan
6a3318ee78
Return 501 for "not implemented". Fixes #1785 2026-01-02 20:13:58 +00:00
Deluan
9ca4fb538b
Optimize playlist updates 2026-01-02 20:09:00 +00:00
Dheeraj Lalwani
830784e948
Adds Lyrics Support to Subsonic API (#1379)
* Add function 'isSynced' that identifies if lyrics are synced or not and add tests for the same

* implement 'getLyrics' which returns lyrics if they exist

Signed-off-by: Dheeraj Lalwani <lalwanidheeraj1234@gmail.com>

* remove timestamps frorom the the lyrics if they are synced, fix filters & clean up code

Signed-off-by: Dheeraj Lalwani <lalwanidheeraj1234@gmail.com>

* add snapshot tests for the 'Lyrics' response & add some clean up

Signed-off-by: Dheeraj Lalwani <lalwanidheeraj1234@gmail.com>

* add tests for 'GetLyrics' function

Signed-off-by: Dheeraj Lalwani <lalwanidheeraj1234@gmail.com>

* update the snapshot test & the test for 'GetLyrics' function

Signed-off-by: Dheeraj Lalwani <lalwanidheeraj1234@gmail.com>
2026-01-02 20:08:58 +00:00
Deluan
ffd1aa7e89
Refactor: Consolidate scrobbling logic in play_tracker 2026-01-02 20:05:05 +00:00
Deluan
0a9f6cb807
Refactor Agents to be singleton
Initial work for Last.fm scrobbler
2026-01-02 20:05:04 +00:00
Deluan
1ac077cf22
Fix GetNowPlaying endpoint showing only the last play 2026-01-02 20:04:23 +00:00
Deluan
7b4b6f8130
New implementation of NowPlaying 2026-01-02 20:04:23 +00:00
Deluan Quintão
5be15bb98b
Refactor routing, changes API URLs (#1171)
* Make authentication part of the server, so it can be reused outside the Native API

This commit has broken tests after a rebase

* Serve frontend assets from `server`, and not from Native API

* Change Native API URL

* Fix auth tests

* Refactor server authentication

* Simplify authProvider, now subsonic token+salt comes from the server

* Don't send JWT token to UI when authenticated via Request Header

* Enable ReverseProxyWhitelist to be read from environment
2026-01-02 20:00:31 +00:00
Deluan
cc789ed92b
Trigger UI refresh on media annotation events: star, setRating and scrobble 2026-01-02 19:32:17 +00:00
Deluan
3e56e834a4
Upgrade to go-chi 5 2026-01-02 19:31:07 +00:00
Deluan
8be485ab3e
Update list of Not Implemented / Gone Subsonic API endpoints 2026-01-02 19:21:28 +00:00
Deluan
fdd9a94144
Rename ExternalInfo to ExternalMetadata 2026-01-02 19:21:28 +00:00
Deluan
10cf2372f8
Move project to Navidrome GitHub organization 2026-01-02 19:20:16 +00:00
Deluan
d23976d796
Fix "failed" Subsonic response. Fix #716 2026-01-02 19:20:13 +00:00
Deluan
ca37f6d31c
Use Gravatar in GetAvatar Subsonic API 2026-01-02 19:19:36 +00:00
Deluan
6db9c24549
Bump Subsonic API to 1.16.1 2026-01-02 19:18:58 +00:00
Deluan
01b5871218
Implements library scanning endpoints. Also:
- Bumped Subsonic API version to 1.15:
- Better User/Users Subsonic endpoint implementations, not final though
2026-01-02 19:18:26 +00:00
Deluan
7cde29cd21
Simplify error responses 2026-01-02 19:18:26 +00:00
Deluan
582e9e5249
Completely removed engine package, fewer abstraction layers \o/ 2026-01-02 19:18:25 +00:00
Deluan
321c2fc4f1
Move mock datastore to tests package 2026-01-02 19:18:25 +00:00
Deluan
e2d27f5a32
Removed list_generator completely 2026-01-02 19:18:25 +00:00
Deluan
2f11c2dc8f Bump Subsonic API compatibility to 1.13 2020-10-20 22:54:37 -04:00
Deluan
e9e09a7480 Add dedicated SimilarArtists call 2020-10-20 16:07:31 -04:00
Deluan
07535e1518 Add ExternalInformation core service (not a great name, I know) 2020-10-20 16:07:31 -04:00
Deluan
e2e79d6471 Fix getTopSongs endpoint mapping 2020-08-20 11:27:38 -04:00
Deluan
100f6a0645 Removed engine.Users 2020-08-14 12:10:37 -04:00
Deluan
419884db7c Removed engine.Scrobbler 2020-08-14 12:10:37 -04:00
Deluan
eacfc41665 Removed engine.Search 2020-08-14 12:10:37 -04:00