v0.49.0
版本发布时间: 2023-01-30 22:16:48
navidrome/navidrome最新发布版本:v0.54.2(2024-12-22 07:52:58)
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 totrue
) - [Subsonic] Add
coverArt
to playlists - [Subsonic] Make artist artwork handling more compatible with Subsonic clients
- [Subsonic]
getTopSongs
return starred and 5-star rated songs ifExternalServices
are disabled - [Subsonic] Add
getAlbumInfo
andgetAlbumInfo2
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
toEnableSharing
- 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
anddeleteShare
Subsonic endpoints - 20271df4 Workaround to detect empty dates in some Subsonic clients
- d4c1d2ec Handle expired shares
- d0dceae0 Add
getShares
andcreateShare
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
anddescription
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 usecrypto/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.
1、 navidrome_0.49.0_Linux_arm64.tar.gz 13.28MB
2、 navidrome_0.49.0_Linux_armv5.tar.gz 13.44MB
3、 navidrome_0.49.0_Linux_armv6.tar.gz 13.43MB
4、 navidrome_0.49.0_Linux_armv7.tar.gz 13.42MB
5、 navidrome_0.49.0_Linux_i386.tar.gz 13.77MB
6、 navidrome_0.49.0_Linux_x86_64.tar.gz 13.98MB
7、 navidrome_0.49.0_macOS_x86_64.tar.gz 14.08MB
8、 navidrome_0.49.0_Windows_i386.zip 13.51MB
9、 navidrome_0.49.0_Windows_x86_64.zip 13.63MB
10、 navidrome_checksums.txt 917B