Deluan
30918bd4a2
fix(scanner): normalize attribute strings and add edge case tests for PID calculation
...
Relates to https://github.com/navidrome/navidrome/issues/4183#issuecomment-2952729458
Signed-off-by: Deluan <deluan@navidrome.org>
2026-01-02 20:55:26 +00:00
Deluan Quintão
6776af7be2
feat(ui): add song Love and Rating functionality to playlist view ( #4134 )
...
* feat(ui): add playlist track love button
Signed-off-by: Deluan <deluan@navidrome.org>
* feat(ui): add star rating feature for playlist tracks
Signed-off-by: Deluan <deluan@navidrome.org>
* fix(ui): handle loading state and error logging in toggle love and rating components
Signed-off-by: Deluan <deluan@navidrome.org>
---------
Signed-off-by: Deluan <deluan@navidrome.org>
2026-01-02 20:55:26 +00:00
Deluan Quintão
15f28d8d93
fix(ui): update audio title link to include playlist support ( #4175 )
...
Signed-off-by: Deluan <deluan@navidrome.org>
2026-01-02 20:55:26 +00:00
Deluan Quintão
241f605019
fix(subsonic): fix JukeboxRole logic in GetUser and eliminate code duplication ( #4170 )
...
- Fix GetUser JukeboxRole to properly respect AdminOnly setting
- Extract buildUserResponse helper to eliminate duplication between GetUser and GetUsers
- Fix username field inconsistency (GetUsers was using loggedUser.Name instead of UserName)
- Add comprehensive tests covering jukebox role permissions and consistency between methods
Fixes #4160
2026-01-02 20:55:26 +00:00
Patrick O'Shea
99865347e0
fix(jukebox): jukebox mode doesn't include MusicFolder ( #4067 )
...
* fix(configuration.go, mpv.go): Jukebox mode doesn't include MusicFolder in mpv command - #4066
The call to createMPVCommand is not including the MusicFolder path in
mpv command causing it to fail with file not found errors.
Updated default command template and createMPVCommand to use additional
substitution with conf.server.MusicFolder
Signed-off-by: Pat <patso.oshea@gmail.com>
* Revert config.go change, use filepath.Join for cross platform
* Update track.go with mf.AbsolutePath()
---------
Signed-off-by: Pat <patso.oshea@gmail.com>
Co-authored-by: Deluan <deluan@navidrome.org>
2026-01-02 20:55:25 +00:00
Deluan Quintão
d9d21ffdfd
fix(jukebox): fix mpv command and template parsing ( #4162 )
...
* test(mpv): add unit tests for MPV command generation and execution
Signed-off-by: Deluan <deluan@navidrome.org>
* fix(mpv): improve command template parsing
Signed-off-by: Deluan <deluan@navidrome.org>
* fix(mpv): update mock script to output arguments to stdout instead of a file
Signed-off-by: Deluan <deluan@navidrome.org>
* test(mpv): add test suite for MPV command functionality
Signed-off-by: Deluan <deluan@navidrome.org>
* fix(mpv): improve MPV command template parsing to handle quoted arguments
Signed-off-by: Deluan <deluan@navidrome.org>
* fix(mpv): simplify MPV command check by removing unnecessary string containment
Signed-off-by: Deluan <deluan@navidrome.org>
* fix(mpv): add error handling for empty command arguments and malformed templates
Signed-off-by: Deluan <deluan@navidrome.org>
---------
Signed-off-by: Deluan <deluan@navidrome.org>
2026-01-02 20:55:25 +00:00
Kendall Garner
d4ffa6a3cd
fix(scanner): update prometheus at the end of the scan ( #4163 )
...
* fix(scannner): use prometheus instance over noop if configured properly
* Real Fix: move `WriteAfterScanMetrics` outside gofunc
* refactor: remove unused artwork.CacheWarmer param from CallScan function
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:55:25 +00:00
Deluan
809282c2a8
fix(ui): improve layout and responsiveness of SelectPlaylistInput component
...
Signed-off-by: Deluan <deluan@navidrome.org>
2026-01-02 20:55:25 +00:00
Deluan
bdb4931288
fix(server): don't override /song routes
...
Signed-off-by: Deluan <deluan@navidrome.org>
2026-01-02 20:55:24 +00:00
Deluan
bf09b25102
fix(ui): make the height of the AddToPlaylistDialog static.
...
Signed-off-by: Deluan <deluan@navidrome.org>
2026-01-02 20:54:44 +00:00
Deluan Quintão
cff81757a0
refactor: simplify configuration endpoint with JSON serialization ( #4159 )
...
* refactor(config): reorganize configuration handling
Signed-off-by: Deluan <deluan@navidrome.org>
* refactor(aboutUtils): improve array formatting and handling in TOML conversion
Signed-off-by: Deluan <deluan@navidrome.org>
* refactor(aboutUtils): add escapeTomlKey function to handle special characters in TOML keys
Signed-off-by: Deluan <deluan@navidrome.org>
* fix(test): remove unused getNestedValue function
* fix(ui): apply prettier formatting
---------
Signed-off-by: Deluan <deluan@navidrome.org>
2026-01-02 20:54:36 +00:00
Deluan Quintão
47a131aa1d
fix(ui): add button is covered when adding to a playlist ( #4156 )
...
* refactor: fix SelectPlaylistInput layout and improve readability - Replace dropdown with fixed list to prevent button overlay - Break down into smaller focused components - Add comprehensive test coverage - Reduce spacing for compact layout
* refactor: update playlist input translations
Signed-off-by: Deluan <deluan@navidrome.org>
* fix: format code with prettier - Fix formatting issues in AddToPlaylistDialog.test.jsx
---------
Signed-off-by: Deluan <deluan@navidrome.org>
2026-01-02 20:51:27 +00:00
Kendall Garner
6538796523
fix(ui): DevFlags order in TOML export ( #4155 )
...
* fix(ui): update artist link rendering and improve button styles
Signed-off-by: Deluan <deluan@navidrome.org>
* fix(ui): Move Dev* flags before sections in export
---------
Signed-off-by: Deluan <deluan@navidrome.org>
Co-authored-by: Deluan <deluan@navidrome.org>
2026-01-02 20:51:27 +00:00
Deluan Quintão
2bb3bb8fd0
feat(ui): add 'Show in Playlist' context menu ( #4139 )
...
* Update song playlist menu and endpoint
* feat(ui): show submenu on click, not on hover
Signed-off-by: Deluan <deluan@navidrome.org>
* feat(ui): integrate dataProvider for fetching playlists in song context menu
Signed-off-by: Deluan <deluan@navidrome.org>
* feat(ui): update song context menu to use dataProvider for fetching playlists and inspecting songs
Signed-off-by: Deluan <deluan@navidrome.org>
* feat(ui): stop event propagation when closing playlist submenu
Signed-off-by: Deluan <deluan@navidrome.org>
* feat(ui): add 'show in playlist' option to options object
Signed-off-by: Deluan <deluan@navidrome.org>
---------
Signed-off-by: Deluan <deluan@navidrome.org>
2026-01-02 20:51:27 +00:00
Deluan Quintão
db5d8f9272
feat(ui): add configuration tab in About dialog ( #4142 )
...
* Flatten config endpoint and improve About dialog
* add config resource
Signed-off-by: Deluan <deluan@navidrome.org>
* fix(ui): replace `==` with `===`
Signed-off-by: Deluan <deluan@navidrome.org>
* feat(ui): add environment variables
Signed-off-by: Deluan <deluan@navidrome.org>
* feat(ui): add sensitive value redaction
Signed-off-by: Deluan <deluan@navidrome.org>
* feat(ui): more translations
Signed-off-by: Deluan <deluan@navidrome.org>
* address PR comments
Signed-off-by: Deluan <deluan@navidrome.org>
* feat(ui): add configuration export feature in About dialog
Signed-off-by: Deluan <deluan@navidrome.org>
* feat(ui): translate development flags section header
Signed-off-by: Deluan <deluan@navidrome.org>
* refactor
Signed-off-by: Deluan <deluan@navidrome.org>
* feat(api): refactor routes for keepalive and insights endpoints
Signed-off-by: Deluan <deluan@navidrome.org>
* lint
Signed-off-by: Deluan <deluan@navidrome.org>
* fix(ui): enhance string escaping in formatTomlValue function
Updated the formatTomlValue function to properly escape backslashes in addition to quotes. Added new test cases to ensure correct handling of strings containing both backslashes and quotes.
Signed-off-by: Deluan <deluan@navidrome.org>
* feat(ui): adjust dialog size
Signed-off-by: Deluan <deluan@navidrome.org>
---------
Signed-off-by: Deluan <deluan@navidrome.org>
2026-01-02 20:51:27 +00:00
Deluan Quintão
93ac9dce0d
fix(server): enhance artist folder detection with directory traversal ( #4151 )
...
* fix: enhance artist folder detection with directory traversal
Enhanced fromArtistFolder function to implement directory traversal fallback for finding artist images. The original implementation only searched in the calculated artist folder, which failed for single album artists where artist.jpg files were not detected.
Changes: Modified fromArtistFolder to search up to 3 directory levels (artist folder + 2 parent levels), extracted findImageInFolder helper function for cleaner code organization, added proper boundary checks to prevent infinite traversal, maintained backward compatibility with existing functionality.
This fix ensures artist.jpg files are properly detected for single album artists while preserving all existing behavior for multi-album artists.
* refactor: address PR review suggestions
Applied review suggestions from gemini-code-assist bot:
- Added maxArtistFolderTraversalDepth constant instead of hardcoded value 3
- Updated error message to mention that parent directories were also searched
- Enhanced test assertion to verify the improved error message
* fix: improve artist folder traversal logic and enhance error logging
Signed-off-by: Deluan <deluan@navidrome.org>
* fix: remove test for special glob characters in artist folder detection
Signed-off-by: Deluan <deluan@navidrome.org>
* fix: add logging for artist image search in folder
Signed-off-by: Deluan <deluan@navidrome.org>
---------
Signed-off-by: Deluan <deluan@navidrome.org>
2026-01-02 20:51:27 +00:00
Michael Tighe
6d60425441
fix(ui): reset page to 1 on playlist change - #1676 ( #4154 )
...
Signed-off-by: Michael Tighe <strideriidx@gmail.com>
2026-01-02 20:51:26 +00:00
Kevian
7ef5552b88
fix(ui): update Spanish translation ( #4146 )
...
Changed translation of "Top Rated" from "Los Mejores Calificados" to "Mejor Calificados" for consistency purposes with other list entries. While the previous version was correct, this version is shorter and aligns better with the rest of the terms.
2026-01-02 20:51:26 +00:00
Deluan
fe16608012
fix(ui): restructure AboutDialog's version notification layout
...
Signed-off-by: Deluan <deluan@navidrome.org>
2026-01-02 20:51:26 +00:00
Deluan Quintão
da069d3cdb
fix(ui): update song fetching logic to disable for radio ( #4149 )
...
Signed-off-by: Deluan <deluan@navidrome.org>
2026-01-02 20:51:26 +00:00
Deluan
fc128dc038
test: add tests for filtering artists by role
...
Signed-off-by: Deluan <deluan@navidrome.org>
2026-01-02 20:51:26 +00:00
Deluan
d250f5e29c
fix(subsonic): change role filter logic
...
fix #4140
Signed-off-by: Deluan <deluan@navidrome.org>
2026-01-02 20:51:26 +00:00
Caio Cotts
778e78ba5e
Merge commit from fork
2026-01-02 20:51:26 +00:00
Deluan
0dbbe23179
fix(ui): refine playlist details layout and disable play date display for mobile
...
Signed-off-by: Deluan <deluan@navidrome.org>
2026-01-02 20:51:26 +00:00
Deluan Quintão
3c1e29e8eb
fix(ui): update German, Greek, Esperanto, Spanish, Finnish, French, Indonesian, Dutch, Portuguese (BR), Russian, Swedish, Turkish, Ukrainian translations from POEditor ( #3981 )
...
Co-authored-by: navidrome-bot <navidrome-bot@navidrome.org>
2026-01-02 20:51:26 +00:00
Deluan
f6580e5e9e
fix(ui): improve playlist details layout with word break and stats styling
...
Signed-off-by: Deluan <deluan@navidrome.org>
2026-01-02 20:51:26 +00:00
Deluan Quintão
5a3f91e92e
feat(server): add option Lastfm.ScrobbleFirstArtistOnly to send only the first artist ( #4131 )
...
fixes #3791
Signed-off-by: Deluan <deluan@navidrome.org>
2026-01-02 20:51:26 +00:00
ChekeredList71
6b5b64588e
fix(ui): update Hungarian translation ( #4113 )
...
added "missing" strings
Co-authored-by: peter <asd@>
2026-01-02 20:51:26 +00:00
Deluan
8a55dc27ca
feat(server): add M3U file to downloaded playlist
...
Signed-off-by: Deluan <deluan@navidrome.org>
2026-01-02 20:51:26 +00:00
Deluan
f2626e6ebc
Revert "fix(server): failed transcoded files should not be cached ( #4124 )"
...
This reverts commit 9dd5a8c3347f5223d138d4279e3d51e5def4edce.
2026-01-02 20:51:25 +00:00
Deluan
3fbce92e36
refactor: unify logic to export to M3U8
...
Signed-off-by: Deluan <deluan@navidrome.org>
2026-01-02 20:51:25 +00:00
Deluan Quintão
30716652e7
fix(ui): update titles for radios, shares and show pages ( #4128 )
2026-01-02 20:51:25 +00:00
Deluan Quintão
678b71fffe
fix(server): failed transcoded files should not be cached ( #4124 )
...
* Close stream on caching errors
* fix(test): replace errPartialReader with errFakeReader to fix lint error
Signed-off-by: Deluan <deluan@navidrome.org>
* fix(test): update error assertion to check for substring in closed file error
Signed-off-by: Deluan <deluan@navidrome.org>
---------
Signed-off-by: Deluan <deluan@navidrome.org>
2026-01-02 20:51:25 +00:00
Deluan
904cd4f6ad
fix(ui): enhance external link display with consistent minimum heights
...
Signed-off-by: Deluan <deluan@navidrome.org>
2026-01-02 20:51:25 +00:00
Kendall Garner
6c5e5b0c62
fix(share): force share image to be square (to fix aspect ratio) ( #4122 )
...
* fix(ui): update artist link rendering and improve button styles
Signed-off-by: Deluan <deluan@navidrome.org>
* square share player
---------
Signed-off-by: Deluan <deluan@navidrome.org>
Co-authored-by: Deluan <deluan@navidrome.org>
2026-01-02 20:51:25 +00:00
Deluan
c0d03dea3f
fix(ui): fix Reading mediafile(id:undefined): data not found error
...
Signed-off-by: Deluan <deluan@navidrome.org>
2026-01-02 20:51:25 +00:00
Deluan Quintão
ba78e4319c
feat(ui): add smooth image transitions to album and artist artwork ( #4120 )
...
Signed-off-by: Deluan <deluan@navidrome.org>
2026-01-02 20:51:25 +00:00
Deluan
49da388d6c
feat(ui): add playlist cover art display
...
Signed-off-by: Deluan <deluan@navidrome.org>
2026-01-02 20:51:25 +00:00
Deluan
ee126bfe68
test: improve test reliability with longer sleep durations and generous tolerances
...
Signed-off-by: Deluan <deluan@navidrome.org>
2026-01-02 20:51:25 +00:00
Deluan
6fc3e2762b
build(makefile): add golangci-lint installation step to setup
...
Signed-off-by: Deluan <deluan@navidrome.org>
2026-01-02 20:51:25 +00:00
Deluan Quintão
7f62aaa578
fix(server): fix numeric comparisons for float custom tags in smart playlists ( #4116 )
...
* Fix numeric comparisons for custom float tags
* feat(criteria): cast numeric tags for sorting and comparisons
Signed-off-by: Deluan <deluan@navidrome.org>
---------
Signed-off-by: Deluan <deluan@navidrome.org>
2026-01-02 20:51:25 +00:00
dependabot[bot]
ecf9a54263
chore(deps): bump eslint-config-prettier from 9.1.0 to 10.1.5 in /ui ( #4077 )
...
Bumps [eslint-config-prettier](https://github.com/prettier/eslint-config-prettier ) from 9.1.0 to 10.1.5.
- [Release notes](https://github.com/prettier/eslint-config-prettier/releases )
- [Changelog](https://github.com/prettier/eslint-config-prettier/blob/main/CHANGELOG.md )
- [Commits](https://github.com/prettier/eslint-config-prettier/compare/v9.1.0...v10.1.5 )
---
updated-dependencies:
- dependency-name: eslint-config-prettier
dependency-version: 10.1.5
dependency-type: direct:development
update-type: version-update:semver-major
...
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-01-02 20:51:25 +00:00
dependabot[bot]
377c06f52a
build(deps): bump golangci/golangci-lint-action in /.github/workflows ( #4035 )
...
Bumps [golangci/golangci-lint-action](https://github.com/golangci/golangci-lint-action ) from 7 to 8.
- [Release notes](https://github.com/golangci/golangci-lint-action/releases )
- [Commits](https://github.com/golangci/golangci-lint-action/compare/v7...v8 )
---
updated-dependencies:
- dependency-name: golangci/golangci-lint-action
dependency-version: '8'
dependency-type: direct:production
update-type: version-update:semver-major
...
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-01-02 20:51:25 +00:00
Deluan
24e8b2c378
test: update test command to run without watch mode
...
Signed-off-by: Deluan <deluan@navidrome.org>
2026-01-02 20:51:24 +00:00
Deluan
dbdf6d6c3d
chore(deps): update JS dependencies
...
Signed-off-by: Deluan <deluan@navidrome.org>
2026-01-02 20:51:24 +00:00
Deluan
2f1b8709db
build(makefile): fix golangci-lint installation path check
...
Signed-off-by: Deluan <deluan@navidrome.org>
2026-01-02 20:51:24 +00:00
Deluan
0ced591918
chore(deps): update Go dependencies
...
Signed-off-by: Deluan <deluan@navidrome.org>
2026-01-02 20:51:24 +00:00
Deluan Quintão
35e51c9b0f
fix(ui): improve scan status handling (again) ( #4115 )
2026-01-02 20:51:24 +00:00
Deluan
b51afbec90
feat(ui): add missing filter for admin users in album, artist, and song lists
...
Signed-off-by: Deluan <deluan@navidrome.org>
2026-01-02 20:51:24 +00:00
Xabi
4fbd09d21a
fix(ui): update Basque translation ( #4064 )
...
* Update eu.json
Added roles, reordered some strings, small fixes
* fix(ui): update Basque translation
* Update eu.json
third time's the charm
* please bear with me
I'm not a developer. I'm trying my hardest.
* Update eu.json
Added newest strings
2026-01-02 20:51:24 +00:00