4187 Commits

Author SHA1 Message Date
Deluan Quintão
6543e4864a
fix(server): skip non-UTF encoding during the database migration. (#3803)
Fix #3787

Signed-off-by: Deluan <deluan@navidrome.org>
2026-01-02 20:47:43 +00:00
Deluan
7f1adfb9a3
fix(scanner): watcher not working with relative MusicFolder
Signed-off-by: Deluan <deluan@navidrome.org>
2026-01-02 20:47:43 +00:00
Deluan
e0c769243a
fix(scanner): full_text not being updated on scan
Fixes #3813

Signed-off-by: Deluan <deluan@navidrome.org>
2026-01-02 20:47:43 +00:00
Deluan
202d2b0919
fix(subsonic): getRandomSongs with genre filter
fix https://github.com/dweymouth/supersonic/issues/577

Signed-off-by: Deluan <deluan@navidrome.org>
2026-01-02 20:47:43 +00:00
Rodrigo Iglesias
111eda1730
fix(ui): update Español translation (#3805)
Corrected "aletorio" and added some more translations
2026-01-02 20:47:43 +00:00
Deluan Quintão
1bf27e6a95
fix(ui): skip missing files in bulk operations (#3807)
* fix(ui): skip missing files when adding to playqueue

Signed-off-by: Deluan <deluan@navidrome.org>

* fix(ui): skip missing files when adding to playlists

* fix(ui): skip missing files when shuffling songs

Signed-off-by: Deluan <deluan@navidrome.org>

---------

Signed-off-by: Deluan <deluan@navidrome.org>
2026-01-02 20:47:43 +00:00
Deluan Quintão
3039d29ff1
fix(server): db migration does not work for MusicFolders ending with a trailing slash. (#3797)
* fix(server): db migration was not working for MusicFolders ending with a trailing slash.

Signed-off-by: Deluan <deluan@navidrome.org>

* fix(server): db migration for relative paths

Signed-off-by: Deluan <deluan@navidrome.org>

---------

Signed-off-by: Deluan <deluan@navidrome.org>
2026-01-02 20:47:43 +00:00
Kendall Garner
24cef004ba
fix(ui): fix make dev (#3795)
1. For some bizarre reason, importing inflection by itself is undefined. But you can import specific functions
2. Per https://github.com/vite-pwa/vite-plugin-pwa/issues/419, `type: 'module',` is only for non-chromium browsers
2026-01-02 20:47:43 +00:00
Deluan
f68ce0c960
fix(server): panic when logging tag type. Fix #3790
Signed-off-by: Deluan <deluan@navidrome.org>
2026-01-02 20:47:43 +00:00
Deluan Quintão
c460f5422d
fix(server): db migration not working when MusicFolder is a relative path (#3766)
* fix(server): db migration not working when MusicFolder is a relative path

Signed-off-by: Deluan <deluan@navidrome.org>

* remove todo

Signed-off-by: Deluan <deluan@navidrome.org>

* fix migration of paths in Windows

---------

Signed-off-by: Deluan <deluan@navidrome.org>
2026-01-02 20:47:43 +00:00
Deluan Quintão
82bb934ee9
fix(ui): update Finnish, Hungarian, Russian, Ukrainian translations from POEditor (#3780)
Co-authored-by: navidrome-bot <navidrome-bot@navidrome.org>
2026-01-02 20:47:42 +00:00
Deluan
25e4004df0
fix(subsonic): don't return empty disctitles for a single disc album
See https://support.symfonium.app/t/hide-disc-header-for-albums-with-only-1-disc/6877/1

Signed-off-by: Deluan <deluan@navidrome.org>
2026-01-02 20:47:42 +00:00
Deluan
234d661b01
feat(subsonic): rename AppendSubtitle conf to Subsonic.AppendSubtitle, for consistency
Signed-off-by: Deluan <deluan@navidrome.org>
2026-01-02 20:47:42 +00:00
Deluan
bfea453516
chore(deps): bump more JS dependencies
Signed-off-by: Deluan <deluan@navidrome.org>
2026-01-02 20:47:42 +00:00
Deluan
1374c49154
chore(deps): bump Vite version
Signed-off-by: Deluan <deluan@navidrome.org>
2026-01-02 20:47:42 +00:00
Deluan
3ece7262bd
chore(deps): bump JS dependencies
Signed-off-by: Deluan <deluan@navidrome.org>
2026-01-02 20:47:42 +00:00
Deluan
e5c33ce215
chore(deps): bump Go dependencies
Signed-off-by: Deluan <deluan@navidrome.org>
2026-01-02 20:47:41 +00:00
Deluan
025b7a3849
fix(ui): disable bulk action buttons if transcoding edit is disabled
Signed-off-by: Deluan <deluan@navidrome.org>
2026-01-02 20:47:16 +00:00
Deluan
c7dd473915
build(ci): show English names for changed languages in POEditor PRs
Signed-off-by: Deluan <deluan@navidrome.org>
2026-01-02 20:47:16 +00:00
Deluan
c222ae0079
feat(server): deprecate Scanner.GroupAlbumReleases config option
Signed-off-by: Deluan <deluan@navidrome.org>
2026-01-02 20:47:16 +00:00
Deluan
d640fc0ab8
feat(ui): use webp for login backgrounds
Signed-off-by: Deluan <deluan@navidrome.org>
2026-01-02 20:47:16 +00:00
ChekeredList71
831cba6cdb
fix(ui): updated Hungarian translation for BFR (#3773)
* Hungarian translation for v0.54.1 done

* Hungarian translation for v0.54.1 done

* Updated Hugarian translation

* Updated Hugarian translation

---------

Co-authored-by: ChekeredList71 <null@example.com>
Co-authored-by: ChekeredList71 <ads@asd.com>
2026-01-02 20:47:16 +00:00
Kendall Garner
64561872be
fix(scanner): always refresh folder image time when adding first image (#3764)
* fix(scanner): Always refresh folder image time when adding first image

Currently, the `images_updated_at` field is only set to the image modification time.
However, in cases where a new image is added _and_ said image is older than the folder mod time, the field is not updated properly.

In this the case where `images_updated_at` is null (no images were ever added) and a new images is found, use the folder modification time instead of image modification time.

**Note**, this doesn't handle cases such as replacing a newer image with an older one.

* simplify image update at

* we don't want to set imagesUpdatedAt when there's no images in the folder

Signed-off-by: Deluan <deluan@navidrome.org>

---------

Signed-off-by: Deluan <deluan@navidrome.org>
Co-authored-by: Deluan <deluan@navidrome.org>
2026-01-02 20:47:15 +00:00
Deluan
f65238c4b5
fix(ui): replace bulk "delete" label with "remove" in playlists
Fix #3525

Signed-off-by: Deluan <deluan@navidrome.org>
2026-01-02 20:47:15 +00:00
Kendall Garner
18212d1ef1
feat(subsonic): set sortName for OS AlbumList (#3776)
* 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>
2026-01-02 20:47:15 +00:00
Deluan
6326b1407d
fix(server): change log level for some unimportant messages
Signed-off-by: Deluan <deluan@navidrome.org>
2026-01-02 20:47:15 +00:00
Deluan
854729b0f3
fix(server): only build core.Agents once
Signed-off-by: Deluan <deluan@navidrome.org>
2026-01-02 20:47:15 +00:00
Deluan
188ff20289
fix(server): remove misleading "Agent not available" warning.
Signed-off-by: Deluan <deluan@navidrome.org>
2026-01-02 20:47:15 +00:00
Deluan
deb6f03607
feat(server): make appending subtitle to song title configurable
Signed-off-by: Deluan <deluan@navidrome.org>
2026-01-02 20:47:15 +00:00
Deluan
26ccd0fb90
feat(server): group Subsonic config options together
Signed-off-by: Deluan <deluan@navidrome.org>
2026-01-02 20:47:15 +00:00
Deluan
0847a927fd
feat(server): removed GenreSeparator, replaced with Tag.Genre.Split
Signed-off-by: Deluan <deluan@navidrome.org>
2026-01-02 20:47:15 +00:00
Deluan
3b2eac2bbc
feat(insights): send scanner options
Signed-off-by: Deluan <deluan@navidrome.org>
2026-01-02 20:47:15 +00:00
Deluan
36f8705924
feat(server): rename ScanSchedule conf to Scanner.Schedule, for consistency
Signed-off-by: Deluan <deluan@navidrome.org>
2026-01-02 20:47:15 +00:00
Deluan
52503ee539
feat(server): warn users of ffmpeg extractor that it is not available anymore
Signed-off-by: Deluan <deluan@navidrome.org>
2026-01-02 20:47:15 +00:00
Deluan Quintão
39c317fd2d
fix(server): import absolute paths in m3u (#3756)
* fix(server): import playlists with absolute paths

Signed-off-by: Deluan <deluan@navidrome.org>

* fix(server): optimize playlist import

Signed-off-by: Deluan <deluan@navidrome.org>

* fix(server): add test with multiple libraries

Signed-off-by: Deluan <deluan@navidrome.org>

* fix(server): refactor

Signed-off-by: Deluan <deluan@navidrome.org>

---------

Signed-off-by: Deluan <deluan@navidrome.org>
2026-01-02 20:47:15 +00:00
Deluan Quintão
3c6ea68e24
fix(ui): update Deutsch, Español, Euskara, Galego, Bahasa Indonesia, 日本語, Português, Pусский, Türkçe translations from POEditor (#3681)
Co-authored-by: navidrome-bot <navidrome-bot@navidrome.org>
2026-01-02 20:47:14 +00:00
Deluan Quintão
74f9843830
fix(server): reduce SQLite "database busy" errors (#3760)
* fix(scanner): remove transactions where they are not strictly needed

Signed-off-by: Deluan <deluan@navidrome.org>

* fix(server): force setStar transaction to start as IMMEDIATE

Signed-off-by: Deluan <deluan@navidrome.org>

* fix(server): encapsulated way to upgrade tx to write mode

Signed-off-by: Deluan <deluan@navidrome.org>

* fix(server): use tx immediate for some playlist endpoints

Signed-off-by: Deluan <deluan@navidrome.org>

* make more transactions immediate (#3759)

---------

Signed-off-by: Deluan <deluan@navidrome.org>
Co-authored-by: Kendall Garner <17521368+kgarner7@users.noreply.github.com>
2026-01-02 20:47:14 +00:00
Deluan
73e217a50c
fix(subsonic): check errors before setting headers for getCoverArt
Signed-off-by: Deluan <deluan@navidrome.org>
2026-01-02 20:47:14 +00:00
Deluan
79921575d0
chore(server): add logs to begin/end transaction
Signed-off-by: Deluan <deluan@navidrome.org>
2026-01-02 20:47:14 +00:00
Deluan
0f399d1ebe
fix(server): disallow search engine crawlers in robots.txt
Signed-off-by: Deluan <deluan@navidrome.org>
2026-01-02 20:47:14 +00:00
Kendall Garner
d657291f12
test(server): validate play tracker participants, scrobble buffer (#3752)
* test(server): validate play tracker participants, scrobble buffer

* tests(server): nit: remove duplicated tests and small cleanups

Signed-off-by: Deluan <deluan@navidrome.org>

* tests(server): nit: replace panics with assertions

Signed-off-by: Deluan <deluan@navidrome.org>

* just use random ids, and store it instead

---------

Signed-off-by: Deluan <deluan@navidrome.org>
Co-authored-by: Deluan <deluan@navidrome.org>
2026-01-02 20:47:14 +00:00
Deluan
7f2325bd0a
fix(server): role filters in Smart Playlists.
See https://github.com/navidrome/navidrome/discussions/3676#discussioncomment-12286960

Signed-off-by: Deluan <deluan@navidrome.org>
2026-01-02 20:47:14 +00:00
Deluan
651196d109
fix(server): send artist mbids when scrobbling to ListenBrainz
Signed-off-by: Deluan <deluan@navidrome.org>
2026-01-02 20:47:14 +00:00
Kendall Garner
5a28d79aab
feat(ui): Show performer subrole(s) where possible (#3747)
* feat(ui): Show performer subrole(s) where possible

* nit: simplify subrole formatting

Signed-off-by: Deluan <deluan@navidrome.org>

---------

Signed-off-by: Deluan <deluan@navidrome.org>
Co-authored-by: Deluan <deluan@navidrome.org>
2026-01-02 20:47:14 +00:00
Kendall Garner
385df5c248
feat(ui): Improve Artist Album pagination (#3748)
* feat(ui): Improve Artist Album pagination

- use maximum of albumartist/artist credits for determining pagination
- reduce default maxPerPage considerably. This gives values of 36/72/108 at largest size

* enable pagination when over 90

Signed-off-by: Deluan <deluan@navidrome.org>

---------

Signed-off-by: Deluan <deluan@navidrome.org>
Co-authored-by: Deluan <deluan@navidrome.org>
2026-01-02 20:47:14 +00:00
Deluan
ce76c506f8
feat(ui): make need for refresh more visible when upgrading server
Signed-off-by: Deluan <deluan@navidrome.org>
2026-01-02 20:47:14 +00:00
Deluan
222fccf806
feat(server): new option to set the default for ReportRealPath on new players
Implements #3653

Signed-off-by: Deluan <deluan@navidrome.org>
2026-01-02 20:47:14 +00:00
Deluan
e91bc9eb2c
sec(subsonic): authentication bypass in Subsonic API with non-existent username
Signed-off-by: Deluan <deluan@navidrome.org>
2026-01-02 20:47:14 +00:00
Deluan
0d59213b69
fix(ui): paginate albums in artist page when needed
Signed-off-by: Deluan <deluan@navidrome.org>
2026-01-02 20:47:14 +00:00
Deluan
5f63c60f19
fix(scanner): improve refresh artists stats query
Signed-off-by: Deluan <deluan@navidrome.org>
2026-01-02 20:47:13 +00:00