quintodrome/server/subsonic
Kendall Garner 6fb4cd277e
feat(subsonic): add OS readonly and validUntil properties in playlists (#4993)
* feat(subsonic): add OS readonly and validUntil properties

* remove duplicated test

* test: fix and enable disabled child smart playlist tests

Fixed the XContext("child smart playlists") tests that were disabled with
a TODO comment. The tests had several issues: nested playlists were missing
Public: true (required by InPlaylist criteria), the criteria matched no
test fixtures, the "not expired" test set EvaluatedAt on the parent too
(preventing it from refreshing at all), and the "expired" test dereferenced
a nil EvaluatedAt. Added proper cleanup with DeferCleanup and config
restoration via configtest.

* fix(subsonic): always include readonly field in JSON playlist responses

Removed omitempty from the JSON tag of the Readonly field in
OpenSubsonicPlaylist so that readonly: false is always serialized in
JSON responses, per the OpenSubsonic spec requirement that supported
fields must be returned with default values. Added a test case with an
empty OpenSubsonicPlaylist to verify the behavior.

---------

Co-authored-by: Deluan Quintão <deluan@navidrome.org>
2026-02-06 19:35:54 -05:00
..
filter fix(subsonic): only use genre tag when searching by genre (#4361) 2025-07-19 21:52:29 -04:00
responses feat(subsonic): add OS readonly and validUntil properties in playlists (#4993) 2026-02-06 19:35:54 -05:00
album_lists.go feat: Multi-library support (#4181) 2025-07-18 18:41:12 -04:00
album_lists_test.go feat: Multi-library support (#4181) 2025-07-18 18:41:12 -04:00
api.go fix(subsonic): always enable getNowPlaying endpoint regardless of configuration 2025-12-11 15:44:21 -05:00
api_suite_test.go feat:(server): support reading lyrics from filesystem (#2897) 2025-04-30 08:10:19 -04:00
api_test.go fix(prometheus): report subsonic error code (#4282) 2025-06-30 11:54:02 -04:00
bookmarks.go feat(subsonic): implement indexBasedQueue extension (#4244) 2025-11-09 12:52:05 -05:00
browsing.go feat: add similar songs functionality in agents, and Instant Mix (song-based) to UI (#4919) 2026-01-25 16:16:43 -05:00
browsing_test.go feat: Multi-library support (#4181) 2025-07-18 18:41:12 -04:00
helpers.go fix(subsonic): fix support for LegacyClients 2026-01-25 18:06:48 -05:00
helpers_test.go fix(subsonic): fix support for LegacyClients 2026-01-25 18:06:48 -05:00
jukebox.go refactor: small improvements and clean up (#3423) 2024-10-22 22:54:31 -04:00
library_scanning.go feat(scanner): implement selective folder scanning and file system watcher improvements (#4674) 2025-11-14 22:15:43 -05:00
library_scanning_test.go feat(scanner): implement selective folder scanning and file system watcher improvements (#4674) 2025-11-14 22:15:43 -05:00
media_annotation.go feat(plugins): experimental support for plugins (#3998) 2025-06-22 20:45:38 -04:00
media_annotation_test.go feat: Multi-library support (#4181) 2025-07-18 18:41:12 -04:00
media_retrieval.go fix(subsonic): Sort songs by presence of lyrics for getLyrics (#4237) 2025-06-16 12:04:41 -04:00
media_retrieval_test.go feat(prometheus): add metrics to Subsonic API and Plugins (#4266) 2025-06-27 22:13:57 -04:00
middlewares.go feat: rename "reverse proxy authentication" to "external authentication" (#4418) 2025-12-02 12:01:48 -05:00
middlewares_test.go feat: rename "reverse proxy authentication" to "external authentication" (#4418) 2025-12-02 12:01:48 -05:00
opensubsonic.go feat(subsonic): implement indexBasedQueue extension (#4244) 2025-11-09 12:52:05 -05:00
opensubsonic_test.go feat(subsonic): implement indexBasedQueue extension (#4244) 2025-11-09 12:52:05 -05:00
playlists.go feat(subsonic): add OS readonly and validUntil properties in playlists (#4993) 2026-02-06 19:35:54 -05:00
playlists_test.go feat(subsonic): add OS readonly and validUntil properties in playlists (#4993) 2026-02-06 19:35:54 -05:00
radio.go Replace all utils.Param* with req.Params 2023-12-21 17:41:09 -05:00
searching.go feat(plugins): New Plugin System with multi-language PDK support (#4833) 2026-01-14 19:22:48 -05:00
searching_test.go feat: Multi-library support (#4181) 2025-07-18 18:41:12 -04:00
sharing.go fix(subsonic): make Share's lastVisited optional 2025-01-09 16:10:53 -05:00
stream.go Add log.IsGreaterOrEqualTo, that take into consideration path-scoped log levels 2023-12-25 16:35:16 -05:00
system.go Some cleanup, adding missing context handling 2022-12-06 19:57:47 -05:00
users.go fix(subsonic): make getUser?username comparison case-insensitive 2025-12-19 17:56:40 -05:00
users_test.go fix(subsonic): add username parameter validation for GetUser endpoint 2025-12-10 18:30:26 -05:00