Removed `omitempty` from the `Title` struct tag in the `Child` response
type. The Subsonic/OpenSubsonic API spec requires `title` to be a
mandatory field, but songs with empty titles caused the field to be
omitted entirely, crashing clients like Symfonium during sync.
Ref: https://support.symfonium.app/t/app-gets-stuck-on-syncing-large-database/13004/8
* Add `.editorconfig` file
Hints to users how to properly indent Go files (my setup was defaulting
to 2 spaces).
* Add Subsonic API minimal config option
This will allow users to specify clients which can operate with or need
the minimum required fields as per the [SubSonic API
spec](https://subsonic.org/pages/api.jsp).
* Return only required fields for Child Objects
For a minimal client, only return the required fields for Child Objects.
* Return only required fields for Playlist objects
* refactor: simplify client list checks and improve playlist response handling
Signed-off-by: Deluan <deluan@navidrome.org>
* test: add unit tests for client list checks and playlist building logic
Signed-off-by: Deluan <deluan@navidrome.org>
* fix: revert Child.IsVideo and Playlist.Public fields from pointer to boolean, and add omitempty to XML tag
Signed-off-by: Deluan <deluan@navidrome.org>
---------
Signed-off-by: Deluan <deluan@navidrome.org>
Co-authored-by: Deluan Quintão <deluan@navidrome.org>
* feat(subsonic): Set SortName for OS AlbumList, test to JSON/XML
* albumlist2, star2 updated properly
* fix(subsonic): add sort or order name based on config
Signed-off-by: Deluan <deluan@navidrome.org>
---------
Signed-off-by: Deluan <deluan@navidrome.org>
Co-authored-by: Deluan <deluan@navidrome.org>