Deluan Quintão
514aceb785
feat(ui) add Save Queue to Playlist ( #4110 )
...
* ui: add save queue to playlist
* fix(ui): improve toolbar layout
Signed-off-by: Deluan <deluan@navidrome.org >
* fix(ui): add loading state to save queue dialog
Signed-off-by: Deluan <deluan@navidrome.org >
* fix(ui): refresh playlist after saving queue
Signed-off-by: Deluan <deluan@navidrome.org >
* fix lint
Signed-off-by: Deluan <deluan@navidrome.org >
* remove duplication in PlayerToolbar and add tests
Signed-off-by: Deluan <deluan@navidrome.org >
* fix(i18n): update save queue text for clarity in English and Portuguese
Signed-off-by: Deluan <deluan@navidrome.org >
---------
Signed-off-by: Deluan <deluan@navidrome.org >
2025-05-23 22:04:18 -04:00
Deluan
370f8ba293
fix(ui): update artist link rendering and improve button styles
...
Signed-off-by: Deluan <deluan@navidrome.org >
2025-05-23 17:42:19 -04:00
Deluan
1e4c759d93
test: fix flaky scanner tests by setting maximum open connections to 1
...
Signed-off-by: Deluan <deluan@navidrome.org >
2025-05-23 15:39:44 -04:00
Ewen
e06fbd26b7
fix(ui): update French translation ( #4069 )
...
Signed-off-by: Malesio <krytonspace@gmail.com >
2025-05-23 10:56:47 -04:00
Deluan
9062f4824e
fix(ui): the Portuguese translation is actually Brazilian Portuguese
...
Signed-off-by: Deluan <deluan@navidrome.org >
2025-05-23 09:11:07 -04:00
Deluan
2503d2dbb8
fix: small formatting error in en.json
...
Signed-off-by: Deluan <deluan@navidrome.org >
2025-05-23 09:04:41 -04:00
Deluan
45188e710c
fix(ui): update Portuguese translations
...
Signed-off-by: Deluan <deluan@navidrome.org >
2025-05-23 08:14:53 -04:00
Deluan
9dd050c377
fix: add useResourceRefresh hook to AlbumShow, ArtistShow, MissingFilesList, and PlaylistShow components
...
Signed-off-by: Deluan <deluan@navidrome.org >
2025-05-23 00:02:42 -04:00
Deluan Quintão
3ccc02f375
feat(ui): add remove all missing files functionality ( #4108 )
...
* Add remove all missing files feature
* test: update mediafile_repository tests for missing files deletion
Signed-off-by: Deluan <deluan@navidrome.org >
---------
Signed-off-by: Deluan <deluan@navidrome.org >
2025-05-22 22:28:10 -04:00
Copilot
992c78376c
feat(scanner): add Scanner.PurgeMissing configuration option ( #4107 )
...
* Initial plan for issue
* Add Scanner.PurgeMissing configuration option
Co-authored-by: deluan <331353+deluan@users.noreply.github.com >
* Remove GC call from phaseMissingTracks.purgeMissing method
Co-authored-by: deluan <331353+deluan@users.noreply.github.com >
* Address PR comments for Scanner.PurgeMissing feature
Co-authored-by: deluan <331353+deluan@users.noreply.github.com >
* Address PR comments and add DeleteAllMissing method
Co-authored-by: deluan <331353+deluan@users.noreply.github.com >
* refactor(scanner): simplify purgeMissing logic and improve error handling
Signed-off-by: Deluan <deluan@navidrome.org >
* fix configuration test
Signed-off-by: Deluan <deluan@navidrome.org >
---------
Signed-off-by: Deluan <deluan@navidrome.org >
Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com >
Co-authored-by: deluan <331353+deluan@users.noreply.github.com >
Co-authored-by: Deluan <deluan@navidrome.org >
2025-05-22 20:50:15 -04:00
Deluan Quintão
4a2412eef7
test: add PERFORMER tests ( #4105 )
...
* Add performer participant tests with MBIDs
* test: add handling for mismatched performer names and MBIDs in participant tests
Signed-off-by: Deluan <deluan@navidrome.org >
---------
Signed-off-by: Deluan <deluan@navidrome.org >
2025-05-22 16:41:08 -04:00
Deluan Quintão
98fdc42d09
test: fix ignored artwork tests ( #4103 )
...
* Fix artwork internal tests
* fix: rename artistReader functions to artistArtworkReader for clarity
Signed-off-by: Deluan <deluan@navidrome.org >
* fix: update artwork internal tests to handle corrupted cover scenarios
Signed-off-by: Deluan <deluan@navidrome.org >
---------
Signed-off-by: Deluan <deluan@navidrome.org >
2025-05-22 15:48:24 -04:00
Deluan
eb944bd261
chore: update Makefile to install golangci-lint if not present and adjust lint command
...
Signed-off-by: Deluan <deluan@navidrome.org >
2025-05-21 23:13:32 -04:00
Deluan
84384006a4
docs: update copilot instructions with important commands and linting guidelines
...
Signed-off-by: Deluan <deluan@navidrome.org >
2025-05-21 22:33:33 -04:00
Deluan Quintão
e5438552c6
fix(transcoding): restrict transcoding operations to admin users ( #4096 )
...
Signed-off-by: Deluan <deluan@navidrome.org >
2025-05-21 22:19:23 -04:00
Kendall Garner
6ac3acaaf8
fix(db): allow deleting users that have shares ( #4098 )
...
* fix(db): allow deleting users that have shares
* remove placeholders
2025-05-21 22:16:10 -04:00
Deluan
3953e3217d
docs: add code guidelines for backend and frontend development
...
Signed-off-by: Deluan <deluan@navidrome.org >
2025-05-21 21:57:24 -04:00
Deluan Quintão
6731787053
fix(server): memory leak in cache warmer ( #4095 )
...
* Prevent cache warmer memory leak when cache disabled
* refactor(tests): replace disabledCache with mockFileCache in CacheWarmer tests
Signed-off-by: Deluan <deluan@navidrome.org >
* test(cache): enhance CacheWarmer tests for initialization, buffer management, and error handling
Signed-off-by: Deluan <deluan@navidrome.org >
---------
Signed-off-by: Deluan <deluan@navidrome.org >
2025-05-21 21:48:49 -04:00
Deluan
dd1d3907b4
Revert "refactor(server): simplify lastfm agent initialization logic"
...
This reverts commit 6f52c0201c .
Signed-off-by: Deluan <deluan@navidrome.org >
2025-05-21 16:45:30 -04:00
Kendall Garner
924354eb4b
fix(subsonic): find lyrics by artist or albumartist ( #4093 )
...
* find artist by multivalued exact match, instead of 'artist' field
* check if lyrics are not empty
* refactor(filters): rename function to better reflect its purpose
Signed-off-by: Deluan <deluan@navidrome.org >
---------
Signed-off-by: Deluan <deluan@navidrome.org >
Co-authored-by: Deluan <deluan@navidrome.org >
2025-05-21 09:36:26 -04:00
Deluan Quintão
6880cffd16
feat(ui): add scan progress and error reporting to UI ( #4094 )
...
* feat(scanner): add LastScanError tracking to scanner status
- Introduced LastScanErrorKey constant for error tracking.
- Updated StatusInfo struct to include LastError field.
- Modified scanner logic to store and retrieve last scan error.
- Enhanced ScanStatus response to include error information.
- Updated UI components to display last scan error when applicable.
- Added tests to verify last scan error functionality.
Signed-off-by: Deluan <deluan@navidrome.org >
* feat(scanner): enhance scan status with type and elapsed time tracking
- Added LastScanTypeKey and LastScanStartTimeKey constants for tracking scan type and start time.
- Updated StatusInfo struct to include ScanType and ElapsedTime fields.
- Implemented getScanInfo method to retrieve scan type, elapsed time, and last error.
- Modified scanner logic to store scan type and start time during scans.
- Enhanced ScanStatus response and UI components to display scan type and elapsed time.
- Added formatShortDuration utility for better elapsed time representation.
- Updated activity reducer to handle new scan status fields.
Signed-off-by: Deluan <deluan@navidrome.org >
* refactor(tests): consolidate controller status tests into a single file
- Removed the old controller_status_test.go file.
- Merged relevant tests into the new controller_test.go file for better organization and maintainability.
- Ensured all existing test cases for controller status are preserved and functional.
Signed-off-by: Deluan <deluan@navidrome.org >
* Fix formatting issues
* refactor(scanner): update getScanInfo method documentation
---------
Signed-off-by: Deluan <deluan@navidrome.org >
2025-05-21 09:30:23 -04:00
Caio Cotts
fef1739c1a
feat(server): add DefaultShareExpiration config option ( #4082 )
...
* add DefaultShareExpiration config option
* run prettier so that I can push
* undo reformatting
* sort imports
2025-05-20 22:17:30 -04:00
Deluan Quintão
453630d430
feat: hide missing artists from regular users and Subsonic API ( #4092 )
...
* Handle missing artists for non-admin users
* feat(artist): enhance ArtistList with missing row styling and class management
Signed-off-by: Deluan <deluan@navidrome.org >
---------
Signed-off-by: Deluan <deluan@navidrome.org >
2025-05-20 21:53:02 -04:00
Deluan
4733616d90
chore: removed unused file
...
Signed-off-by: Deluan <deluan@navidrome.org >
2025-05-20 21:25:33 -04:00
Deluan Quintão
ba7fd13724
feat(subsonic): add ISRC support for OpenSubsonic Child ( #4088 )
...
* docs: add testing and logging guidelines to AGENTS.md
Signed-off-by: Deluan <deluan@navidrome.org >
* Introduce TagISRC and update ISRC handling
* fix: update .gitignore to exclude executable files and bin directory
Signed-off-by: Deluan <deluan@navidrome.org >
---------
Signed-off-by: Deluan <deluan@navidrome.org >
2025-05-20 12:37:27 -04:00
Caio Cotts
1e4e3eac6e
fix: update Makefile with new demo URLs ( #4080 )
2025-05-19 15:34:25 -04:00
Deluan Quintão
19d443ec7f
feat(scanner): add Scanner.FollowSymlinks option ( #4061 )
...
* Add Scanner.FollowSymlinks option (default: true) - Fixes #4060
* fix(mockMusicFS): improve symlink handling in Open, Stat, and ReadDir methods
Signed-off-by: Deluan <deluan@navidrome.org >
* refactor(tests): enhance walkDirTree tests with symlink handling and cleanup
Signed-off-by: Deluan <deluan@navidrome.org >
---------
Signed-off-by: Deluan <deluan@navidrome.org >
2025-05-15 10:33:28 -04:00
Deluan Quintão
db92cf9e47
fix(scanner): optimize refresh ( #4059 )
...
* fix(artist): update RefreshStats to only process artists with recently updated media files
Signed-off-by: Deluan <deluan@navidrome.org >
* fix: paginate Artist's RefreshStats, also replace rawSQL with Expr
Signed-off-by: Deluan <deluan@navidrome.org >
---------
Signed-off-by: Deluan <deluan@navidrome.org >
2025-05-14 20:47:03 -04:00
Kendall Garner
ec9f9aa243
feat:(server): support reading lyrics from filesystem ( #2897 )
...
* simplified lyrics handling
* address initial feedback
* add some trace and error logging
* allow fallback lyrics
* update nit
* restore artist/title filter only
2025-04-30 08:10:19 -04:00
Kendall Garner
0d1f2bcc8a
fix(scanner): check if aiff/wma file has cover art ( #3996 )
...
* check if aiff file has cover art
* add cover art to test files, more support in wrapper
* remove wavpak since tag does't read it anyway
2025-04-25 13:00:26 -04:00
Deluan
dfa217ab51
docs(scanner): add overview README document
...
Signed-off-by: Deluan <deluan@navidrome.org >
2025-04-25 12:54:29 -04:00
Kendall Garner
3d6a2380bc
feat(server): add artist/albumartist filter to media file ( #4001 )
...
* add artist/albumartist filter to media file
* artist -> artists_id
2025-04-25 12:50:21 -04:00
DDinghoya
53aa640f35
fix(ui): update Korean translation ( #3980 )
...
* Update ko.json
* Extra characters '들' present before the key.
Co-authored-by: ellipsis-dev[bot] <65095814+ellipsis-dev[bot]@users.noreply.github.com>
* Update resources/i18n/ko.json
Co-authored-by: ellipsis-dev[bot] <65095814+ellipsis-dev[bot]@users.noreply.github.com>
* Update resources/i18n/ko.json
Co-authored-by: ellipsis-dev[bot] <65095814+ellipsis-dev[bot]@users.noreply.github.com>
* Update resources/i18n/ko.json
Co-authored-by: ellipsis-dev[bot] <65095814+ellipsis-dev[bot]@users.noreply.github.com>
* Update resources/i18n/ko.json
Co-authored-by: ellipsis-dev[bot] <65095814+ellipsis-dev[bot]@users.noreply.github.com>
* Update resources/i18n/ko.json
Co-authored-by: ellipsis-dev[bot] <65095814+ellipsis-dev[bot]@users.noreply.github.com>
---------
Co-authored-by: Deluan Quintão <github@deluan.com >
Co-authored-by: ellipsis-dev[bot] <65095814+ellipsis-dev[bot]@users.noreply.github.com>
2025-04-24 19:22:31 -04:00
Kendall Garner
e4d65a7828
feat(scanner): add unsynced lyrics to default mapping ( #3997 )
2025-04-24 17:40:51 -04:00
Deluan Quintão
b41123f75e
chore: remove DevEnableBufferedScrobble and always enable buffered scrobbling ( #3999 )
...
Removed all code, config, and test references to DevEnableBufferedScrobble. Buffered scrobbling is now always enabled. Added this option to the list of deprecated config options with a warning. Updated all logic and tests to reflect this. No linter issues remain. Some PlayTracker tests are failing, but these are likely due to test data or logic unrelated to this change. All other tests pass. Review required for PlayTracker test failures.
Signed-off-by: Deluan <deluan@navidrome.org >
2025-04-24 17:19:50 -04:00
Deluan
6f52c0201c
refactor(server): simplify lastfm agent initialization logic
...
Signed-off-by: Deluan <deluan@navidrome.org >
2025-04-19 23:36:53 -04:00
Deluan
4944f8035a
test: add tests for userName and AbsolutePath in core/common.go
...
Added Ginkgo/Gomega tests for userName and AbsolutePath functions in core/common.go. Tests cover normal and error cases, using existing mocks and helpers. This improves coverage and ensures correct behavior for user context extraction and library path resolution.
2025-04-18 11:53:47 -04:00
Ivan Pešić
0d5097d888
fix(ui): update Serbian translation ( #3941 )
2025-04-17 19:27:12 -04:00
Deluan Quintão
ed7ee3d9f8
fix(ui): always order album tracks by disc and track number ( fixes #3720 ) ( #3975 )
...
* fix(ui): ensure album tracks are always ordered by disc and track number (fixes #3720 )
* refactor(ui): remove obsolete release date grouping logic from SongDatagrid and AlbumSongs
* fix(ui): ensure correct album track ordering in context menu and play button
* fix: Update album sort to use album_id instead of release_date
* refactor: Adjust filters in PlayButton and AlbumContextMenu
* fix: correct typo in comment regarding participants in GetMissingAndMatching function
* fix: prevent visual separation of tracks on same disc
Removes the leftover `releaseDate` check from the `firstTracksOfDiscs` calculation in `SongDatagridBody`. This check caused unnecessary `DiscSubtitleRow` insertions when tracks on the same disc had different release dates, leading to an incorrect visual grouping that resembled a multi-disc layout.
This change ensures disc subtitles are only shown when the actual `discNumber` changes, correcting the UI presentation issue reported in issue #3720 after PR #3975 .
* fix: remove remaining releaseDate references in SongDatagrid
Cleaned up leftover `releaseDate` references in `SongDatagrid.jsx`:
- Removed `releaseDate` parameter and usage from `handlePlaySubset` in `DiscSubtitleRow`.
- Removed `releaseDate` prop passed to `AlbumContextMenu` in `DiscSubtitleRow`.
- Removed `releaseDate` from the drag item data in `SongDatagridRow`.
- Removed `releaseDate` parameter and the corresponding `else` block from the `playSubset` function in `SongDatagridBody`.
This ensures the component consistently uses `discNumber` for grouping and playback actions initiated from the disc subtitle, fully resolving the inconsistencies related to issue #3720 .
2025-04-17 19:23:53 -04:00
Deluan Quintão
74803bb43e
fix(ui): update Russian, Turkish translations from POEditor ( #3971 )
...
Co-authored-by: navidrome-bot <navidrome-bot@navidrome.org >
2025-04-16 21:09:50 -04:00
marcbres
0159cf73e2
fix(ui): updated Catalan translations ( #3973 )
...
Co-authored-by: Marc Bres Gil <marc@helm>
2025-04-16 21:05:59 -04:00
Dongeun
ac1d51f9d0
fix(ui): update Chinese (Simplified) translations ( #3938 )
2025-04-16 21:05:26 -04:00
Thomas Johansen
91eb661db5
fix(ui): update Norwegian translation #3943
2025-04-16 21:04:10 -04:00
Guilherme Souza
524d508916
feat(ui): show sampleRate in song info dialog ( #3960 )
...
* feat(ui): show sampleRate in song info dialog
* npm run prettier --write
2025-04-12 20:52:47 -04:00
Deluan
a6f1f7b7e3
fix(server): albumtype in Smart Playlists
...
Signed-off-by: Deluan <deluan@navidrome.org >
2025-04-11 23:53:16 -04:00
Deluan Quintão
49b8cfc261
fix(artwork): always select the coverArt of the first disc in multi-disc albums ( #3950 )
...
* feat(artwork): sort image files for consistent cover art selection
Signed-off-by: Deluan <deluan@navidrome.org >
* feat(artwork): improve album cover art selection by considering disc numbers
Signed-off-by: Deluan <deluan@navidrome.org >
---------
Signed-off-by: Deluan <deluan@navidrome.org >
2025-04-11 23:39:57 -04:00
Deluan
bcea8b832a
chore(deps): update Go version to 1.24.2 in go.mod
2025-04-11 23:18:00 -04:00
Deluan Quintão
58367afaea
refactor: external_metadata -> external.Provider ( #3903 )
...
* tests for TopSongs
Signed-off-by: Deluan <deluan@navidrome.org >
* convert to Ginkgo
Signed-off-by: Deluan <deluan@navidrome.org >
* consolidate tests
Signed-off-by: Deluan <deluan@navidrome.org >
* rename external metadata -wip
Signed-off-by: Deluan <deluan@navidrome.org >
* rename external metadata to extdata.Provider
Signed-off-by: Deluan <deluan@navidrome.org >
* refactor tests - wip
Signed-off-by: Deluan <deluan@navidrome.org >
* refactor test helpers
Signed-off-by: Deluan <deluan@navidrome.org >
* remove reflection
Signed-off-by: Deluan <deluan@navidrome.org >
* use mock.Mock
Signed-off-by: Deluan <deluan@navidrome.org >
* refactor
Signed-off-by: Deluan <deluan@navidrome.org >
* fix
Signed-off-by: Deluan <deluan@navidrome.org >
* receive Agents interface in Provider constructor
Signed-off-by: Deluan <deluan@navidrome.org >
* use mock for Agents
Signed-off-by: Deluan <deluan@navidrome.org >
* tests for SimilarSongs
Signed-off-by: Deluan <deluan@navidrome.org >
* remove duplication
Signed-off-by: Deluan <deluan@navidrome.org >
* ArtistImage tests
Signed-off-by: Deluan <deluan@navidrome.org >
* AlbumImage tests
Signed-off-by: Deluan <deluan@navidrome.org >
* fix provider error handling
Signed-off-by: Deluan <deluan@navidrome.org >
* UpdateAlbumInfo tests - wip
Signed-off-by: Deluan <deluan@navidrome.org >
* UpdateAlbumInfo tests - wip
Signed-off-by: Deluan <deluan@navidrome.org >
* refactor
Signed-off-by: Deluan <deluan@navidrome.org >
* refactor
Signed-off-by: Deluan <deluan@navidrome.org >
* refactor
Signed-off-by: Deluan <deluan@navidrome.org >
* UpdateArtistInfo tests - wip
Signed-off-by: Deluan <deluan@navidrome.org >
* clean up
Signed-off-by: Deluan <deluan@navidrome.org >
* refactor
Signed-off-by: Deluan <deluan@navidrome.org >
* fix test descriptions
Signed-off-by: Deluan <deluan@navidrome.org >
* refactor
Signed-off-by: Deluan <deluan@navidrome.org >
* refactor: rename extdata package to external
Signed-off-by: Deluan <deluan@navidrome.org >
---------
Signed-off-by: Deluan <deluan@navidrome.org >
2025-04-08 21:11:09 -04:00
Deluan
6b59f5f73a
feat(ui): add genre and mood fields to AlbumSongs component
...
Signed-off-by: Deluan <deluan@navidrome.org >
2025-04-08 18:13:37 -04:00
Deluan Quintão
5f0c1e7387
chore(deps) upgrade Go dependencies, including golangci-lint ( #3937 )
...
* chore(deps): update Go dependencies
Signed-off-by: Deluan <deluan@navidrome.org >
* chore(deps): upgrade golangci-lint
Signed-off-by: Deluan <deluan@navidrome.org >
* build: upgrade golangci-lint-action to v7
Signed-off-by: Deluan <deluan@navidrome.org >
* go mod tidy
Signed-off-by: Deluan <deluan@navidrome.org >
---------
Signed-off-by: Deluan <deluan@navidrome.org >
2025-04-07 19:42:00 -03:00