Navidrome Versions Save

🎧☁️ Modern Music Server and Streamer compatible with Subsonic/Airsonic

v0.51.1

2 months ago

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

  • 6d253225 Use order/sort album/artist when sorting tracks in playlists. Fixes #2819
  • bf2bcb12 Fix null values in DB (#2840)
  • ac4ceab1 Update French translation (#2834)
  • 62267415 Create resources.FS only once
  • 79a4d8f6 Simplify ShortDur code and tests
  • 61257f89 Update translations (#2832)
  • 1f71e567 Don't expose Last.fm API Key in the index.html
  • 3a9b3452 Set rating value to 0 when value is null (#2824)
  • 5125558f Make Subsonic search query default to "" if not present.
  • 5f9b6b63 Add a "upgrading schema" log message to the DB initialization when there are pending migrations.
  • fa7cc40d Add tests for toSQL
  • 58218e6d Fix fields not being sent on getPlaylist.view responses.
  • 67c82f52 "Fix" Reddit badge
  • fb7fd219 Don't add empty TIPL roles
  • a6fc84a2 Parse the ID3v2.4 TIPL frame
  • 1e5e8be1 Import ID3 sort_* tags

v0.51.0

3 months ago

New in this release.

⚠️ BREAKING CHANGE: This release removes the Last.fm shared API-key, as previously announced here. 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

  • fd61b29a Small readability improvement in MergeFS tests
  • 2b33ef72 Remove offset and limit from count queries. Fixes #2443
  • 2fb913f5 Add log message to try to capture error in #2735
  • 6c05493c Improve some Jukebox error messages
  • 3ca4f441 Simplify default middlewares setup
  • 34c29a15 Simplify RealIP middleware setup
  • b442736a Bump connected-react-router from 6.9.1 to 6.9.3 in /ui (#2741)
  • 90fccf00 Bump workbox-cli from 6.5.4 to 7.0.0 in /ui (#2737)
  • bcd4a526 Bump golang.org/x/sync from 0.5.0 to 0.6.0 (#2779)
  • 84cffa6b Bump github.com/prometheus/client_golang from 1.17.0 to 1.18.0 (#2759)
  • a51b1b25 Bump uuid from 8.3.2 to 9.0.1 in /ui (#2740)
  • 9f317c05 Bump @testing-library/user-event from 14.5.1 to 14.5.2 in /ui (#2757)
  • 5f8d01a2 Bump clsx from 2.0.0 to 2.1.0 in /ui (#2758)
  • 8a648d71 Bump github.com/go-chi/chi/v5 from 5.0.10 to 5.0.11 (#2742)
  • a0dc2ee0 Bump github.com/pelletier/go-toml/v2 from 2.0.6 to 2.1.1 (#2760)
  • ffb4de1e Bump github.com/unrolled/secure from 1.13.0 to 1.14.0 (#2761)
  • e1fc7983 Bump golang.org/x/image from 0.14.0 to 0.15.0 (#2778)
  • 2a43f54e Bump follow-redirects from 1.15.2 to 1.15.4 in /ui (#2786)
  • f654e921 Bump github.com/lestrrat-go/jwx/v2 from 2.0.18 to 2.0.19 (#2792)
  • dfa453cc Add (not)inplaylist operator to smart playlists (#1884)
  • 8f034543 Make server unix socket file permission configurable via flag UnixSocketPerm (#2763)
  • 8570773b Bump prettier from 3.1.1 to 3.2.2 in /ui
  • 6cff91e1 Use the default import path for jest-dom.
  • d0df81a8 Bump @testing-library/jest-dom from 5.16.5 to 6.2.0 in /ui
  • 75f3ef64 Bump react-icons from 4.4.0 to 5.0.1 in /ui
  • 170ac939 Bump github.com/onsi/ginkgo/v2 from 2.13.2 to 2.14.0
  • 6f7b4820 Make the GetInstance concurrent test more readable
  • 6e2be7f9 Don't force a full scan after upgrading the lyrics
  • 0d8f8e3a Optimize Singleton (sometimes a simple lock is a better solution)
  • e50382e3 Fix ReplayGain values not being retrieved from DB
  • 814161d7 Add OS Lyrics extension (#2656)
  • 130ab76c go mod tidy
  • a186a795 Omit empty Genre attributes
  • 798b03ea Add "inspect" command to CLI
  • ea7ba226 Discard duplicated tags
  • b4815ece Add TAK support (#2745)
  • 51e07d4c Add log.IsGreaterOrEqualTo, that take into consideration path-scoped log levels
  • 03119e5c Add more trace log to TagLib Wrapper
  • 15e1394f Implement originalReleaseDate in OpenSubsonic responses. (#2733)
  • 3f349b1b Add todo as a reminder to replace min/max in Go 1.22
  • dfcc189c Replace all utils.Param* with req.Params
  • 00597e01 Add req.Params to replace utils.Param*
  • 965fc9d9 Remove beep and the files where it was imported (#2731)
  • 781ff404 Bump Go version to 1.21.5 (#2729)
  • a6ed0442 Name mapDates return values
  • 515efe37 Bump @testing-library/user-event from 13.5.0 to 14.5.1 in /ui
  • 6c28c111 Bump @adobe/css-tools from 4.3.1 to 4.3.2 in /ui
  • 92a88ad4 Bump golang.org/x/crypto from 0.16.0 to 0.17.0 (#2722)
  • 4ccc0a92 Bump jwt-decode from 3.1.2 to 4.0.0 in /ui (#2714)
  • df3de047 Bump clsx from 1.1.1 to 2.0.0 in /ui
  • 86757663 Reformat code with Prettier's new rules.
  • 735d670a Bump prettier from 2.8.2 to 3.1.1 in /ui
  • 30179146 Bump deepmerge from 4.2.2 to 4.3.1 in /ui
  • 03a9f22e Bump @material-ui/icons from 4.11.2 to 4.11.3 in /ui
  • 39e92a19 Bump github.com/mattn/go-sqlite3 from 1.14.18 to 1.14.19
  • 421ce91a Fix mpvipc dependency
  • 12aae5e9 Some cleanup in the jukebox code, specially log messages
  • 932152eb Change required fields in Subsonic Jukebox endpoint
  • 0e3175ea Better workaround for Go 1.20 missing context.WithoutCancel
  • d3f6b469 Temporary fix for scan context cancellation for Go 1.20
  • 70effa09 Don't cancel Scan on context cancellation
  • 7ccf6859 Fix PreferSortTags
  • 2aef2275 Add context to SQL queries, enabling cancellation
  • d80e1a26 Fix possible authentication bypass
  • fd4605d7 Bump github.com/mattn/go-zglob from 0.0.3 to 0.0.4 (#2015)
  • a6493c4c Bump github.com/google/uuid to v1.5.0
  • 54597bd5 Allow reverse proxy auth for unix socket (#2701)
  • ab533132 Add new PrefSortTags option (#2696)
  • d3669f46 go mod tidy
  • d89de906 Bump Go dependencies
  • ac3668a3 Removed unused diodes package
  • 6d924ad7 Bump github.com/go-chi/jwtauth/v5 from 5.2.0 to 5.3.0 (#2699)
  • 78d557c1 Remove LastFM shared key
  • 546aa26a Removed duplicated code
  • fc677f79 Bump github.com/lestrrat-go/jwx/v2 from 2.0.17 to 2.0.18 (#2684)
  • aed03091 Return AlbumID3 in search3 results
  • 465cc091 Convert internal disc number representation to int
  • 2c9035fd Add discTitles to OpenSubsonic responses
  • af7eead0 Add discs to album
  • 0ca0d5da Replace beego/orm with dbx (#2693)
  • 7074455e Bump github.com/onsi/ginkgo/v2 from 2.13.1 to 2.13.2
  • 2f2fbeb0 Fix ld warnings on taglib_wrapper.
  • 742fd16a Parse more itunes keys, optimize taglib wrapper (#2680)
  • 7766ee06 Return http form post extension (OpenSubsonic) (#2676)
  • 4cd7c7f3 Fix FileHaunter tests
  • 81daee3b Fix FileHaunter tests
  • 9b434d74 Ignore flaky FileHaunter tests
  • 4641dc0b Add ReplayGain to OpenSubsonic API Child response
  • 812dc209 Add support for timeOffset in /stream endpoint
  • a9cf54af Return genres in bookmark endpoints (OpenSubsonic)
  • 595186b1 Coalesce null annotation values, to better rank them against annotations with value 0
  • cdccdc56 Add more OpenSubsonic fields
  • f580c5b8 Add more OpenSubsonic fields
  • f0e25c25 Update translations
  • abde399e Upgrade to Goose 3.15.1
  • 1b4483d3 Remove tools.go
  • f7fe8ba9 npx update-browserslist-db@latest
  • f543e7ac Fix getOpenSubsonicExtensions endpoint
  • 60a5fbe1 Optimize search3, by removing OFFSET when paginating (#2655)
  • 28dc98de Revert "Replace COUNT(DISTINCT primary_key) with COUNT(*)"
  • 8c8e1ea7 Replace COUNT(DISTINCT primary_key) with COUNT(*)
  • b964018c Show SQL errors in queryAll
  • 9aa7b80d Generalize BreakUp/RangByChunks functions
  • c3efc572 Use TagLib 1.13.1 for snapshots/releases
  • 27a92b05 Fixed deprecated GoReleaser options
  • 21f1354c Revert "Bump golang.org/x/exp, change slices.SortFunc function call"
  • 069da5d9 Bump Go to 1.21.4
  • 69d2ced8 Bump Go dependencies
  • 17ac8d25 Bump dependencies
  • 474f32f1 Bump golang.org/x/exp, change slices.SortFunc function call
  • ecadcfb4 Make ParamInt generic (any int type)

v0.50.2

4 months ago

Bug fix point release

This release fixes a couple of bugs, most importantly authentication could be bypassed when the server had never been restarted after initial setup. More details are coming in a security advisory being prepared by @crazygolem, but if you can't promptly install this bug fix version, you can simply restart your server and you are clear.

Many thanks for @crazygolem for researching and finding this bug.

Changelog

  • 823bef54 Ignore flaky FileHaunter tests
  • 713b3a1b Update translations
  • 6ebb0321 Allow reverse proxy auth for unix socket (#2701)
  • 1132abb0 Fix possible authentication bypass

v0.50.1

5 months ago

Bug fix point release

This release fixes a few bugs, most notably the scanner in Windows systems and the ARM docker image availability in Docker Hub.

  • [UI] Add Indonesian. Thanks @tarokeitaro
  • [Scanner] Fix Windows scanner (#2633). Thanks @caiocotts
  • [Subsonic] Add OpenSubsonic tags: genres, bpm, comment, musicBrainzID (#2597). Thanks @dweymouth and @caiocotts
  • [Build] Fix pushing images to Docker Hub

Changelog

  • f69c27d1 Return genres in search3 endpoint.
  • bb7186ce Fix marshaling for genres.
  • 5d1493e8 Bump @adobe/css-tools from 4.0.1 to 4.3.1 in /ui
  • d0fe4068 Fix Go 1.20 build
  • c8fbf6b6 Bump dependencies
  • e5bc3ca2 Update translations
  • 6d88dd2c Add Indonesian Language
  • eebfbc53 Revert walk_dir_tree.go back to using the os package.
  • a5dfd2d4 Format subsonic response snapshots
  • 77735228 Expose OpenSubsonic fields Genres, MusicBrainzId, Bpm, Comment (#2597)
  • 53607fe1 Publish all new images to Docker Registry

v0.50.0

5 months ago

New in this release

Jukebox mode

One of the most requested features is finally available: Navidrome's Jukebox feature is a built-in functionality that allows users to play music directly to the server's audio. This essentially turns your server into a jukebox, enabling you to play songs or playlists remotely through a supported Subsonic client. See full documentation here. Can't thank enough @ms140569 for his dedication to this.

Album splitting by Original/Release date

Another big feature is the support for disambiguating album editions by Original/Release Date, contributed by @certuna.

Very Important: This feature is controlled by the Scanner.GroupAlbumReleases config option. The default is false, meaning split is the default behaviour. This has a side effect that Navidrome will think all albums are new, and they will lose their star/love information, as well as play counts. If you don't want this behaviour, set Scanner.GroupAlbumReleases to true before upgrading.

Better networking support

Now Navidrome supports HTTPS out of the box. You need to provide a certificate and key as options (See new ND_TLSCERT/ND_TLSKEY config options). One more thing: Now the Address config option can specify a Unix socket file instead of a IP address. For that set Address (or ND_ADDRESS) to unix:/path/to/socket/file.

A big thanks to @ms140569, @certuna, @kgarner7 and all contributors that participated in this release.

Highlights

  • [UI] Don't pump the volume up to 100% if it is not in a mobile device. Fix #2255. Thanks @tessharp
  • [UI] Add option to allow shares to be downloaded
  • [UI] Make AlbumArtists clickable in AlbumSongs view. Fixes #1627. Thanks @krateng
  • [UI] Add Arabic (@zayedalsaidi) and Korean (@bonik21) translations
  • [UI] Give page the right lang attribute (#2299). Thanks @subhajit20
  • [UI] Upgrade to Node v18
  • [UI] Fix external link for artist page (#2533). Thanks @kgarner7
  • [Scanner] Ignore Recycle Bins in Windows. Fix #1074
  • [Scanner] Make playlist tracks match case-insensitive. Fix #1720
  • [Scanner] Better support for ReplayGain tags. Thanks @kgarner7
  • [Scanner] Ignore playlists starting with a dot (#2390)
  • [Scanner] Add support for lyrics tag unsynced lyrics (#2391). Thanks @BenzLeung
  • [Scanner] Use file creation date for Date Added/CreatedAt (#2553). Thanks @certuna
  • [Server] Jukebox mode (#2289). Thanks @ms140569
  • [Server] Implement ArtistArt priority (#2266). Thanks @repomaa
  • [Server] Add option to load TLS cert/key, and use HTTPS
  • [Server] Add support for listening on Unix socket. See #1477
  • [Server] Allow BaseURL to contain full server url, including scheme and host. Fix #2183
  • [Server] Sanitize filenames inside zip files. Fixes #1763
  • [Server] Allow configuring cache folder (#2357). Thanks @tomleb
  • [Server] Fix ListenBrainz submission, includes duration (#2279). Thanks @phw
  • [Server] POST endpoint for importing m3u playlists (#2273). Thanks @spwats and @caiocotts
  • [Server] Upgrade to Go 1.21
  • [Subsonic] Convert all Subsonic API ints to int32 as per specification #2252
  • [Subsonic] Fix getSongsByGenre pagination. Fix #1640
  • [Subsonic] Add initial support for OpenSubsonic. (#2302)
  • [Build] Publish docker images to ghcr.io (#2298). Thanks @onedr0p for the "push" ;)

Changelog

  • fee0f40a Bump dependencies
  • 9d2aaff8 Bump golang.org/x/tools from 0.13.0 to 0.15.0
  • 2ff4023c Bump golang.org/x/image from 0.12.0 to 0.14.0
  • 79870b10 Do not empty old artist metadata (#2423)
  • 7a858a2d Fix external link for artist page if LastFM is missinb but Musicbrainz is not (#2533)
  • 9cefaf66 Bump github.com/onsi/gomega from 1.29.0 to 1.30.0
  • 3debd31b Add more replaygain tests, fix wma (#2356)
  • 24d9fb5b Update translations (#2409)
  • 40841ab9 Small date mapping fix (#2584)
  • bae5fc94 Fix hardcoded IPv4 literals (#2602)
  • e0558260 Fix devcontainer for Go 1.21
  • 54bde266 Bump github.com/mattn/go-sqlite3 from 1.14.16 to 1.14.18
  • 3a737690 Bump golang.org/x/sync from 0.3.0 to 0.5.0
  • de3d8701 Bump github.com/spf13/cobra from 1.7.0 to 1.8.0
  • 03175e1a Use file creation date for Date Added/CreatedAt (#2553)
  • 26472f46 POST endpoint for importing m3u playlists - #2078 (#2273)
  • 6bca7531 Bump @babel/traverse from 7.19.3 to 7.23.2 in /ui
  • 68d1d5c9 Bump github.com/lestrrat-go/jwx/v2 from 2.0.12 to 2.0.16
  • db6c4609 Bump github.com/beego/beego/v2 from 2.0.7 to 2.1.3
  • 4cd916bb Bump react-router-dom from 5.3.0 to 5.3.4 in /ui
  • c40e83ef Bump github.com/go-chi/chi/v5 from 5.0.8 to 5.0.10
  • 9094f41f Improve TopSongs findMatchingTrack by de-prioritizing compilations (#2532)
  • 9ff95b6c Bump github.com/onsi/gomega from 1.27.10 to 1.29.0
  • 77ace857 Coalesce genre to null for smart playlist (#2573)
  • 59f0c487 Jukebox cleanup (#2554)
  • 2cd43581 Make Jukebox available to Subsonic clients
  • 248bf232 Bump github.com/lestrrat-go/jwx/v2 from 2.0.11 to 2.0.12 (#2480)
  • b5664ab9 Bump github.com/onsi/ginkgo/v2 from 2.11.0 to 2.12.0 (#2497)
  • ac7f94e6 Fix text being unreadable with Ligera theme (#2517)
  • d45f9f17 Bump github.com/google/uuid from 1.3.0 to 1.3.1 (#2489)
  • 250107d6 Bump golang.org/x/image from 0.9.0 to 0.12.0 (#2507)
  • 64b14db5 Add Korean Language (#2463)
  • 73d1851c Bump golang.org/x/tools from 0.9.1 to 0.13.0 (#2516)
  • 1b16e114 Jukebox mode (#2289)
  • f941347c Upgrade to Go 1.21 (#2475)
  • 1b5cefda Bump github.com/onsi/gomega from 1.27.8 to 1.27.9 (#2450)
  • 4cf25fc6 Bump github.com/microcosm-cc/bluemonday from 1.0.24 to 1.0.25 (#2449)
  • 14ba83ea Bump github.com/go-chi/chi/v5 from 5.0.8 to 5.0.10 (#2444)
  • 08f3fd13 Bump github.com/pressly/goose/v3 from 3.13.1 to 3.13.4 (#2442)
  • 3d66f587 Bump tough-cookie from 4.1.2 to 4.1.3 in /ui (#2441)
  • 5b1ba3df Bump word-wrap from 1.2.3 to 1.2.4 in /ui (#2446)
  • a0028307 Fix EnableMediaFileCoverArt option default value
  • 7b600bed Bump golang.org/x/tools from 0.10.0 to 0.11.0 (#2432)
  • 7d0a1916 Bump golang.org/x/image from 0.8.0 to 0.9.0 (#2430)
  • c7fe311c Bump github.com/go-chi/jwtauth/v5 from 5.1.0 to 5.1.1 (#2427)
  • 4520a346 Bump github.com/pressly/goose/v3 from 3.11.2 to 3.13.1 (#2428)
  • 3e14c3c4 Add support for lyrics tag unsynced lyrics (#2391)
  • 1e891d6b Bump github.com/prometheus/client_golang from 1.15.1 to 1.16.0 (#2408)
  • caf9b22d Bump golang.org/x/image from 0.7.0 to 0.8.0 (#2407)
  • 4f8742bc Update translations (#2329)
  • 26aa0f4f Fix typo
  • 4898f31f Add format target to Makefile
  • 9da013f3 Submit duration to ListenBrainz (#2405)
  • 5af67c78 Upgrade Go dependencies
  • c8608956 Fix listenbrainz submission and clarify MusicBrainz recording ID field (#2279)
  • 36eda871 Fix locale-dependent tests. Closes #2402
  • 7c92a732 Ignore playlists starting with a dot - #2367 (#2390)
  • f5d97823 Fix original date (TDOR) mapping for ffmpeg extractor
  • d6083dab Re-apply "Refactor walkDirTree to use fs.FS" but remove context cancelation logic.
  • 6b3b4d83 Revert "Refactor walkDirTree to use fs.FS"
  • 3853c331 Refactor walkDirTree to use fs.FS
  • 257ccc5f Allow configuring cache folder (#2357)
  • cec5fb0d Fix lint errors
  • 3fc4313e Move string slice functions to slice package as generic functions
  • c4c99b7f Make GroupAlbumReleases false by default
  • a984bbbc Make SmartPlaylists to always be seen as changed for Subsonic clients.
  • ba067667 Fix date formatting to use UTC
  • e38a6906 Order albums by full original date (this time is for real). Fixes #1452
  • 7d0656f4 Order albums by full original date. Fixes #1452
  • 11f33ff8 Update dependencies
  • 611363fc Add missing translation
  • 85d43d23 Add tests to date roll-ups
  • 8faaa3cf Use table specs in getDate tests
  • 20462c52 Restore album "year" translation string
  • 52b77e41 Support for Original Date, Release Date & splitting/grouping of album editions (#2162)
  • 010ba0d1 Use table specs in ReplayGain tests.
  • 9b7fac51 Update default transcoding commands (#2325)
  • be12c12b Remove unused Badge component from ActivityPanel icon
  • a19a643c Manually add replaygain tags for m4a (#2346)
  • f9b060af Removed onBackdropClick deprecated property
  • a3d78e95 Fix Monokai theme. Closes #2353
  • d85b0633 Fix build
  • bfa10cab Upgrade to Node v18
  • 08fcb430 Upgrade React-Admin to 3.19.12
  • 5d02df62 Fix eslint error
  • c3a2e084 Update caniuse-lite
  • 4296741e Simplify EventStream handling
  • 6bee4ed1 Sanitize filenames inside zip files. Fixes #1763
  • e62c3edc Revert: Change fix formatting command
  • 0a08d0af Change fix formatting command
  • ad513354 Disable POEditor import job in forks
  • a70b81f9 Bump github.com/onsi/ginkgo/v2 from 2.9.4 to 2.9.5 (#2352)
  • 0d920c78 Bump github.com/prometheus/client_golang from 1.14.0 to 1.15.1 (#2342)
  • 957a73e0 Bump github.com/mileusna/useragent from 1.2.1 to 1.3.2 (#2319)
  • abc418ea Bump github.com/onsi/ginkgo/v2 from 2.9.2 to 2.9.4 (#2343)
  • 11283220 Bump golang.org/x/tools from 0.8.0 to 0.9.1 (#2350)
  • 2e479def Bump github.com/go-chi/httprate from 0.7.1 to 0.7.4 (#2320)
  • 8311a7f2 Bump golang.org/x/sync from 0.1.0 to 0.2.0 (#2344)
  • 6ec8f780 Bump github.com/pressly/goose/v3 from 3.10.0 to 3.11.2 (#2341)
  • 3e879d2a Add K8s manifest (#2330)
  • 6d3d005f Allow the setrlimit syscall - #1961 (#2333)
  • c12510d6 Update README
  • 0bd73bd3 Better GH Action names
  • 8c120ee3 Better GH Action names
  • 9590b3c2 Use the highest resolution artist image from Spotify
  • 4887c330 Bump golang.org/x packages
  • da21acba Give page the right lang attribute (#2299)
  • 9154e44e Add initial support for OpenSubsonic. (#2302)
  • 2e010634 Update translations (#2198)
  • 597e5abe Fix push develop to Docker Hub
  • 92994efe Publish docker images to ghcr.io (#2298)
  • 9628b138 Add help msg for JS formatting errors
  • 34742400 Show Player name, not client, in mobile view. Fix #1659.
  • ecac74c2 Fix getSongsByGenre pagination. Fix #1640
  • ddfde7bf Run lint on latest Go 1.20.x
  • 96c50d36 Upgrade to Go 1.20.3 and GoRelease 1.16.1
  • 310c816c Use Go 1.20 for local cross-compilation
  • bd402fb2 Fix IntelliJ warning
  • 8bb141b7 Bump github.com/spf13/cobra from 1.6.1 to 1.7.0 (#2293)
  • f25b91b4 Remove any previous UNIX socket file
  • f959701d Bump github.com/onsi/gomega from 1.27.5 to 1.27.6 (#2292)
  • 61dd8d55 Fix data race in scanner
  • bbb94610 Increase max Server-Sent Events' ID
  • 95016f68 Fix SQL migrations
  • c3cc7dee Enable SQL migrations
  • 7847f19c Upgrade goose
  • 7a0df442 Bump github.com/onsi/gomega from 1.27.5 to 1.27.6 (#2288)
  • 6a8d2dc8 Only use valid images for artist.* artwork
  • de816e8e Fix lint error
  • b22d0366 Use channels for EventStream instead of diodes
  • fea2de8f Add Galician translation.
  • d6dd0aaa Close SSE connection on write error
  • 458017b1 Update Chinese translations (#2260)
  • e6bfa2bb Convert our usage of go-diodes into a simplified, generic version
  • 1c7fb74a Fix writeEvents race condition.
  • 83ae2ba3 Fix race condition
  • 2ccc5bc9 Implement artist art priority (#2266)
  • 406554f1 Remove some tools from dependencies, reducing the modules dependencies
  • e89cdf61 Fix flaky tests
  • cf804a52 Add support for listening on Unix socket.
  • 628fd69d Fix race condition
  • 1d00d1e9 Fix writeEvent function.
  • 607c4067 Show translation changes on pipeline
  • e3079d81 More tests
  • 3bedd89c Bump dependencies
  • 57829bfa Bump github.com/lestrrat-go/jwx/v2 from 2.0.8 to 2.0.9 (#2282)
  • b998c05c Some refactorings
  • 05d381c2 Add more middleware tests
  • 59a9c056 Add Arabic translation (#2277)
  • 0de81b83 Bump caniuse-lite
  • 91785ecf Add tests for core.Archiver
  • 65eeb5ec Add tests for serverAddressMiddleware
  • 17e0cd55 Shuffle the tests, just in case (#2272)
  • 3a6d2dcd More log redaction
  • 183b462f Fix zip comments in Share downloads.
  • 16fc4eb7 Fix missing extensions in Share downloads.
  • 6fee744d Bump github.com/onsi/gomega from 1.27.3 to 1.27.4 (#2268)
  • 74d5c7bc Bump github.com/golangci/golangci-lint from 1.51.2 to 1.52.0 (#2270)
  • 880fc9e1 Bump github.com/Masterminds/squirrel from 1.5.3 to 1.5.4 (#2269)
  • 1430aa10 Update play_date on scrobble only when newer - #2262 (#2263)
  • 673880d6 Add option to load TLS cert/key, and use HTTPS
  • 7ea11132 Don't pump the volume up to 100% if it is not in a mobile device. Fix #2255
  • 377e7ebd Disable share downloading when EnableDownloads is false.
  • 23c483da Only freezes issues/prs after 120 days
  • c3801396 Fix lint
  • 63fbccf5 Enable memory profiling
  • 1f6ec1d9 Add pprof endpoint, disabled by default
  • cad81563 Bump webpack from 5.74.0 to 5.76.1 in /ui (#2256)
  • f7d4fcdc Convert all Subsonic API ints to int32 as per specification (#2252)
  • 002cb4ed Update README.md
  • e13eaebb Update README.md
  • 539c0fae Bump github.com/onsi/ginkgo/v2 from 2.9.0 to 2.9.1 (#2251)
  • 4ccb6ccb Update Chinese translations (#2250)
  • ec0eb286 Hide Love button on Artist Page when EnableFavourites=false. Fix #2245
  • b520d882 Add download button in the SharePlayer
  • a7d3e6e1 Add option to allow share to be downloaded
  • a22eef39 Add share download endpoint
  • 50d98386 Add docker compose examples, with traefik or caddy and without, fixes #476 (#2240)
  • 016454c2 Bump golangci-lint version
  • 41a5db72 Update more dependencies
  • 6e6ec584 Update sanitize and golang.org/x dependencies
  • c88e1baa Make playlist tracks match case-insensitive. Fix #1720
  • e16e3d2e Fix pipeline.
  • 339a6239 Ignore Recycle Bins in Windows. Fix #1074
  • 47f15ccb Make AlbumArtists clickable in AlbumSongs view. Fixes #1627
  • 9667f3cd Add file path to toggleable columns in SongList view. Fix #1719
  • 5773fa03 Fix discussions links
  • 527c378c Add feature request link to About dialog
  • caa07888 Fine tune issue templates
  • 40b14e6d Add log-output to lock-threads bot
  • becd50eb Remove debug-only option from stale bot
  • 15b5aa91 Add stale/lock-threads bot
  • 7987d982 Fix pipeline's lint error message
  • 1dd074bb Add new issue templates
  • 7eac9d2b Bump dependencies
  • 362d8c50 Bump github.com/onsi/gomega from 1.26.0 to 1.27.1 (#2204)
  • 01c604ba Bump github.com/stretchr/testify from 1.8.1 to 1.8.2 (#2216)
  • 2c129a28 Bump golang.org/x/image from 0.0.0-20191009234506-e7c1f5e7dbb8 to 0.5.0 (#2217)
  • 5fc4076a Fix translation key
  • d303ad26 Bump dependencies
  • c4a68c8a Fix build pipeline
  • ad9ce98c Use GoLang 1.20.1 in pipeline
  • a134b1b6 Use sync/atomic package, now that we are at Go 1.19
  • 6dce4b24 Remove custom atomic.Bool, we are now at Go 1.19
  • 10108c63 Allow BaseURL to contain full server url, including scheme and host. Fix #2183
  • aac6e2cb Add path to cookies. Fix #1580
  • 0ffdb2ee Bump minimum Go version to 1.19

v0.49.3

1 year ago

Bug fix point release

There was a show stopper bug in 0.49.2, sorry about that. Also, the ReplayGain implementation is broken in Safari, and it was causing no audio to be played. In this release Safari should play normally as long as you don't turn ReplayGain on. This will be properly fixed and supported in Safari in a future release.

This release fixes the following issues:

  • Fix DB upgrade from versions before 0.49.0 (#2168)
  • Only create context if gain mode active (#2173) @kgarner7
  • Limit Share Player size while handling theme properly (#2171) @kgarner7

Changelog

  • 8b93962f Limit share size while handling theme properly (#2171)
  • b129cae0 Only create context if gain mode active (#2173)
  • 2400e4f6 Fix DB migration. Fix #2168

v0.49.2

1 year ago

Bug fix point release

This release fixes the following issues:

  • Fix Playlist delete and reorder actions (#2160)
  • "Spell-Jacking" mitigation - prevent sensitive data leak from spell checker (#2091). Thanks to @dlehammer
  • Don't cancel transcoding session if context is canceled
  • Make ffmpeg path configurable (option FFmpegPath), also finds it automatically in current folder (#1932)
  • Enable ReplayGain by default and always import RG tags
  • Limit Share player width to 768px (#2164) Thanks to @kgarner7
  • Abort start up if config file is invalid.
  • New Option EnableArtworkPrecache to control the usage of Image Cache Warmer. See discussion in #2142

Changelog

  • 3cd934ab Update translations (#2159)
  • 727632b6 Refactor play tracking
  • 9e268678 Limit Share player to 768 px (#2164)
  • bb29ad3b Update Spanish translation (#2165)
  • b68ed2e4 Fix album's image_files
  • 0c3ac906 Enable ReplayGain by default and always import RG tags
  • b0e58cb8 Use Navidrome's own public images endpoint for getAlbumInfo's imageURLs
  • 80671371 Add lastUpdated to coverArt ids. Helps with invalidating art cache client-side.
  • a3b8682d Fix polling of buffered scrobbles
  • 0bbb5493 Use Go 1.20 in pipeline, drop support for 1.18
  • 759ff844 Make ffmpeg path configurable, also finds it automatically in current folder. Fixes #1932
  • b8c5e49d Close stream when downloading files, fix fd leak
  • 05c6cdea Don't cancel transcoding session if context is canceled
  • fc8462dc "Spell-Jacking" mitigation ~ prevent sensitive data leak from spell checker. (#2091)
  • 9d459fbd Abort start-up if config file is invalid
  • 9b2dd1bb Fix playlist delete and reorder actions
  • bfaf4a33 Add logs to cache hunter
  • a7f15fac Bump github.com/golangci/golangci-lint to 1.51.1
  • ee8f6447 Add option to disable Cache Warmer. Related to #2142
  • dad4949a Refactor Subsonic search to make it a bit more readable
  • 3ce31851 Don't retrieve Various Artists and Unknown Artist info from Last.fm
  • a50d9c8b Use the latest sanitize, to fix some diacritics

v0.49.1

1 year ago

Bug fix point release

This release fixes the following issues:

  • Proper handling of external metadata refreshes in background #2130. Thanks to @Tolriq (from Symfonium) for helping debug this.
  • Add a fallback when the browser does not support copying the share link to clipboard
  • Fix downloading and sharing from a playlist #2123
  • Fix invisible checkboxes in Gruvbox theme #2135. Thanks to @vlfldr
  • Fix unreadable lyrics in Nord theme #2146. Thanks to @kgarner7
  • Fix playing new music uses lyrics from previously played one in Web Browser #2117. Thanks to @joaomqc
  • Fix artwork resolution when paths contains a : char #2137

It also adds a new config option to change max playlists shown in UI's sidebar, MaxSidebarPlaylists. See #2077

Changelog

  • f8dfb3ad Clearer lyrics in Nord theme (#2146)
  • 255f8e4a Update react-player, fix #2117
  • eba70ab8 Change throttling log messages
  • ee6b10db Replace custom code with errgroup
  • 797cc871 Enqueue external metadata refreshes
  • bfbe9806 Bump http-cache-semantics from 4.1.0 to 4.1.1 in /ui (#2139)
  • d9d0a976 Better log message
  • c031167b Don't retrieve all artist external metadata if we just want artist images
  • 4a25e6d3 Fix Mapped Similar Artists log
  • ad2ad514 Add dev option to increase external metadata cache expiration. More logs
  • 588ee94f Discard request for image canceled by the client before any further processing
  • 3c5032a3 Add migration to rebuild albums paths
  • bcab3cc0 Add throttling to /share/img endpoint.
  • 9b81aa44 Fix artwork resolution when paths contains :. Fix #2137
  • f904784e Bump dependencies
  • 0ce750d4 Update golangci-lint and fix lint errors
  • cf04db7a Don't try to connect to external services if artist is Unknown
  • f4b50c49 When retrieving images from external sources, avoid calling it again if data is already cached locally.
  • 4a7e86e9 Fix file descriptor leaking.
  • a1a5b2fc Fix invisible checkboxes in Gruvbox theme (#2135)
  • f00e6117 Invalidate artist cache (by changing cache key format)
  • d8e79431 Return 404 when artwork is not available in /share/img endpoint
  • 128b626e Add option to change max playlists shown in UI's sidebar, MaxSidebarPlaylists. Fix #2077
  • d683297f Better behaviour of Prev/Next buttons when share has only one song:
  • aaf58bbd Handle nil pointer dereference. Fix #2133
  • 58c46827 Update translations
  • 712d8f9f Add trace logs to calls to external services
  • b6fcfa9f Add a fallback when the browser does not support copying the share link to clipboard (not a secure origin)
  • 762a1ba9 Fix downloading and sharing from a playlist. Fix #2123

v0.49.0

1 year ago

New in this release

Sharing (preview)

A new nice feature is the ability to generate a sharing link for a track/album/artist/playlist to send to friends, so that they can listen to the music without having an account on your Navidrome server. This is a nice alternative to YouTube links to share music. Sharing works from the UI and from Subsonic clients that support this feature.

NOTE: The sharing feature is complete but misses fine-grained permissions. Because of that it is disabled by default. If you want to give it a try, you can enable it by setting EnableSharing=true in your config, or the environment var ND_ENABLESHARING=true. Just remember that once enabled all users (not only admins) will have full permission to share and change existing shares.

Revamped Artwork Resolution

Various issues with artwork were resolved in this release, including support for local artists images. Also, playlist covers are now generated as a tiled (2x2) image from the album covers (only supported in Subsonic clients for now). To learn more, see Artwork Resolution in the documentation.

Internet Radio

You can now add your favorite Internet Radio streams to Navidrome and listen to them directly in the UI or in Subsonic clients that support this feature. Big thanks to @kgarner7 for implementing this.

As usual, a big thanks to all contributors who helped in this release.

Other highlights

  • [UI] New Gruvbox Dark theme #2092. Thanks to @vlfldr
  • [UI] Add ReplayGain support #1988. Thanks to @kgarner7
  • [UI] Add Internet Radios support #2063. Thanks to @kgarner7
  • [UI] Add keyboard shortcut shift-C to go to current playing song
  • [UI] Add option to transcode when downloading #1667. Thanks @kgarner7
  • [UI] Show album description from Last.fm if enabled and available #2061. Thanks @kgarner7
  • [UI] Fix "Play Next" resetting the play queue #1472
  • [UI] More columns to select in List views
  • [UI] Hide toggleable columns when in Album Grid view mode. Fix #2064
  • [UI] Hide Links to external services if they are disabled
  • [UI] Respect prefers-reduced-motion browser configuration #2090. Thanks to @gildesmarais
  • [UI] New DefaultUIVolume config option. Fix #1679
  • [Server] Much improved artwork handling. See Artwork Resolution in documentation
  • [Server] Support local artist images. Fix #394
  • [Server] Uses ffmpeg to extract images as a fallback. Should handle all filetypes with embedded images now. Fix #1492
  • [Server] Add Downsampling feature #1575. Thanks to @gauth-fr
  • [Server] Fix compatibility with Maloja #1994. Thanks to @rhamzeh
  • [Server] New command line option (navidrome pls) to export playlists in M3U format #1914
  • [Server] Create accounts automatically when authenticating from HTTP header #2087. Thanks to @selfhoster1312
  • [Server] Expose more Prometheus metrics #2002. Thanks @AlekseyLobanov
  • [Server] Downloads of multi-disc albums now create subfolders for each disc. Fix #2121
  • [Subsonic] Add Internet Radio endpoints #2063
  • [Subsonic] Add initial Sharing support (if EnableSharing is set to true)
  • [Subsonic] Add coverArt to playlists
  • [Subsonic] Make artist artwork handling more compatible with Subsonic clients
  • [Subsonic] getTopSongs return starred and 5-star rated songs if ExternalServices are disabled
  • [Subsonic] Add getAlbumInfo and getAlbumInfo2 endpoints. Thanks to @kgarner7
  • [Subsonic] New SubsonicArtistParticipations to show album participations under artists (ex: in Various Artists compilations)
  • [Build] Fix ARMv5 and v6 builds #1968
  • [Build] Fix Illumos build #2067. Thanks @bardo

Changelog

  • 25374b3b Update translations
  • 68e61157 Rename DevEnableShare to EnableSharing
  • a651d65a Add a comment to the generated zip
  • dc56c525 Refactor zip archiver.
  • 5163df65 Rollback changes to Chinese translations
  • fc693e56 Update translations
  • 731bd7ee Fix update translations job
  • 9f684e5a Add job to create translations PRs
  • e2ea5eba Disable creation of shares when feature is disabled.
  • b825d3cf Fix versioning releases in the pipeline (#2101)
  • 1950c07b Disable external links when EnableExternalServices is false. Fix #2022
  • e0fc997a Fix Share dialog titles for Album and Playlist
  • 5eefb265 Simplify radio CRUD code
  • 39161fdf Playlist view: optionally show comment column (#2073)
  • 1e24809e Create accounts automatically when authenticating from HTTP header (#2087)
  • 9721ef89 Fix download translation key
  • 16850a9b Revert "Replace the LoveButton with ArtistContextMenu in the artist page - #1979"
  • 457e1fc9 Base SQL metrics in MetricsWorker (#2002)
  • d31faf52 Bump github.com/onsi/gomega from 1.25.0 to 1.26.0
  • 20829481 Fix downloadOriginalFormat term in English translation
  • 39dc9c43 Disable Subsonic Share endpoints if feature is disabled
  • 0c263cf2 Make AlbumSongs BulkActionsToolbar more responsive
  • 85084cda Add button to share selected songs
  • 69b36c75 Add meta tags to show cover and share description in social platforms
  • cab43c89 Mark Share.LastVisited optional in Subsonic API
  • 433da379 Add Share to Context menus, also share artist
  • 051e9c55 Use redux for ShareDialog
  • 17d9573f Refactor dialogs, make it simple to add a new dialog to all views
  • 26be5b83 Keep order of shared mediafiles
  • c7702291 Add Share capability to Subsonic user's info
  • ef4765c7 Fix getShares sort order
  • 6c05fcb6 Create contents label for group of shared mediafiles
  • 63e67bd5 Make Share list responsive
  • 230f2fdc Reduce spacing between album buttons, to avoid breaking the toolbar in two
  • d639da9e Enable sharing only selected songs with the Subsonic API
  • e34f2658 Fix empty entry collection in Shares
  • c994ed70 Fix expireAt update error
  • 40cac5c3 Fix JS console warning
  • 34277f23 Make Share icon dynamic
  • dbf80d85 Change public/share path to /share - DSub does not use the URL from the API response... :(
  • d5df102f Implement updateShare and deleteShare Subsonic endpoints
  • 20271df4 Workaround to detect empty dates in some Subsonic clients
  • d4c1d2ec Handle expired shares
  • d0dceae0 Add getShares and createShare Subsonic endpoints
  • 94cc2b2a Fix tests and lint errors, plus a bit of refactor
  • 72a12e34 More share translations
  • 12bb6c38 Don't expose empty dates in share info
  • 58fc2718 Share playlists
  • 65174d3f Refactor DownloadMenuDialog to use useTranscodingOptions hook
  • c8293fcd Extract transcoding options to its own hook
  • d9c42b31 Add share's contents and description to the DB
  • 364fdfbd Use defaultDownsamplingFormat in share options
  • 63b4a12a Fine tune SharePlayer
  • 357c0e1e Refactor URL builders in UI
  • 84aa094e More work on Shares
  • ab04e33d Initial work on Shares
  • 5331de17 Fixes the slide bar clickable area (#2113)
  • 199f66b8 Bump @testing-library/react from 12.1.2 to 12.1.5 in /ui (#2109)
  • 535171fa Bump github.com/onsi/gomega from 1.24.2 to 1.25.0 (#2111)
  • bee39ad2 Bump github.com/spf13/viper from 1.14.0 to 1.15.0 (#2110)
  • 2de570fe Fix order of gain menu options (#2105)
  • 33f033be Fix artist image not caching on browser
  • b9934799 Increase size of artist image
  • adea15ab Use constant
  • 0c27e7a4 Fix Illumos build - #2067 (#2069)
  • 8956f5e7 Fix Album.MaxYear calculation
  • 7073d18b Make private methods unpublished
  • 7fc964ae Don't wake CacheWarmer every 10 seconds, let it sleep :)
  • 136d5f9a Add config option to show album participations under artists in Subsonic clients
  • 8ae0bcb4 Add Gruvbox Dark color theme (#2092)
  • 127c75e3 Don't try to downsample if requested bitrate is equal or greater than original. Fix #2066
  • d5c9cf07 Fix Playlist show
  • 701e301d Increase timeout for obtaining login background image list
  • 580e9ae4 Fix timer going awry
  • feb774a1 Change genre.Put() to upsert. Fix #1918 and #1564 (#1920)
  • 17eab6a8 Fix resized image cache key
  • bedd2b20 Implement better artwork cache keys
  • 93adda66 Get album info (when available) from Last.fm, add getAlbumInfo endpoint (#2061)
  • 5564f008 Some refactor, log message changes
  • 1324a16f ReplayGain support + audio normalization (web player) (#1988)
  • 9ae156dd Remove unused prop
  • 438d45c1 Change Internet Radio UX
  • e7608080 Fix pipeline lint error help message
  • 0a65bf17 Change Players icon, to distinguish it from Internet Radios
  • e40da183 Move artwork id encoding to public package
  • 13ba0815 Add Size column to Album Songs view
  • 7682fdde Add Size column to Artist and Album views
  • 4a054de3 Hide togglable columns when in Album Grid view mode. Fixes #2064
  • b6233e57 Bump @material-ui/styles from 4.11.4 to 4.11.5 in /ui (#2093)
  • c00040d9 Bump github.com/dustin/go-humanize from 1.0.0 to 1.0.1 (#2094)
  • c748d669 Sort radio stations by name
  • d319b66f Make Radio Create and Edit forms consistent
  • a8478ca7 Fix Subsonic XML Internet Radio response
  • 8877b169 Add Internet Radio support (#2063)
  • aa21a2a3 Respect prefers-reduced-motion browser configuration (#2090)
  • e3496c7e Fix artist folder detection. Now works when the artist has only one album.
  • d3e4a528 "Touch" playlists to force some clients to reload cover art
  • 12dd219e Don't refresh artistInfo when setting artist's love/rating
  • 1d6b04e3 Replace the LoveButton with ArtistContextMenu in the artist page - #1979
  • dfbf86c5 Allow any HTTP methods for public images endpoint. Fix artist covers in Subtracks
  • 16c869ec Optimize playlist cover generation
  • c46a2a5f New dev options to control getCoverArt throttling
  • ab7668f5 Use a custom artist image cache key.
  • 94c6d471 More descriptive error when artist.jpg not found
  • 0ffef05c Remove "Biography not available" when agents are not available
  • 3f2d2469 PreCache artist images
  • cbe3adf9 Don't show error when it is nil
  • c90468b8 Find artist.* image in Artist folder
  • 69e0a266 Remove size from public image ID JWT
  • 8f0d0029 Add local TopSongs
  • 77a99a73 Always access artist images through Navidrome (proxy calls to external URLs)
  • 918fee3e Artwork reader for Artist
  • bf461473 Add local agent, only for images
  • 387acc5f Add public endpoint to expose images
  • 7fbcb290 Add function number.RandomInt64
  • 7a617d3a Remove unused "embed" build tag
  • 769e8bed Rename WeightedChooser's method Put to Add, a better name
  • 291455f0 Fix Download Dialog not showing in Artist page
  • b1b081e3 Move react-scripts to devDependencies
  • 9ea9b488 Bump golang.org/x/tools from 0.4.0 to 0.5.0
  • e6e92606 Bump decode-uri-component from 0.2.0 to 0.2.2 in /ui
  • 224e3b30 Bump json5 from 1.0.1 to 1.0.2 in /ui
  • 023e1037 Bump prettier from 2.4.1 to 2.8.2 in /ui
  • 53ef50d9 Bump golang.org/x/text from 0.5.0 to 0.6.0
  • feabcdfe Show help message when goimports/go mod tidy breaks the build
  • 1374dab0 Disable buildvcs flag
  • 18aac7c7 Bump github.com/onsi/ginkgo/v2 from 2.6.1 to 2.7.0
  • c8ecf3b4 Bump github.com/go-chi/httprate from 0.7.0 to 0.7.1
  • 7e03f8ca Upgrade to Go 1.19.5
  • fdbece5c Use custom sanitize package, fix #2070
  • df0f140f Don't refresh smart playlists when generating covers
  • 950cc28e Add coverArt to Subsonic playlist response
  • 62609270 Serve artist placeholder directly, instead of using LastFM's CDN
  • b8c171d3 Hide LastFM icons if config.lastFMEnabled is false (#1935)
  • 80ded63d Add test for mapTrackTitle
  • cc144851 When trying to PreCache, wait for ImageCache to be available
  • 0c7c6ba0 PreCache Playlists CoverArt
  • 14032a52 Reduce retention in CacheWarmer
  • 61e55234 Handle "naked" CoverArtIDs (IDs of album, mediafiles and playlists)
  • bc09de66 Better error handling
  • 949331ed GetCoverArt generates a tiled (2x2) image for playlists
  • 501386b1 Parse correctly playlist CoverArt ids
  • 8f3387a8 Fix tests and clean up code a bit
  • 33290077 Rename DevFastAccessCoverArt to EnableMediaFileCoverArt
  • 722a00ca Fix artwork caching
  • 92ddae4a Created dedicated artwork readers
  • c1c46455 Move artwork handling to its own package
  • 8cf78efb Add timeout for artwork extraction
  • 52a4721c Remove empty (invalid) entries from the cache
  • e89d99ae Also caches resized images
  • dc16ccdb Make tests compatible with GoLang 1.18
  • b6eb60f0 Add new Artwork Cache Warmer
  • 8c1cd9c2 Refactor file type functions
  • 9ec349dc Make sure album is updated if external cover changes
  • f5719a75 Fix spaces in CoverArtPriority, more trace logs in artwork resolution
  • 3dbd5c8d Remove unnecessary cache invalidator, as ID nows contains the updatedAt value
  • 73bb0104 Cache original images
  • 26a7adae Change Image cache key format
  • 04eab566 Add back CoverArtPriority
  • 045b023b Fix DevFastAccessCoverArt flag
  • 57c3334e Remove unused DevPreCacheAlbumArtwork config option
  • 847a0432 If resize fails, send the artwork as is. Closes #1102
  • 8e640bb8 Implement new Artist refresh
  • bce7b163 Skip trying to read cover art from mediafile if it does not have one
  • 2923f01c Fix UI artwork id creation
  • a087f57d Handle request (context) cancellation
  • 9fcd1c93 Make internal method unexported
  • 2814c818 go mod tidy
  • 73719c3a Fix cover detection on M4A containers
  • e0da1d15 Log artwork origin (tag, file, etc...)
  • 92b42b35 Fallback extracting tags using ffmpeg
  • abd32742 Handle empty cover art ID in subsonic API
  • 0da27e8a Add image cache back
  • 40bb211b Small test refactor
  • 87d4db76 Handle mediafile covers
  • 213ceeca Resize if requested
  • 7b873860 Load artwork from embedded
  • c36e77d4 Remove CoverArtID, fix tests
  • 38bde0dd Remove current Image Cache implementation
  • c430401e Remove current artwork implementation
  • 0130c6dc Add all images found for each album in the database
  • 2f90fc9b Move album refresh to scanner
  • 566ae939 Remove old refresh code
  • 83ff44f5 Move cover art discovery (temporarily) to model
  • 28e7371d Moved logic of collapsing songs into albums to model package
  • e03ccb31 Replace MinInt/MaxInt with generic versions
  • 6f5aaa1e Move alternative tag names mapping to metadata
  • 0c22af35 Invert dependency of metadata and extractors
  • 55b02274 Add Date Added column in Album and Song lists (#2055)
  • db6e8e45 Fix build badge: https://github.com/badges/shields/issues/8671
  • 5943e8f9 Rename log.LevelCritical to log.LevelFatal
  • 28389fb0 Add command line M3U exporter. Closes #1914
  • 5d8318f7 Change "Go to current song" hotkey.
  • 75596a6b Bump github.com/onsi/gomega from 1.24.1 to 1.24.2 (#2048)
  • a9ddb2db Bump github.com/beego/beego/v2 from 2.0.6 to 2.0.7 (#2047)
  • fe1a6a7d Bump github.com/onsi/ginkgo/v2 from 2.5.1 to 2.6.1 (#2046)
  • 9cb1fc4f Bump github.com/go-chi/chi/v5 from 5.0.7 to 5.0.8 (#2040)
  • 24d52088 Don't cache transcoded files if the request was cancelled (#2041)
  • 54395e7e Enable transcoding of downlods (#1667)
  • 6489dd44 Fix overriding previous logger in context
  • 6c4a0be6 Add endpoints in Subsonic API logs
  • 982b6045 Add username to authenticated log messages
  • f206d81a Some cleanup, fixes typos and grammar errors
  • c5f7cf97 Some cleanup, adding missing context handling
  • 55ba39cb Add global Downsampling feature (#1575)
  • 0cc1db54 Bump github.com/bradleyjkemp/cupaloy to v2.8.0
  • 879992eb Change "current song" hotkey English label
  • b5b01f78 Keyboard shortcut to go to current song (#2029)
  • cdddd4ce Bump golang.org/x/text from 0.4.0 to 0.5.0 (#2030)
  • 4489c347 Fix Misleading Error Message on unreadable Media due to Permission (#1873)
  • 51b67d18 Increase number of "Shuffle All" songs
  • c4d15694 Fix bug in duration format logic (#2026)
  • 68ceeb9e Fix build for non-unix
  • 4549b91a Fix build for non-unix
  • 9ffd145e Add log for signal received
  • 57130109 Bump github.com/spf13/viper from 1.13.0 to 1.14.0 (#2019)
  • 00c6545c Bump github.com/go-chi/jwtauth/v5 from 5.0.2 to 5.1.0
  • 3f45a4ed Bump github.com/beego/beego/v2 from 2.0.5 to 2.0.6 (#2016)
  • 46c09e4b Bump github.com/prometheus/client_golang from 1.13.0 to 1.14.0 (#2018)
  • 40395f47 Use forked react-player. May fix issue #1472
  • 2c214154 Add nakedret linter
  • 03640ca9 Fix background images when BaseURL is specified
  • d8c5944e Fix race condition in scanner
  • 10cd3152 Remove misplaced import
  • 950b5dc1 Remove math/rand and only use crypto/rand
  • 195f3918 Host default login background images in Navidrome's own website
  • 334ccac6 Spotify-ish Improvement (#2012)
  • 676de79f Don't abort scan if all audio files are in the MediaFolder's root. Fix #868 (#893)
  • d5fe0f21 fix: send content type header in listenbrainz requests - #1944 (#1994)
  • 6ae6e023 Bump some NPM dependencies
  • 7bafbce8 Reduce number of goroutines in test, to avoid hitting the hard limit of 8128
  • a69a31a3 Use custom atomic.Bool, as it is not supported in Go 1.18
  • 88823fca Fix race conditions in tests
  • 0bb133a6 Kill ffmpeg if context is cancelled
  • 76a94ecb Update GH actions
  • 1b5f855b Compress more http content-types.
  • 472f99b2 Add AAC default transcoding (#2010)
  • 4d660a2b Bump github.com/golangci/golangci-lint from 1.49.0 to 1.50.1 (#1954)
  • 39810189 Bump golang.org/x/tools from 0.1.12 to 0.3.0 (#1991)
  • d76985e3 Bump github.com/kr/pretty from 0.3.0 to 0.3.1 (#1924)
  • e17e4ef1 Bump github.com/microcosm-cc/bluemonday from 1.0.20 to 1.0.21 (#1905)
  • 0a4a9d48 Bump github.com/mattn/go-sqlite3 from 1.14.15 to 1.14.16 (#1965)
  • ce2c5792 Bump github.com/spf13/cobra from 1.5.0 to 1.6.1 (#1966)
  • 4e19c5e0 Bump github.com/stretchr/testify from 1.8.0 to 1.8.1 (#1951)
  • ab6be8d2 Listenbrainz Scrobble (#2009)
  • 586f5c41 Bump github.com/onsi/ginkgo/v2 from 2.2.0 to 2.5.1 (#2007)
  • e6a93da7 Bump github.com/onsi/gomega from 1.20.2 to 1.24.1 (#1990)
  • fcb891e7 Add an id attribute to Search boxes. Should fix #1998
  • 19af11ef Simplify Subsonic API handler implementation
  • cd41d9a4 Shutdown gracefully, close DB connection
  • 5f3f7afb Add note about unstable state of master branch
  • 1467036e Add DefaultUIVolume option. Closes #1679
  • ff6c8f7e Bump loader-utils from 2.0.0 to 2.0.3 in /ui (#1978)
  • 3a462c7f Fix ARM v5 and v6 builds, by going back to armel.
  • 9c433b5d Add missing context to logger calls
  • daa428ed Update Chinese translations (#1945)
  • 76517cab Fix potential nil pointer dereference
  • 8f02daf3 Reduce spurious error/warn messages, if loglevel != debug
  • 80b73114 Add TrackNumber to "fake" generated filenames. Fixes #1912
  • ca2cb26d Add played field to Subsonic API responses. Fix #1971
  • 081cfe5a Fix build badge
  • 5f38d9dc Fix 60 seconds (again). Fixes #1956
  • 64e2a0bc Optimize static images (#1941)
  • aab4925d Restore DefaultLanguage case-sensitiveness by reverting commit bfeb8ef6b3e5756d72b230abdbb96f8a31b2e2f.

v0.48.0

1 year ago

This release is focused on fixing bugs and security issues. Also fixes a bunch of edge cases in Smart Playlists. Thanks to all contributors who helped in this release.

Highlights

  • [UI] New Theme - Nord #1899. Thanks @renere and @tpbnick
  • [UI] New Theme - Monokai #1669. Thanks @chief8192
  • [UI] New Theme - Electric Purple #1889. Thanks @william-lohan
  • [UI] New config DefaultLanguage #1561
  • [UI] "Linkify" URLs in Album and Playlist comments #1053
  • [Server] Add "random" sort option to Smart Playlists
  • [Server] Add ListenBrainz URL config, allowing to use self-hosted solutions #1774. Thanks @andyklimczak
  • [Server] Add basic Prometheus metrics #1830. Thanks @AlekseyLobanov
  • [Server] Fix cache not honoring ND_TRANSCODINGCACHESIZE #1778
  • [Build] Fix building on Fedora. Thanks @pimzand for reporting it
  • [Build] Minimum Go version is now 1.18

Changelog

  • af5c2b5a Round song duration (instead of truncating it). Relates to #1926
  • 62e74923 Add Linkify test
  • 53a4ea67 Linkify urls in playlist comments
  • c530ccf1 Linkify urls in album comments. Fixes #1053, supersedes #1570 and #1169
  • fa5dc5af Fix adding songs to plain playlists
  • bbd3882a Some clean-up in criteria package
  • 12b4a488 Fix get info dialog in artist page. Closes #1909
  • 37f7625c Bump github.com/prometheus/client_golang from 1.12.1 to 1.13.0 (#1902)
  • 7612a558 Bump github.com/mileusna/useragent from 1.2.0 to 1.2.1 (#1901)
  • 3d5a1cef Don't allow adding songs to smart playlists
  • 552989a0 Add basic Prometheus metrics handler (#1830)
  • 6a6fa3e3 Nord Theme - Make links have a different colour (#1900)
  • c7ef4bd8 Capture "musicbrainz_releasetrackid" tag (#1827)
  • 22507c97 Add Nord Theme. Closes #1158 and supersedes #1159 (#1899).
  • 87feac04 Add make target to download some music for development purposes. Closes #1703
  • f82df703 Add nilerr linter
  • 364e699a Add asciicheck, bidichk, and durationcheck linters
  • 0798959b Add asasalint linter
  • 4209e142 Add theme Electric Purple (#1889)
  • 77dbafff Add errorlint linter
  • db67c127 Fix error comparisons
  • 7b0a8f47 Add exportloopref linter
  • 16865f0f remove deprecated linters (#1898)
  • 5965459b Update browserlist db
  • 66818b25 Allow ExternalLink icons to be styled (#1503)
  • e7fab8bb Show AlbumArtist in Album table view. Fixes #1626
  • 8befe10e fix(UI): Warn if track is already present when adding to playlist - 1604 (#1897)
  • 218d1472 Bump redux and react-redux versions
  • 50a4ce6b Fix add playlist dialog (#1758)
  • 8130c05c Mount devcontainer workspace SELinux compatible (#1816)
  • 15952a3c npm audit fix
  • 9a99a2bd Update Chinese (simplified) translations (#1633)
  • c7b65509 Bump @testing-library/jest-dom from 5.15.0 to 5.16.5 in /ui (#1836)
  • 6b09dc71 Fix new test-library eslint errors
  • 86ab3506 Upgrade react-scripts to 5.0.1
  • 413292da Reduce go mod download verbosity
  • 694968c6 Bump dependencies
  • 6dc70d68 Don't reset language to default after logout
  • bfeb8ef6 DefaultLanguage is now case-insensitive
  • ba28e9a1 Update README. Fixes #1834
  • 2f7a3c5e feat: Add listenbrainz base url configuration (#1774)
  • cb3ba23f New config DefaultLanguage. Closes #1561
  • 72cde6df fix:(middlewares.go) - Set Cookie SameSite mode to Strict - 1776 (#1777)
  • 751e42c7 Fix creating server (#1894)
  • ded9ab53 Use armhf for ARM builds
  • 416b5c7d Fix Linux 32 bits build
  • afb31c3e Fix invalid option in pipeline
  • dd57278b Upgrade to GoLang 1.19 and bump golangci-lint version
  • 2a3cd08f Fix GO-S2114 security issue
  • a7a0e239 Fix formatting
  • 4cf43ed7 Only compute version once
  • ebad96b8 Fix warning about mixing value and pointer receivers
  • e981ee27 Add test for WithTx
  • 965dbccd Upgrade to latest go-sqlite3 (it's v1.14, not v2!)
  • 695f82a1 Upgrade to Beego 2's orm
  • 16afd3a4 Remove //+build tags, as the code does not compile on older versions of Go anymore
  • 67f2a89d Fix tracks never "loved" to be selected in Smart Playlists. Refer to https://github.com/navidrome/navidrome/issues/1417#issuecomment-1163423575
  • bf1f93ef Bump github.com/go-chi/httprate from 0.5.2 to 0.6.0 (#1828)
  • ebf7354d Add more info in search log message
  • c0066ebd Add log warn when request is cancelled/interrupted
  • cd5bce7b Speed up /search subsonic endpoints by parallelizing the queries
  • d613b193 Simplify Singleton usage by leveraging Go 1.18's generics
  • a2d9aaef Fix Quality translation in Spanish
  • 49392e06 Update caniuse-lite
  • 181cb8a2 Remove interfacer linter, as it does not work with Go 1.18 and will not be updated (it is deprecated)
  • 31882abf Upgrade Ginkgo to V2
  • 0d8eaa28 Remove experimental version of context package
  • f4bffb16 Update @djherbis's packages
  • f2184730 Remove hardcoded github.com/dhowden/tag branch. Fix #1764
  • 9c3b14c5 Return 501 for "not implemented". Fixes #1785
  • 8cd405d1 Add IP to Subsonic API's invalid login log messages. Closes #1814
  • 35bec14d Add missing test case for #1778
  • 321b3c5a Fix fscache key mapping. Closes #1778
  • b7e50f77 Fix docker build in pipeline
  • 2e9c81c3 Bump github.com/mileusna/useragent from 1.0.2 to 1.1.0 (#1819)
  • 49647423 Bump github.com/sirupsen/logrus from 1.8.1 to 1.9.0 (#1821)
  • 9f62533b Bump github.com/go-chi/cors from 1.2.0 to 1.2.1 (#1822)
  • 7d58f446 Bump github.com/lestrrat-go/jwx from 1.2.17 to 1.2.25 (#1742)
  • 974816f0 Bump github.com/onsi/gomega from 1.18.1 to 1.20.0 (#1817)
  • 7665478a Upgrade golangci-lint and fix new lint error
  • bde5be34 Build with GoLang 1.18.4
  • aae79b45 Upgrade to GoLang 1.18
  • ce0db834 Fix signaler not exiting on cancel (#1638)
  • 5987cd0c Fixes a coloring glitch with the Monokai theme "unauthorized" popup (#1670)
  • e7cf74d8 Adds a Monokai theme (#1669)
  • 2ddd3acb Fix translatable label
  • 028723f7 Fix loading overridden translations from ${DataFolder}/resources/i18n
  • 50ff8bcc Add "random" sort option for Smart Playlists
  • e966d94c Force correct mime-type for JS and CSS files