Deluan
2ec9f6166e
Use order/sort album/artist when sorting tracks in playlists. Fixes #2819
2026-01-02 20:32:59 +00:00
Deluan
48751c0936
Add tests for toSQL
2026-01-02 20:32:59 +00:00
caiocotts
61653f15ad
Fix fields not being sent on getPlaylist.view responses.
2026-01-02 20:32:59 +00:00
Deluan
7d33f15eaa
Remove offset and limit from count queries. Fixes #2443
2026-01-02 20:32:58 +00:00
Deluan
020f9db5bd
Add log message to try to capture error in #2735
2026-01-02 20:32:58 +00:00
Deluan
faed89622d
Fix ReplayGain values not being retrieved from DB
2026-01-02 20:32:37 +00:00
Deluan
1423b44600
Fix PreferSortTags
2026-01-02 20:32:35 +00:00
Deluan
a821c35367
Add context to SQL queries, enabling cancellation
2026-01-02 20:32:35 +00:00
Deluan Quintão
e8861b22a0
Add new PrefSortTags option ( #2696 )
2026-01-02 20:32:24 +00:00
Deluan
70148afc63
Convert internal disc number representation to int
2026-01-02 20:31:57 +00:00
Deluan
d9ce8b54f0
Add discs to album
2026-01-02 20:31:57 +00:00
Deluan Quintão
274ad1f7d5
Replace beego/orm with dbx ( #2693 )
...
* Start migration to dbx package
* Fix annotations and bookmarks bindings
* Fix tests
* Fix more tests
* Remove remaining references to beego/orm
* Add PostScanner/PostMapper interfaces
* Fix importing SmartPlaylists
* Renaming
* More renaming
* Fix artist DB mapping
* Fix playlist updates
* Remove bookmarks at the end of the test
* Remove remaining `orm` struct tags
* Fix user timestamps DB access
* Fix smart playlist evaluated_at DB access
* Fix search3
2026-01-02 20:31:57 +00:00
Deluan
1caef8dc8c
Return genres in bookmark endpoints (OpenSubsonic)
2026-01-02 20:31:56 +00:00
Deluan
417748fe46
Coalesce null annotation values, to better rank them against annotations with value 0
2026-01-02 20:31:56 +00:00
Deluan Quintão
8b14b41e54
Optimize search3, by removing OFFSET when paginating ( #2655 )
...
* Optimize pagination, removing offset
* For search, don't add `where` clause for empty queries
* Revert "Replace `COUNT(DISTINCT primary_key)` with `COUNT(*)`"
Genres are required as part of the count queries, so filter by genres work
* Optimize search3 query, using order by id if it is a "" query.
Also fix the optimizePagination query logic
* Allow offset optimizer threshold to be configured
2026-01-02 20:31:30 +00:00
Deluan
bc2461d974
Revert "Replace COUNT(DISTINCT primary_key) with COUNT(*)"
...
Genres are required as part of the count queries, so filter by genres work
2026-01-02 20:31:30 +00:00
Deluan
a8aa05373d
Replace COUNT(DISTINCT primary_key) with COUNT(*)
2026-01-02 20:31:30 +00:00
Deluan
0887f19708
Show SQL errors in queryAll
2026-01-02 20:31:30 +00:00
Deluan
062889a88a
Generalize BreakUp/RangByChunks functions
2026-01-02 20:31:30 +00:00
Caio Cotts
94eefe62df
Return genres in search3 endpoint.
2026-01-02 20:31:12 +00:00
Kendall Garner
4745950eb9
Do not empty old artist metadata ( #2423 )
2026-01-02 20:29:59 +00:00
Deluan
edb75f268f
Move string slice functions to slice package as generic functions
2026-01-02 20:27:26 +00:00
Deluan
f80e628442
Order albums by full original date (this time is for real). Fixes #1452
2026-01-02 20:27:26 +00:00
Deluan
cff7d5ccfc
Order albums by full original date. Fixes #1452
2026-01-02 20:27:26 +00:00
certuna
3d1228db3b
Support for Original Date, Release Date & splitting/grouping of album editions ( #2162 )
...
* Update AlbumGridView.js
* Update AlbumDetails.js
* Update AlbumDetails.js
* Create DoubleRangeField.js
* Update and rename DoubleRangeField.js to RangeFieldDouble.js
* Update RangeFieldDouble.js
* Update AlbumGridView.js
* Update AlbumDetails.js
* Update RangeFieldDouble.js
* Update index.js
* Update RangeFieldDouble.js
* Update RangeFieldDouble.js
* Update RangeFieldDouble.js
* Update RangeFieldDouble.js
* Update RangeFieldDouble.js
* Update AlbumDetails.js
* Update RangeFieldDouble.js
* Update AlbumDetails.js
* Update RangeFieldDouble.js
* Update AlbumDetails.js
* Update RangeFieldDouble.js
* Update RangeFieldDouble.js
* Update AlbumDetails.js
* Update AlbumDetails.js
* Update RangeFieldDouble.js
* Update RangeFieldDouble.js
* Update AlbumDetails.js
* Update RangeFieldDouble.js
* Update AlbumDetails.js
* Update en.json
* Update en.json
* Update AlbumDetails.js
* Update RangeFieldDouble.js
* Update AlbumGridView.js
* Update AlbumDetails.js
* Update AlbumSongs.js
* Update ContextMenus.js
* Update SongDatagrid.js
* Update AlbumSongs.js
* Update SongDatagrid.js
* Update SongDatagrid.js
* Update SongDatagrid.js
* Update AlbumSongs.js
* Update SongList.js
* Update playlist_track_repository.go
* Update 20230113000000_release_year.go
* Update PlayButton.js
* Update mediafile_repository.go
* Update album.go
* Update playlist_track_repository.go
* Update playlist_track_repository.go
* Update SongDatagrid.js
* Update 20230113000000_release_year.go
* Update SongDatagrid.js
* Update AlbumSongs.js
* Update SongDatagrid.js
* Update SongDatagrid.js
* Update SongDatagrid.js
* Update SongDatagrid.js
* Update AlbumDetails.js
* Update AlbumSongs.js
* Update AlbumSongs.js
* Update RangeFieldDouble.js
* Update SongDatagrid.js
* Update 20230113000000_release_year.go
* Update 20230113000000_release_year.go
* Update 20230113000000_release_year.go
* Update 20230113000000_release_year.go
* Update AlbumSongs.js
* Update AlbumSongs.js
* Update mapping.go
* Update RangeFieldDouble.js
* Update AlbumGridView.js
* Update AlbumSongs.js
* Update en.json
* Update SongDatagrid.js
* Update SongDatagrid.js
* Update metadata.go
* Update mapping.go
* Update AlbumDetails.js
* Update AlbumGridView.js
* Update RangeFieldDouble.js
* Update mapping.go
* Update metadata.go
* Update mapping.go
* Update AlbumDetails.js
* Update 20230113000000_release_year.go
* Update AlbumDetails.js
* Update en.json
* Update configuration.go
* Update mapping.go
* Update configuration.go
* Update mediafile.go
* Update metadata.go
* Update RangeFieldDouble.js
* Update 20230113000000_release_year.go
* Update configuration.go
* Update mapping.go
* Update mediafile.go
* Update mapping.go
* Update RangeFieldDouble.js
* Update RangeFieldDouble.js
* Update RangeFieldDouble.js
* Update RangeFieldDouble.js
* Update RangeFieldDouble.js
* Update 20230113000000_release_year.go
* Update AlbumDetails.js
* Update RangeFieldDouble.js
* Update mapping.go
* Update metadata.go
* Update album.go
* Update mediafile.go
* Update mediafile.go
* Update album.go
* Update fields.go
* Update mediafile_repository.go
* Update playlist_track_repository.go
* Update AlbumSongs.js
* Update SongDatagrid.js
* Update PlayButton.js
* Update SongList.js
* Update ContextMenus.js
* Update SongDatagrid.js
* Update metadata.go
* Update ArtistShow.js
* Update mapping.go
* Update configuration.go
* Update mapping.go
* Update metadata.go
* Update metadata.go
* Update mapping.go
* Update metadata.go
* Update metadata.go
* Update mapping.go
* Update 20230113000000_release_year.go
* Update 20230113000000_release_year.go
* Update mapping.go
* Update metadata.go
* Update metadata.go
* Update album.go
* Update mediafile.go
* Update AlbumDetails.js
* Update AlbumSongs.js
* Update album.go
* Update mediafile.go
* Update metadata.go
* Update mediafile.go
* Update 20230113000000_release_year.go
* Update 20230113000000_release_year.go
* Update album.go
* Update mediafile.go
* Update RangeFieldDouble.js
* Update AlbumDetails.js
* Update AlbumGridView.js
* Update en.json
* Update AlbumGridView.js
* Update RangeFieldDouble.js
* Update and rename 20230113000000_release_year.go to 20230113000000_release_date.go
* Update album.go
* Update mediafile.go
* Update fields.go
* Update playlist_track_repository.go
* Update mediafile_repository.go
* Update mapping.go
* Update metadata.go
* Update mapping.go
* Update SongDatagrid.js
* Update RangeFieldDouble.js
* Update index.js
* Update ContextMenus.js
* Update PlayButton.js
* Create FormatDate.js
* Update SongList.js
* Update AlbumDetails.js
* Update AlbumSongs.js
* Update AlbumSongs.js
* Update en.json
* Update AlbumDetails.js
* Update album.go
fixed conflict I think?
* Update mediafile.go
fixed conflict
* Format with goimports
* Update SongDatagrid.js
only show Cat # in desktop view
* Update metadata_internal_test.go
* Update metadata_test.go
* Delete test.mp3
* Add files via upload
mp3 test file with Date, Original Date and Release Date
* Update metadata_test.go
* Update metadata_test.go
* Update metadata_test.go
* Update metadata_test.go
* Update taglib_test.go
* Delete test.mp3
* Add files via upload
file with replaygain & dates
* Update AlbumGridView.js
* Update AlbumDetails.js
* Update AlbumSongs.js
* Update ContextMenus.js
* Update FormatDate.js
* Update PlayButton.js
* Update RangeFieldDouble.js
* Update SongDatagrid.js
* Update AlbumSongs.js
* Update SongDatagrid.js
* Update AlbumSongs.js
* Fix formatting
* Update mapping.go
* Update AlbumSongs.js
* Update SongDatagrid.js
* Update SongDatagrid.js
prettier
* Create RangeDoubleField.js
rename of RangeFieldDouble.js
* Update AlbumGridView.js
RangeFieldDouble -> RangeDoubleField
* Update mediafile.go
AllOrNothing() -> allOrNothing()
* Update metadata_internal_test.go
getYear -> getDate
* Update AlbumDetails.js
wrote suggested changes
* Update en.json
Editions -> Releases & fixed the field name
* Update configuration.go
Rename Editions -> Releases
* Update 20230113000000_release_date.go
Editions -> Releases
* Update album.go
Editions -> Releases
* Update mediafile.go
Editions -> Releases
* Update AlbumDetails.js
Editions -> Releases
* Update AlbumSongs.js
Editions -> Releases
* Update RangeDoubleField.js
Editions -> Releases
* Update SongDatagrid.js
Editions -> Releases
* Update index.js
FormatFullDate and RangeDoubleField
* Rename FormatDate.js to FormatFullDate.js
* Delete RangeFieldDouble.js
* Update mediafile.go
AllOrNothing -> allOrNothing
* Update mapping.go
Editions -> Releases
* Update AlbumDetails.js
prettier
* Update SongDatagrid.js
showReleaseRow -> showReleaseDivider
* Update AlbumSongs.js
showReleaseRow -> showReleaseDivider for clarity
* Update and rename 20230113000000_release_date.go to 20230515184510_add_release_date.go
- rename the migration file
- fixed the import to goose/v3
- additional db fields for original date & year
* Update 20230515184510_add_release_date.go
* Update fields.go
* Update album.go
* Update mediafile.go
* Update mapping.go
* Update AlbumDetails.js
* Update en.json
* Update AlbumDetails.js
* Update AlbumDetails.js
now hopefully prettier
* Update mapping.go
---------
Co-authored-by: Deluan <deluan@navidrome.org>
2026-01-02 20:27:25 +00:00
Deluan
55c1d95376
Enable SQL migrations
2026-01-02 20:25:44 +00:00
Xidorn Quan
a46d8e1442
Update play_date on scrobble only when newer - #2262 ( #2263 )
...
* fix(persistence): Update play_date on scrobble only when newer - #2262
Signed-off-by: Xidorn Quan <me@upsuper.org>
* expand iff
---------
Signed-off-by: Xidorn Quan <me@upsuper.org>
2026-01-02 20:24:48 +00:00
Deluan
915423e241
Make playlist tracks match case-insensitive. Fix #1720
2026-01-02 20:24:14 +00:00
Deluan
6013e30f7b
Make ffmpeg path configurable, also finds it automatically in current folder. Fixes #1932
2026-01-02 20:22:41 +00:00
selfhoster1312
ee9212357e
Create accounts automatically when authenticating from HTTP header ( #2087 )
...
* Create accounts automatically when authenticating from HTTP header
* Disable password check when header auth is enabled
* Formatting
* Password change is valid when no password (old or new) is provided
* Test suite runs with header auth disabled (mock config)
Prevents nil pointer access (panic) while testing password validating logic
* Use a constant prefix for autogenerated passwords (header auth case)
* Add tests
* Add context to log messages
Co-authored-by: Deluan <deluan@navidrome.org>
2026-01-02 20:22:01 +00:00
Deluan
4f99addd02
Add Share to Context menus, also share artist
2026-01-02 20:22:00 +00:00
Deluan
c4940c09f2
Keep order of shared mediafiles
2026-01-02 20:22:00 +00:00
Deluan
28f435f8a9
Enable sharing only selected songs with the Subsonic API
2026-01-02 20:22:00 +00:00
Deluan
bfa35c11b8
Fix empty entry collection in Shares
2026-01-02 20:21:59 +00:00
Deluan
041f91ad53
Add getShares and createShare Subsonic endpoints
2026-01-02 20:21:59 +00:00
Deluan
b2aac87d1d
More work on Shares
2026-01-02 20:21:58 +00:00
Deluan
04abdf4509
Initial work on Shares
2026-01-02 20:21:58 +00:00
Zane van Iperen
8fd8ab5eac
Change genre.Put() to upsert. Fix #1918 and #1564 ( #1920 )
...
* persistence/genre: change Put() to upsert
Absolutely disgusting hack to work around [1]. Try to insert the genre,
but if it conflicts, ignore it and update the genre with the existing
ID.
[1]: https://github.com/navidrome/navidrome/issues/1918 .
* scanner: remove cached genre repository
Not needed anytmore. And remember:
"Many Small Queries Are Efficient In SQLite" [1].
[1]: https://www.sqlite.org/np1queryprob.html
* Revert "scanner: remove cached genre repository"
This reverts commit c5d900aa43e1c86b69f923b408e11ab8df8d815c.
* Use squirrel to build SQL, to reduce risk of SQL injection
Co-authored-by: Deluan <deluan@navidrome.org>
2026-01-02 20:21:19 +00:00
Kendall Garner
2cab4a4352
Add Internet Radio support ( #2063 )
...
* add internet radio support
* Add dynamic sidebar icon to Radios
* Fix typos
* Make URL suffix consistent
* Fix typo
* address feedback
* Don't need to preload when playing Internet Radios
* Reorder migration, or else it won't be applied
* Make Radio list view responsive
Also added filter by name, removed RadioActions and RadioContextMenu, and added a default radio icon, in case of favicon is not available.
* Simplify StreamField usage
* fix button, hide progress on mobile
* use js styles over index.css
Co-authored-by: Deluan <deluan@navidrome.org>
2026-01-02 20:21:17 +00:00
Deluan
6052243ff1
Optimize playlist cover generation
2026-01-02 20:21:17 +00:00
Deluan
21bc2a97d3
Don't refresh smart playlists when generating covers
2026-01-02 20:20:20 +00:00
Deluan
514c92997e
Implement new Artist refresh
2026-01-02 20:20:18 +00:00
Deluan
e44a9574b9
Remove CoverArtID, fix tests
2026-01-02 20:20:17 +00:00
Deluan
9236e18631
Remove current artwork implementation
2026-01-02 20:20:17 +00:00
Deluan
4fc0610558
Move album refresh to scanner
2026-01-02 20:20:17 +00:00
Deluan
e8d8fdd8eb
Remove old refresh code
2026-01-02 20:20:17 +00:00
Deluan
9cf05a6b60
Moved logic of collapsing songs into albums to model package
...
(it should really be called domain.... maybe will rename it later)
2026-01-02 20:20:17 +00:00
Deluan
e0bfb22007
Rename log.LevelCritical to log.LevelFatal
2026-01-02 20:20:16 +00:00
Deluan
2afc93bb9b
Add missing context to logger calls
2026-01-02 20:16:00 +00:00
Deluan
e833042f99
Fix adding songs to plain playlists
2026-01-02 20:15:59 +00:00