Navidrome Versions Save

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

v0.52.5

1 month ago

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 to audio/x-dsf (#3021)
  • [Server] General improvements to Jukebox mode (#2997, #2996, #2849, #3008). Thanks @ms140569
  • [Subsonic] Add samplingRate to OpenSubsonic responses

Changelog

  • c5560888 Change dsf mime-type to audio/x-dsf.
  • 78f55472 Revert "Add download link to PR" workflow
  • 2c8c87a9 Remove duplicated test
  • 3463d0c2 Simplify random.Int64 usage with generics
  • 0ae29440 Refactor random functions
  • 30ae468d Uses Unix milliseconds support from standard Go lib
  • ec68d69d Refactor cache.HTTPClient
  • 955a9b43 Refactor merge.FS
  • 56809419 Fix "Add download link to PR" workflow
  • 3a2a5e96 Add samplingRate to OpenSubsonic responses
  • f3bb0222 Add sampleRate to the DB
  • 472324e2 Read sampleRate from audio files
  • ed83c226 Do not panic if when updatePlaylist is called with a non-existent ID.
  • 2fdc1677 Add Catppuccin Macchiato Theme (#3014)
  • 80e68dfb Bump actions/github-script to v7
  • a9c74583 Bump actions/stale and dessant/lock-threads versions
  • bb96d455 Replace sync.WaitGroup with more appropriate errgroup.Group
  • c0885b55 Fix M3U mimetype on Debian Bullseye
  • 00cbe4c3 Update Go to 1.22.3
  • 2b49c7ff fix: languageName for Persian (#3011)
  • 09d1fd06 Simplify normalized AlbumPlayCountMode calc
  • 747069b2 Remove unused code
  • 885cd345 Clean up runNavidrome function
  • c4b05dac Make sorting lists by name/title case-insensitive (#2993)
  • 6408dda9 Terminate all MPV instances when stopping Navidrome (#3008)
  • 677d9947 Make dependency injection more consistent
  • a0290587 Fix migration package name mismatch
  • eb93136b Change default transcodings to a proper typed struct
  • 62cc8a2d Fix ambiguous column when sorting media_files by created_at.
  • dd4374ce Limit access to Jukebox for admins only (configurable).
  • 86567f54 Bump Go dependencies
  • ff8dca5a Guard against missing active track (#2996)
  • b3d70e92 Persist adjusted volume (#2997)
  • 4d291849 Improves golangci-lint configuration and workflow (#3004)
  • 2470471b Pin golangci-lint-action version as a workaround to fix the pipeline.
  • 544ae90e Fix CollapsibleComment in PlaylistDetails. Closes #2992
  • aef49cb8 Add HTTPSecurityHeaders.CustomFrameOptionsValue option.
  • 7c5eec71 Fix typo
  • a4c22320 Sort repeated lyrics that may be out of order (#2989)
  • 8f11b991 Bump Go dependencies
  • d4a9a9e5 Fix PlaylistTracks's loadAllGenres. Fix #2988
  • a8955f24 Fix AlbumPlayCountMode. Closes #2984
  • 2c06a423 Fix int types in OpenSubsonic responses.
  • 7ab7b5df Fix signaler on Windows
  • 3d9fff36 Use signal.NotifyContext
  • 31fcab07 Refactor loadGenres, remove duplication
  • de90152a Refactor DB Album mapping to model.Album
  • 27875ba2 Load mime_types from external file
  • 28f7ef43 Remove AlbumPlayCountMode from command line options

v0.52.0

2 months ago

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: https://github.com/navidrome/navidrome/compare/v0.51.1...v0.52.0

v0.51.1

4 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

5 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

6 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

7 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

7 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