Releases: navidrome/navidrome
v0.54.2
Changelog
Bug fixes
- 99dfb83: fix(insights): get Windows version (@deluan)
- c8f174e: fix(server): change log level for some last.fm warnings (@deluan)
- 8880f67: fix(ui): update Español, Français, Svenska translations from POEditor (#3576) (@deluan)
- 972229d: fix(ui): update Hungarian translation (#3574) (@ChekeredList71)
Build process updates
- d4dc818: build(ci): fix release version label and package names (#3573) (@deluan)
- 0b18489: build(poeditor): change commit message for translation update PRs (@deluan)
Other work
Full Changelog: v0.54.1...v0.54.2
Helping out
This release is only possible thanks to the support of some awesome people!
Want to be one of them?
You can sponsor, pay me a Ko-fi, or contribute with code.
Where to go next?
v0.54.1
We are thrilled to announce the release of Navidrome version 0.54.1! This update introduces several new features, enhancements, and important bug fixes to elevate your music streaming experience. (Yes, ChatGPT is our new Public Relations intern π)
π Important Security Bugfix
JWT secrets are now stored encrypted in the Database. A CVE Advisory will be published soon.
π Noteworthy New Features
π Anonymous Usage Data Collection
As discussed with the community (in Discord and Reddit), Navidrome now includes anonymous usage data collection (opt-out) to help us understand how you interact with the application. This data assists in improving features and performance while ensuring your privacy is respected. For details on what is collected and how, read this.
For the TL;DR opt-out instructions, set the new config option EnableInsightsCollector
(or ND_ENABLEINSIGHTSCOLLECTOR
env var) to false
(but we really hope you consider leaving it enabled β your participation will be much appreciated).
π₯οΈ Enhanced Packaging Support
New MSI Installer: Thanks to @mintsoft for creating a MSI installer, for a smoother and more reliable installation process on Windows platforms.
Linux Package Installer: And thanks to @kgarner7, we now distribute .deb
and .rpm
packages for Navidrome, which automatically install it as a service on compatible Linux distributions.
Apple Silicon Binaries: We finally offer ARM builds for macOS, optimized for the Apple processors.
π Native Backup and Restore
Introducing a native automatic backup mechanism (thanks again, @kgarner7), making it easier than ever to safeguard your music library. Check the backup options in the configuration documentation. More documentation to follow.
π¨ Artists from Last.fm
Navidrome now also fetches artist images directly from Last.fm. No need to create a Spotify account anymore :)
π§ User Interface Improvements
Drag-and-Drop Playlists: You can now drag and drop song titles from the player directly to the sidebar playlist, making playlist management more intuitive and efficient.
π Navidrome Guru on Gurubase.io
Weβve partnered with Gurubase.io to bring you Navidrome Guru. Now you can chat with an AI that is (almost) expert on Navidrome configuration and issues. More information is being added to it everyday, so it will only get better. Give it a try and let us what is missing and how it can improve.
βοΈ Other Improvements
And as usual, lots of bug fix and improvements. For more details look at the complete changelog.
Changelog
New Features
- 8e2052f: feat(Insights): add anonymous usage data collection (#3543) (@deluan)
- 9c3b456: feat(build): MSI installer improvements (#3376) (@mintsoft)
- 8fb09e7: feat(server): get artist images from Last.fm (@deluan)
- 5573051: feat(server): provide native backup/restore mechanism (#3194) (@kgarner7)
- 06c9c1e: feat(server): require explicitly enabling reverse proxy auth for unix sockets (#3062) (@crazygolem)
- 0a650de: feat(subsonic): add MusicBrainz ID and Sort Name to getArtists (@kgarner7)
- 23bebe4: feat(subsonic): getOpenSubsonicExtensions is now public (@deluan)
- 8b5af67: feat(subsonic): support OS clearing play queue (#3399) (@deluan)
- 0281d06: feat(ui): Allow drag-and-drop song title from player to sidebar playlist (#2435) (@Egor3f)
- a9334b7: feat(ui): show user's lastAccess (#3342) (@deluan)
- 768160b: feat: Windows MSI installer and service support (#3125) (@mintsoft)
- 9ae898d: feat: add Navidrome Guru on Gurubase.io (#3491) (@kursataktas)
- cd0cf7c: feat: cache login background images (#3462) (@deluan)
Bug fixes
- 851f54e: fix(ci): fix linux packages upload (#3569) (@deluan)
- 6bc4c03: fix(insights): better status (@deluan)
- 906ac63: fix(insights): check if running in a container (@deluan)
- 6c11649: fix(insights): fix issues and improve reports (#3558) (@deluan)
- 82633d7: fix(playlists): make the m3u parser case-insensitive again #3410 (@caiocotts)
- 92a1f19: fix(scanner): make activity panel update rate configurable (@deluan)
- 2866878: fix(server): FFmpegPath can contain spaces (@deluan)
- 627417d: fix(server): add disc number to fake path. (@deluan)
- 8808ead: fix(server): allow extra spaces in transcoding commands (@deluan)
- 9cbdb20: fix(server): don't try to save JWT if it fails to encrypt (@deluan)
- 7f030b0: fix(server): encrypt jwt secret at rest (@deluan)
- fcb5e1b: fix(server): fix case-insensitive sort order and add indexes to improve performance (#3425) (@deluan)
- 177a1f8: fix(server): more race conditions when updating artist/album from external sources (@deluan)
- 2b0bfbd: fix(server): race condition when updating artist/album from external sources (@deluan)
- 3e47819: fix(server): reduce album placeholder image size by converting it to webp (@deluan)
- 3fda744: fix(server): try to find proper embedded front cover - only for vorbis comments for now (#3348) (@deluan)
- b7285b2: fix(test): vitest was hanging due to vite-plugin-eslint plugin (@deluan)
- cbf5e3d: fix(ui): PWA not updating properly in new Vite config (#3493) (@deluan)
- dcc84e2: fix(ui): Update Chinese (simplified) Translation (#3490) (@qx100)
- 32afe96: fix(ui): completed the translation of zh-Hant and zh-Hans (#3450) (@york9675)
- 2d8507c: fix(ui): don't hide Last.fm scrobble switch (#3561) (@deluan)
- 4f8cd53: fix(ui): fix play queue for play button and context menus (#3559) (@caiocotts)
- 1a36f06: fix(ui): service worker crashing on precacheAndRoute (#3528) (@kgarner7)
- 0232afd: fix(ui): service worker does not load new version of ui (#3402) (@deluan)
- 04f296c: fix(ui): show last.fm api-key missing in a
FormHelperText
(@deluan) - 0d520de: fix(ui): update Basque (#3542) (@xabirequejo)
- de04393: fix(ui): update German translation (#3345) (@Lokke)
- 640a734: fix(ui): update Hungarian translation (#3346) (@ChekeredList71)
- a358d10: fix(ui): update Serbian translation (#3361) (@eevan78)
- 3e7c4b6: fix(ui): update Turkish, Galician and Polish translations from POEditor (#3426) (@deluan)
- 3713032: fix(ui): update translations from POEditor (#3349) (@deluan)
- 72a0f59: fix(ui): update translations from POEditor (#3568) (@deluan)
- ae6499b: fix: PRs should not try to push to docker (#3393) (@deluan)
- 16d1314: fix: do not add nil filters (#3394) (@deluan)
- 943b456: fix: do not try to push to ghcr.io without proper permissions (#3395) (@deluan)
- 6c6223f: fix: forcing transcoding when client does not specify transcoding options (#3455) (@deluan)
- ccce1c0: fix: pre-cache square images, or else they are not useful for the Album Grid (@deluan)
- 9c46e2b: fix: use docker buildx, as required by Linux (@deluan)
- 00c6a0e: fix: use target platform to build final image (#3397) (@deluan)
- bbb3182: refactor(server): remove ffmpeg unused code (@deluan)
Documentation updates
Build process updates
- af1add4: Revert "build: new pipeline, new way to cross-compile and build docker images locally. (#3383)" (@deluan)
- d9fa19d: build(ci): bump goreleaser to 2.3.2 (@deluan)
- 9e5849e: build(dependabot): add docker configuration (@deluan)
- 69e2a6d: build(netgo): make sure the project is always compiled with
netgo
build tag (#3428) (@deluan) - fcdd30b: build(ui): migrate from CRA/Jest to Vite/Vitest (#3311) (@deluan)
- 154e13f: build: add packages for deb and rpm to release (#3202) (@kgarner7)
- 5f6a90e: build: fix build on FreeBSD (#3403) (@jan666)
- b14c790: build: new pipeline, new way to cross-compile and build docker images locally. (#3383) (@deluan)
- 2142...
v0.53.3
Changelog
Bug fixes
- 76614b8: fix(scanner): update lib.LastScanAt on each rescan (#3313) (@deluan)
- 5be73d4: fix(server): allow changing local login background url (@deluan)
- 13af8ed: fix(server): preserve m3u file order on import (#3314) (@kgarner7)
- 80acfc1: fix(server): throttle events sent to UI when scanning. Relates to #1511 (@deluan)
- d31952f: fix(ui): avoid invalid requests after logoff (@deluan)
- 782cd26: fix(ui): save play mode for player (#3315) (@kgarner7)
- 32d2d7c: fix(ui): update Basque translation (#3306) (@xabirequejo)
- 1fa245d: fix(ui): update Swedish translation (#3316) (@andylundqvist)
Other work
- 84dc105: chore(deps): bump github.com/prometheus/client_golang from 1.20.3 to 1.20.4 (#3301) (@dependabot[bot])
- 6031d97: chore(deps): bump rollup from 2.79.1 to 2.79.2 in /ui (#3319) (@dependabot[bot])
- 24d9117: chore(deps): bump github.com/pressly/goose/v3 from 3.22.0 to 3.22.1 (#3302) (@dependabot[bot])
- 825cbcb: chore(readme): reddit badge is working again. (@deluan)
- 669c8f4: refactor(server): replace RangeByChunks with Go 1.23 iterators (#3292) (@deluan)
- 10a1b5f: test(scanner): remove redundant fixture file (@deluan)
Full Changelog: v0.53.2...v0.53.3
Helping out
This release is only possible thanks to the support of some awesome people!
Want to be one of them?
You can sponsor, pay me a Ko-fi or contribute with code.
Where to go next?
v0.53.2
Changelog
New Features
Bug fixes
- 46be041: fix(scanner): improve M3U playlist import times (#2706) (@deluan)
- 5b89bf7: fix(server): play queue should not return empty entries for deleted tracks (@deluan)
- 04603a1: fix(subsonic): honour PreferSortTag when building indexes for
getArtist
andgetIndexes
(#3286) (@naiar) - ecf934f: fix(subsonic): random albums not reshuffling. (@deluan)
- b0e7941: fix(ui): fix Nuclear Theme (#3291) (@gruneforth)
- b643305: fix(ui): make random albums order stick when coming back to the grid (@deluan)
- ee2e04b: fix(ui): random seed for album list on page reload (#3279) (@kgarner7)
- 196557a: fix(ui): show effective dB of track when playing (#3293) (@kgarner7)
- 50870d3: fix(ui): sort by favourited (@deluan)
- 11d96f1: fix(ui): sort mappings (#3296) (@caiocotts)
- 5baf0b8: fix(ui): sort playlist by song duration (#3284) (@deluan)
- a02cfbe: fix(ui): update German translation (#3290) (@deluan)
- 2778068: fix(ui): update Korean translation (#3288) (@DDinghoya)
Build process updates
- 3910e77: build(ci): change GitHub release notes (#3300) (@deluan)
- e628aaf: build(go): set toolchain to latest version (@deluan)
Other work
Full Changelog: v0.53.1...v0.53.2
Helping out
This release is only possible thanks to the support of some awesome people!
Want to be one of them?
You can sponsor, pay me a Ko-fi or contribute with code.
Where to go next?
v0.53.1
v0.53.0
As always, many thanks to all contributors!
Hope you all enjoy it.
Highlights
- [UI] Add Nuclear theme (#3098). Thanks @gruneforth
- [UI] Add Hungarian translation. Thanks @Soderes and @ChekeredList71
- [UI] Add Basque translation. Thanks @xabirequejo
- [UI] Add toggle for Auto-Import playlists (#3060). Thanks @caiocotts
- [UI] Fix album sorting in Artist detail page
- [UI] Fix album coverart "stuttering", when you have non-square albums in the grid (#3035). Thanks @caiocotts
- [UI] Fix disappearing Last.FM links (#3084). Thanks @caiocotts
- [UI] Fix Disc context menu contains broken "Share" and "Get Info" entries (#3204) Thanks @TheLastZombie
- [UI] Fix ReplayGain's preAmp (#3184) . Thanks @kgarner7
- [Server] Fix Incorrect case in username in Subsonic API causes failure creating new player (#1928). Thanks @kgarner7
- [Server] Only refresh smart playlist when fetching first track (#3244). Thanks @kgarner7
- [Server] Recursively refresh nested smart playlists (#3018). Thanks @reillymc
- [Server] Use SHA256 in Gravatar URLs. Thanks @nyxfqq
- [Server] Fixed memory leak during Scan (#3031). Thanks @mintsoft
- [Server] Deterministic pagination in Random Albums list (#1841). Thanks @gqgs
- [Server] Optmize SQLite3 DB access
- [Server] Add
ShareURL
configuration option (#3265). Thanks @caiocotts - [Server] Increase artist image sizes, see discussion here
- [Server] Improve SQL sanitization, to avoid potential SQL injection. Thanks @snyff
- [Scanner] Add support for
R128
gain tags (#3072). Thanks @kartikynwa - [Scanner] Upgrade to TagLib 2.0.2
- [Scanner] Add
DefaultPlaylistPublicVisibility
config option (#3143). Thanks @john8329 - [Scanner] Skip Synology snapshot (
#snapshot
) folders - [Subsonic] Fix OpenSubsonic structured lyrics response (#3041). Thanks @dweymouth
Changelog
- 910a461 Bump dompurify from 2.4.5 to 2.5.6 in /ui (#3270)
- 8c86d09 Bump github.com/mileusna/useragent from 1.3.4 to 1.3.5 (#3269)
- 42047fd Remove shareURL value from config.js
- 2887cd6 Fix wrong placement of When in test
- 8ac1330 Make the UI use the new ShareURL option
- f024028 Add ShareURL configuration option
- d683688 Recursively refresh playlist tracks within smart playlist rules (#3018)
- 180035c Hungarian patch and typo fix for English (#3263)
- a132755 Move update-translations.sh script to workflow directory
- 3107170 Improve SQL sanitization
- d3bb4bb Bump send and express in /ui (#3260)
- 41f3804 Bump path-to-regexp and express in /ui (#3255)
- e65eb22 Small refactoring - Remove duplication - Remove warning about builtin keyword
new
- e8d0f2e Allow searching songs by filepath, for songs without Title
- 47872c9 Fix pipeline
- 9ae2ec1 Ignore #snapshot folders when scanning. Fixes #3257
- a1866c7 Fix log message
- 9f1794b Only refresh smart playlist when fetching first track (#3244)
- e176288 Bump github.com/prometheus/client_golang from 1.20.2 to 1.20.3 (#3245)
- 870b217 Bump github.com/pressly/goose/v3 from 3.21.1 to 3.22.0 (#3247)
- 53af567 Bump golang.org/x/image from 0.19.0 to 0.20.0 (#3248)
- 605aaf8 Bump github.com/mattn/go-sqlite3 from 1.14.22 to 1.14.23 (#3249)
- 9950538 Bump github.com/mattn/go-zglob from 0.0.5 to 0.0.6 (#3231)
- 4a55a14 refactor(core): Refactor selectTranscodingOptions function (#3227)
- c1b75bc Improve change detection for POEditor files
- 5baab4a Update dev container to use Go 1.23 and customizations object (#3228)
- 4c87a39 Add Basque localisation (#3221)
- fc5d18f Change error code type to avoid integer overflow conversion warning
- 4612b0a Bump Go dependencies
- 68ddbf4 Add i18n lint job
- a6d72d8 Bump webpack from 5.76.1 to 5.94.0 in /ui (#3218)
- 1a41525 Upgrade
go.mod
to 1.23, allow override CI_RELEASER_VERSION formake single
andmake all
- 8ca1aef Change DefaultPlaylistPublicVisibility to false
- 67d11dd feat: imported playlists are public by default (#3143)
- 9f65f8f Update translations (#3164)
- bc06a59 Upgrade TagLib 2.0.2, GoReleaser 2.2.0 (#3217)
- 6709ab3 fix(common): Hide Share/Get Info items in disc context menu - #3204 (#3209)
- 195f2b3 Bump @testing-library/jest-dom from 6.4.8 to 6.5.0 in /ui (#3216)
- 6ea688e Bump github.com/prometheus/client_golang from 1.20.0 to 1.20.2 (#3213)
- 496c95f Bump github.com/go-chi/httprate from 0.12.1 to 0.14.0 (#3211)
- 108bf31 Bump github.com/pelletier/go-toml/v2 from 2.2.2 to 2.2.3 (#3212)
- 7c81143 Bump github.com/onsi/ginkgo/v2 from 2.20.0 to 2.20.1 (#3215)
- 533c394 Bump github.com/jellydator/ttlcache/v3 from 3.2.0 to 3.2.1 (#3214)
- c95fa11 Remove potential integer overflow conversion uint64 -> int64
- 5d81849 Fix lint errors
- 1a8bef0 Bump react-icons from 5.2.1 to 5.3.0 in /ui (#3200)
- 85bf7b5 Bump @testing-library/jest-dom from 6.4.6 to 6.4.8 in /ui (#3172)
- bdbff1e Bump prettier from 3.3.2 to 3.3.3 in /ui (#3171)
- 5d58048 Bump github.com/prometheus/client_golang from 1.19.1 to 1.20.0 (#3199)
- 723f01d Fixing Build/lint error: "non-constant format string in call to fmt.Errorf (govet)" (#3198)
- c4bd0e6 Upgrade Go to 1.23 (#3190)
- 0c33523 Bump dependencies
- 14d085f Deprecate
buildall
- 4d4c712 Build UI bundle on demand
- e1ba152 Reduce noise in logs when pre-caching artwork
- eaa7f7c Fix Player filter
- 290333e Use same key for replaygain's preAmp (#3184)
- fa85e2a Use userId in player, other fixes (#3182)
- 5360283 Bump github.com/onsi/gomega from 1.33.1 to 1.34.0 (#3176)
- e59d81b Bump github.com/microcosm-cc/bluemonday from 1.0.26 to 1.0.27 (#3141)
- 7b2ddfd Fix "Cannot read properties of undefined". Closes #3070
- 76c3f51 Use SHA256 in Gravatar URLs
- f577704 Add Hungarian language (#3157)
- f46ff73 Bump github.com/go-chi/httprate from 0.9.0 to 0.10.0 (#3160)
- d046c18 Fix race condition
- 9b4abd9 Add Auto-Import toggle switch to playlists list view.
- 0de5f59 Remove unnecessary Fragment component.
- 33717f2 Fix album sorting in Artist page
- 6722395 Bump github.com/unrolled/secure from 1.14.0 to 1.15.0 (#3127)
- 2667ad3 Bump github.com/go-chi/chi/v5 from 5.0.14 to 5.1.0 (#3126)
- 3e1fa20 fix background color for nord theme (#3124)
- 1802015 Add Nuclear Theme (#3098)
- 47378c6 Remove unnecessary annotation table primary key
- 81459cc Bump github.com/spf13/cobra from 1.8.0 to 1.8.1 (#3095)
- 4cda3a5 Bump braces from 3.0.2 to 3.0.3 in /ui (#3085)
- 56557bb Bump @testing-library/jest-dom from 6.4.5 to 6.4.6 in /ui (#3096)
- c60f443 Bump prettier from 3.3.1 to 3.3.2 in /ui (#3097)
- fa3998d...
v0.52.5
Bug fix point release
This is mostly a bug-fix version, with focus on some Jukebox issues, but also other general improvements and fixes.
Highlights
- [UI] Add Catppuccin Macchiato Theme (#3014). Thanks @edthu
- [UI] Make sorting lists by name/title case-insensitive (#2993)
- [Server] Add
HTTPSecurityHeaders.CustomFrameOptionsValue
config option. - [Server] Sort repeated lyrics that may be out of order (#2989). Thanks @kgarner7
- [Server] Fix sorting albums by playCount when
AlbumPlayCountMode
is normalize - [Server] mime types can now be overriden using an external file,
$DataFolder/resources/mime_types.yml
(needs documentation) - [Server] Change
.dsf
mime-type toaudio/x-dsf
(#3021) - [Server] General improvements to Jukebox mode (#2997, #2996, #2849, #3008). Thanks @ms140569
- [Subsonic] Add
samplingRate
to OpenSubsonic responses
Changelog
- c556088 Change dsf mime-type to audio/x-dsf.
- 78f5547 Revert "Add download link to PR" workflow
- 2c8c87a Remove duplicated test
- 3463d0c Simplify random.Int64 usage with generics
- 0ae2944 Refactor random functions
- 30ae468 Uses Unix milliseconds support from standard Go lib
- ec68d69 Refactor cache.HTTPClient
- 955a9b4 Refactor merge.FS
- 5680941 Fix "Add download link to PR" workflow
- 3a2a5e9 Add samplingRate to OpenSubsonic responses
- f3bb022 Add sampleRate to the DB
- 472324e Read sampleRate from audio files
- ed83c22 Do not panic if when updatePlaylist is called with a non-existent ID.
- 2fdc167 Add Catppuccin Macchiato Theme (#3014)
- 80e68df Bump actions/github-script to v7
- a9c7458 Bump actions/stale and dessant/lock-threads versions
- bb96d45 Replace sync.WaitGroup with more appropriate errgroup.Group
- c0885b5 Fix M3U mimetype on Debian Bullseye
- 00cbe4c Update Go to 1.22.3
- 2b49c7f fix: languageName for Persian (#3011)
- 09d1fd0 Simplify normalized AlbumPlayCountMode calc
- 747069b Remove unused code
- 885cd34 Clean up runNavidrome function
- c4b05da Make sorting lists by name/title case-insensitive (#2993)
- 6408dda Terminate all MPV instances when stopping Navidrome (#3008)
- 677d994 Make dependency injection more consistent
- a029058 Fix migration package name mismatch
- eb93136 Change default transcodings to a proper typed struct
- 62cc8a2 Fix ambiguous column when sorting media_files by created_at.
- dd4374c Limit access to Jukebox for admins only (configurable).
- 86567f5 Bump Go dependencies
- ff8dca5 Guard against missing active track (#2996)
- b3d70e9 Persist adjusted volume (#2997)
- 4d29184 Improves golangci-lint configuration and workflow (#3004)
- 2470471 Pin golangci-lint-action version as a workaround to fix the pipeline.
- 544ae90 Fix CollapsibleComment in PlaylistDetails. Closes #2992
- aef49cb Add
HTTPSecurityHeaders.CustomFrameOptionsValue
option. - 7c5eec7 Fix typo
- a4c2232 Sort repeated lyrics that may be out of order (#2989)
- 8f11b99 Bump Go dependencies
- d4a9a9e Fix PlaylistTracks's loadAllGenres. Fix #2988
- a8955f2 Fix AlbumPlayCountMode. Closes #2984
- 2c06a42 Fix int types in OpenSubsonic responses.
- 7ab7b5d Fix signaler on Windows
- 3d9fff3 Use signal.NotifyContext
- 31fcab0 Refactor loadGenres, remove duplication
- de90152 Refactor DB Album mapping to model.Album
- 27875ba Load mime_types from external file
- 28f7ef4 Remove AlbumPlayCountMode from command line options
v0.52.0
New in this release
This release upgrades TagLib to 2.0.1, improving tag importing in general.
Also general improvements to Jukebox mode, Reverse Proxy authentication, more OpenSubsonic compatibility,
and a few bug fixes.
Highlights
- [UI] Handling long playlist comments (#2973). Thanks @TimHi
- [UI] Fix a few mistakes in the French translation (#2872). Thanks @2franix
- [Server] Block regular users from changing their own playlists ownership. Fixes this security advisory. Thanks @viliald
- [Server] Allow comments in NSP files.
- [Server] Add
AlbumPlayCountMode
config option (#2803). Thanks @vvdveen - [Scanner] Upgrade TagLib to 2.0.1
- [Subsonic] Add support for Reverse Proxy auth in Subsonic endpoints (#2558). Thanks @crazygolem
- [Subsonic] Add
channelCount
to songs in OpenSubsonic responses - [Subsonic] Add
releaseDate
to albums in OpenSubsonic responses (#2906). Thanks @kgarner7 - [Subsonic] Fix Jukebox mode under Windows (#2774). Thanks @apkatsikas
- [Subsonic] Make MPV command configurable using the new config option
MPVCmdTemplate
(#2948). Thanks @bitte-ein-bit - [Build] Add
make
target to build docker image - [Build] Include MPV in release Docker image (#2910)
Full changelog: v0.51.1...v0.52.0
v0.51.1
Bug fix point release
This release fixes a few bugs, most important one being the converting NULL to string is unsupported
happening for users that updated their DBs directly. This fix is implemented as a change to the DB during Navidrome's startup that can take a few minutes, depending on the size of your library, so please be patient with large libraries.
Highlights
- [Server] Fix various
converting NULL to string is unsupported
errors in 0.51.0 (#2840). Thanks @caiocotts - [Scanner] Import
sort_*
ID3 tags - [Subsonic] Fix fields not being sent on getPlaylist.view responses. (#2818). Thanks @caiocotts
- [UI] Set rating value to 0 when value is null (#2824). Thanks @kgarner7
- [UI] Use order/sort album/artist when sorting tracks in playlists. Fixes (#2819
- [UI] Don't expose the Last.fm APIKey in the
index.html
- [UI] Update German and French translations
Changelog
- 6d25322 Use order/sort album/artist when sorting tracks in playlists. Fixes #2819
- bf2bcb1 Fix null values in DB (#2840)
- ac4ceab Update French translation (#2834)
- 6226741 Create resources.FS only once
- 79a4d8f Simplify ShortDur code and tests
- 61257f8 Update translations (#2832)
- 1f71e56 Don't expose Last.fm API Key in the index.html
- 3a9b345 Set rating value to 0 when value is null (#2824)
- 5125558 Make Subsonic search query default to
""
if not present. - 5f9b6b6 Add a "upgrading schema" log message to the DB initialization when there are pending migrations.
- fa7cc40 Add tests for
toSQL
- 58218e6 Fix fields not being sent on getPlaylist.view responses.
- 67c82f5 "Fix" Reddit badge
- fb7fd21 Don't add empty TIPL roles
- a6fc84a Parse the ID3v2.4 TIPL frame
- 1e5e8be Import ID3 sort_* tags
v0.51.0
New in this release.
If you use any Last.fm functionality (scrobbling, biographies, album descriptions), please check the documentation on how to create your own API Key, it is free and should only take you a couple of minutes. NOTE: Remember to re-enable scrobbling after changing the API Key and restarting the server.
In this release we focused on support and compatibility with OpenSubsonic, increasing the overall user experience when using a compatible Subsonic client. Click here for the full list of what is implemented and what is missing for now.
NOTE: Even though this release does not force a full rescan, you should do it at your discretion, to import more tags available in the scanner, ex: structured lyrics.
Highlights
- [Server] Remove LastFM shared key
- [Server] Add new
PrefSortTags
option (#2696) - [Server] Make unix socket file permission configurable via flag
UnixSocketPerm
(#2763)). Thanks @johannesengl - [Server] Add
inPlaylist/notInPlaylist
operators to Smart Playlists (#1884). Thanks @flyingOwl - [Server] Add TAK support (#2745). Thanks @apkatsikas
- [Scanner] Import more M4A tags (#2680). Thanks @kgarner7
- [Scanner] Upgrade to TagLib 1.13.1
- [Subsonic] Optimize
search3
endpoint. Syncs in offline clients (ex: Symfonium) will be faster now. - [Subsonic] Add multiple OpenSubsonic extensions (See #2695)
- [Subsonic] Improved getTopSongs results (#2675)
- [Subsonic] General Jukebox improvements
- [CLI] Add "inspect" command to CLI. You can now see what tags Navidrome import by running ex:
navidrome inspect your_file.mp3
Changelog
- fd61b29 Small readability improvement in MergeFS tests
- 2b33ef7 Remove offset and limit from count queries. Fixes #2443
- 2fb913f Add log message to try to capture error in #2735
- 6c05493 Improve some Jukebox error messages
- 3ca4f44 Simplify default middlewares setup
- 34c29a1 Simplify RealIP middleware setup
- b442736 Bump connected-react-router from 6.9.1 to 6.9.3 in /ui (#2741)
- 90fccf0 Bump workbox-cli from 6.5.4 to 7.0.0 in /ui (#2737)
- bcd4a52 Bump golang.org/x/sync from 0.5.0 to 0.6.0 (#2779)
- 84cffa6 Bump github.com/prometheus/client_golang from 1.17.0 to 1.18.0 (#2759)
- a51b1b2 Bump uuid from 8.3.2 to 9.0.1 in /ui (#2740)
- 9f317c0 Bump @testing-library/user-event from 14.5.1 to 14.5.2 in /ui (#2757)
- 5f8d01a Bump clsx from 2.0.0 to 2.1.0 in /ui (#2758)
- 8a648d7 Bump github.com/go-chi/chi/v5 from 5.0.10 to 5.0.11 (#2742)
- a0dc2ee Bump github.com/pelletier/go-toml/v2 from 2.0.6 to 2.1.1 (#2760)
- ffb4de1 Bump github.com/unrolled/secure from 1.13.0 to 1.14.0 (#2761)
- e1fc798 Bump golang.org/x/image from 0.14.0 to 0.15.0 (#2778)
- 2a43f54 Bump follow-redirects from 1.15.2 to 1.15.4 in /ui (#2786)
- f654e92 Bump github.com/lestrrat-go/jwx/v2 from 2.0.18 to 2.0.19 (#2792)
- dfa453c Add (not)inplaylist operator to smart playlists (#1884)
- 8f03454 Make server unix socket file permission configurable via flag UnixSocketPerm (#2763)
- 8570773 Bump prettier from 3.1.1 to 3.2.2 in /ui
- 6cff91e Use the default import path for jest-dom.
- d0df81a Bump @testing-library/jest-dom from 5.16.5 to 6.2.0 in /ui
- 75f3ef6 Bump react-icons from 4.4.0 to 5.0.1 in /ui
- 170ac93 Bump github.com/onsi/ginkgo/v2 from 2.13.2 to 2.14.0
- 6f7b482 Make the GetInstance concurrent test more readable
- 6e2be7f Don't force a full scan after upgrading the lyrics
- 0d8f8e3 Optimize Singleton (sometimes a simple lock is a better solution)
- e50382e Fix ReplayGain values not being retrieved from DB
- 814161d Add OS Lyrics extension (#2656)
- 130ab76 go mod tidy
- a186a79 Omit empty Genre attributes
- 798b03e Add "inspect" command to CLI
- ea7ba22 Discard duplicated tags
- b4815ec Add TAK support (#2745)
- 51e07d4 Add log.IsGreaterOrEqualTo, that take into consideration path-scoped log levels
- 03119e5 Add more trace log to TagLib Wrapper
- 15e1394 Implement
originalReleaseDate
in OpenSubsonic responses. (#2733) - 3f349b1 Add todo as a reminder to replace min/max in Go 1.22
- dfcc189 Replace all
utils.Param*
withreq.Params
- 00597e0 Add
req.Params
to replaceutils.Param*
- 965fc9d Remove beep and the files where it was imported (#2731)
- 781ff40 Bump Go version to 1.21.5 (#2729)
- a6ed044 Name
mapDates
return values - 515efe3 Bump @testing-library/user-event from 13.5.0 to 14.5.1 in /ui
- 6c28c11 Bump @adobe/css-tools from 4.3.1 to 4.3.2 in /ui
- 92a88ad Bump golang.org/x/crypto from 0.16.0 to 0.17.0 (#2722)
- 4ccc0a9 Bump jwt-decode from 3.1.2 to 4.0.0 in /ui (#2714)
- df3de04 Bump clsx from 1.1.1 to 2.0.0 in /ui
- 8675766 Reformat code with Prettier's new rules.
- 735d670 Bump prettier from 2.8.2 to 3.1.1 in /ui
- 3017914 Bump deepmerge from 4.2.2 to 4.3.1 in /ui
- 03a9f22 Bump @material-ui/icons from 4.11.2 to 4.11.3 in /ui
- 39e92a1 Bump github.com/mattn/go-sqlite3 from 1.14.18 to 1.14.19
- 421ce91 Fix mpvipc dependency
- 12aae5e Some cleanup in the jukebox code, specially log messages
- 932152e Change required fields in Subsonic Jukebox endpoint
- 0e3175e Better workaround for Go 1.20 missing context.WithoutCancel
- d3f6b46 Temporary fix for scan context cancellation for Go 1.20
- 70effa0 Don't cancel Scan on context cancellation
- 7ccf685 Fix PreferSortTags
- 2aef227 Add context to SQL queries, enabling cancellation
- d80e1a2 Fix possible authentication bypass
- fd4605d Bump github.com/mattn/go-zglob from 0.0.3 to 0.0.4 (#2015)
- a6493c4 Bump github.com/google/uuid to v1.5.0
- 54597bd Allow reverse proxy auth for unix socket (#2701)
- ab53313 Add new PrefSortTags option (#2696)
- d3669f4 go mod tidy
- d89de90 Bump Go dependencies
- ac3668a Removed unused
diodes
package - 6d924ad Bump github.com/go-chi/jwtauth/v5 from 5.2.0 to 5.3.0 (#2699)
- 78d557c Remove LastFM shared key
- 546aa26 Removed duplicated code
- fc677f7 Bump github.com/lestrrat-go/jwx/v2 from 2.0.17 to 2.0.18 (#2684)
- aed0309 Return
AlbumID3
insearch3
results - 465cc09 Convert internal disc number representation to int
- 2c9035f Add discTitles to OpenSubsonic responses
- af7eead Add discs to album
- 0ca0d5d Replace beego/orm with dbx (#2693)
- 7074455 Bump github.com/onsi/ginkgo/v2 from 2.13.1 to 2.13.2
- 2f2fbeb Fix ld warnings on taglib_wrapper.
- 742fd16 Parse more itunes keys, optimize taglib wrapper (#2680)
- 7766ee0 Return http form post extension (OpenSubsonic) (#2676)
- 4cd7c7f Fix FileHaunter tests
- 81daee3 Fix FileHaunter tests
- 9b434d7 Ignore flaky FileHaunter tests
- 4641dc0 Add ReplayGain to OpenSubsonic API Child response
- 812dc20 Add support for
timeOffset
in/stream
endpoint - a9cf54a Return genres in bookmark endpoints (OpenSubsonic)
- 595186b Coalesce null annotation values, to better rank them against annotations with value 0
- cdccdc5 Add more OpenSubsonic fields
- f580c5b Add more OpenSubsonic fields
- f0e25c2 Update translations
- abde399 Upgrade to Goose 3.15.1
- 1b4483d Remove
tools.go
- f7fe8ba npx update-browserslist-db@latest
- f543e7a Fix getOpenSubsonicExtensions endpoint
- 60a5fbe Optimize search3, by removing
OFFSET
when paginating (#2655) - 28dc98d Revert "Replace
COUNT(DISTINCT primary_key)
withCOUNT(*)
" - 8c8e1ea Replace
COUNT(DISTINCT primary_key)
withCOUNT(*)
- b964018 Show SQL errors in queryAll
- 9aa7b80 Generalize BreakUp/RangByChunks functions
- c3efc57 Use TagLib 1.13.1 for snapshots/releases
- 27a92b0 Fixed deprecated GoReleaser options
- 21f1354 Revert "Bump golang.org/x/exp, change slices.SortFunc function call"
- 069da5d Bump Go to 1.21.4
- 69d2ced Bump Go dependencies
- 17ac8d2 Bump dependencies
- 474f32f Bump golang.org/x/exp, change slices.SortFunc function call
- ecadcfb Make
ParamInt
generic (any int type)