Skip to content

Releases: navidrome/navidrome

v0.49.0

30 Jan 14:16
Compare
Choose a tag to compare

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

  • 25374b3 Update translations
  • 68e6115 Rename DevEnableShare to EnableSharing
  • a651d65 Add a comment to the generated zip
  • dc56c52 Refactor zip archiver.
  • 5163df6 Rollback changes to Chinese translations
  • fc693e5 Update translations
  • 731bd7e Fix update translations job
  • 9f684e5 Add job to create translations PRs
  • e2ea5eb Disable creation of shares when feature is disabled.
  • b825d3c Fix versioning releases in the pipeline (#2101)
  • 1950c07 Disable external links when EnableExternalServices is false. Fix #2022
  • e0fc997 Fix Share dialog titles for Album and Playlist
  • 5eefb26 Simplify radio CRUD code
  • 39161fd Playlist view: optionally show comment column (#2073)
  • 1e24809 Create accounts automatically when authenticating from HTTP header (#2087)
  • 9721ef8 Fix download translation key
  • 16850a9 Revert "Replace the LoveButton with ArtistContextMenu in the artist page - #1979"
  • 457e1fc Base SQL metrics in MetricsWorker (#2002)
  • d31faf5 Bump github.com/onsi/gomega from 1.25.0 to 1.26.0
  • 2082948 Fix downloadOriginalFormat term in English translation
  • 39dc9c4 Disable Subsonic Share endpoints if feature is disabled
  • 0c263cf Make AlbumSongs BulkActionsToolbar more responsive
  • 85084cd Add button to share selected songs
  • 69b36c7 Add meta tags to show cover and share description in social platforms
  • cab43c8 Mark Share.LastVisited optional in Subsonic API
  • 433da37 Add Share to Context menus, also share artist
  • 051e9c5 Use redux for ShareDialog
  • 17d9573 Refactor dialogs, make it simple to add a new dialog to all views
  • 26be5b8 Keep order of shared mediafiles
  • c770229 Add Share capability to Subsonic user's info
  • ef4765c Fix getShares sort order
  • 6c05fcb Create contents label for group of shared mediafiles
  • 63e67bd Make Share list responsive
  • 230f2fd Reduce spacing between album buttons, to avoid breaking the toolbar in two
  • d639da9 Enable sharing only selected songs with the Subsonic API
  • e34f265 Fix empty entry collection in Shares
  • c994ed7 Fix expireAt update error
  • 40cac5c Fix JS console warning
  • 34277f2 Make Share icon dynamic
  • dbf80d8 Change public/share path to /share - DSub does not use the URL from the API response... :(
  • d5df102 Implement updateShare and deleteShare Subsonic endpoints
  • 20271df Workaround to detect empty dates in some Subsonic clients
  • d4c1d2e Handle expired shares
  • d0dceae Add getShares and createShare Subsonic endpoints
  • 94cc2b2 Fix tests and lint errors, plus a bit of refactor
  • 72a12e3 More share translations
  • 12bb6c3 Don't expose empty dates in share info
  • 58fc271 Share playlists
  • 65174d3 Refactor DownloadMenuDialog to use useTranscodingOptions hook
  • c8293fc Extract transcoding options to its own hook
  • d9c42b3 Add share's contents and description to the DB
  • 364fdfb Use defaultDownsamplingFormat in share options
  • 63b4a12 Fine tune SharePlayer
  • 357c0e1 Refactor URL builders in UI
  • 84aa094 More work on Shares
  • ab04e33 Initial work on Shares
  • 5331de1 Fixes the slide bar clickable area (#2113)
  • 199f66b Bump @testing-library/react from 12.1.2 to 12.1.5 in /ui (#2109)
  • 535171f Bump github.com/onsi/gomega from 1.24.2 to 1.25.0 (#2111)
  • bee39ad Bump github.com/spf13/viper from 1.14.0 to 1.15.0 (#2110)
  • 2de570f Fix order of gain menu options (#2105)
  • 33f033b Fix artist image not caching on browser
  • b993479 Increase size of artist image
  • adea15a Use constant
  • 0c27e7a Fix Illumos build - #2067 (#2069)
  • 8956f5e Fix Album.MaxYear calculation
  • 7073d18 Make private methods unpublished
  • 7fc964a Don't wake CacheWarmer every 10 seconds, let it sleep :)
  • 136d5f9 Add config option to show album participations under artists in Subsonic clients
  • 8ae0bcb Add Gruvbox Dark color theme (#2092)
  • 127c75e Don't try to downsample if requested bitrate is equal or greater than original. Fix #2066
  • d5c9cf0 Fix Playlist show
  • 701e301 Increase timeout for obtaining login background image list
  • 580e9ae Fix timer going awry
  • feb774a Change genre.Put() to upsert. Fix #1918 and #1564 (#1920)
  • 17eab6a Fix resized image cache key
  • bedd2b2 Implement better artwork cache keys
  • 93adda6 Get album info (when available) from Last.fm, add getAlbumInfo endpoint (#2061)
  • 5564f00 Some refactor, log message changes
  • 1324a16 ReplayGain support + audio normalization (web player) (#1988)
  • 9ae156d Remove unused prop
  • 438d45c Change Internet Radio UX
  • e760808 Fix pipeline lint error help message
  • 0a65bf1 Change Players icon, to distinguish it from Internet Radios
  • e40da18 Move artwork id encoding to public package
  • 13ba081 Add Size column to Album Songs view
  • 7682fdd Add Size column to Artist and Album views
  • 4a054de Hide togglable columns when in Album Grid view mode. Fixes #2064
  • b6233e5 Bump @m...
Read more

v0.48.0

16 Oct 17:03
Compare
Choose a tag to compare

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

  • af5c2b5 Round song duration (instead of truncating it). Relates to #1926
  • 62e7492 Add Linkify test
  • 53a4ea6 Linkify urls in playlist comments
  • c530ccf Linkify urls in album comments. Fixes #1053, supersedes #1570 and #1169
  • fa5dc5a Fix adding songs to plain playlists
  • bbd3882 Some clean-up in criteria package
  • 12b4a48 Fix get info dialog in artist page. Closes #1909
  • 37f7625 Bump github.com/prometheus/client_golang from 1.12.1 to 1.13.0 (#1902)
  • 7612a55 Bump github.com/mileusna/useragent from 1.2.0 to 1.2.1 (#1901)
  • 3d5a1ce Don't allow adding songs to smart playlists
  • 552989a Add basic Prometheus metrics handler (#1830)
  • 6a6fa3e Nord Theme - Make links have a different colour (#1900)
  • c7ef4bd Capture "musicbrainz_releasetrackid" tag (#1827)
  • 22507c9 Add Nord Theme. Closes #1158 and supersedes #1159 (#1899).
  • 87feac0 Add make target to download some music for development purposes. Closes #1703
  • f82df70 Add nilerr linter
  • 364e699 Add asciicheck, bidichk, and durationcheck linters
  • 0798959 Add asasalint linter
  • 4209e14 Add theme Electric Purple (#1889)
  • 77dbaff Add errorlint linter
  • db67c12 Fix error comparisons
  • 7b0a8f4 Add exportloopref linter
  • 16865f0 remove deprecated linters (#1898)
  • 5965459 Update browserlist db
  • 66818b2 Allow ExternalLink icons to be styled (#1503)
  • e7fab8b Show AlbumArtist in Album table view. Fixes #1626
  • 8befe10 fix(UI): Warn if track is already present when adding to playlist - 1604 (#1897)
  • 218d147 Bump redux and react-redux versions
  • 50a4ce6 Fix add playlist dialog (#1758)
  • 8130c05 Mount devcontainer workspace SELinux compatible (#1816)
  • 15952a3 npm audit fix
  • 9a99a2b Update Chinese (simplified) translations (#1633)
  • c7b6550 Bump @testing-library/jest-dom from 5.15.0 to 5.16.5 in /ui (#1836)
  • 6b09dc7 Fix new test-library eslint errors
  • 86ab350 Upgrade react-scripts to 5.0.1
  • 413292d Reduce go mod download verbosity
  • 694968c Bump dependencies
  • 6dc70d6 Don't reset language to default after logout
  • bfeb8ef DefaultLanguage is now case-insensitive
  • ba28e9a Update README. Fixes #1834
  • 2f7a3c5 feat: Add listenbrainz base url configuration (#1774)
  • cb3ba23 New config DefaultLanguage. Closes #1561
  • 72cde6d fix:(middlewares.go) - Set Cookie SameSite mode to Strict - 1776 (#1777)
  • 751e42c Fix creating server (#1894)
  • ded9ab5 Use armhf for ARM builds
  • 416b5c7 Fix Linux 32 bits build
  • afb31c3 Fix invalid option in pipeline
  • dd57278 Upgrade to GoLang 1.19 and bump golangci-lint version
  • 2a3cd08 Fix GO-S2114 security issue
  • a7a0e23 Fix formatting
  • 4cf43ed Only compute version once
  • ebad96b Fix warning about mixing value and pointer receivers
  • e981ee2 Add test for WithTx
  • 965dbcc Upgrade to latest go-sqlite3 (it's v1.14, not v2!)
  • 695f82a Upgrade to Beego 2's orm
  • 16afd3a Remove //+build tags, as the code does not compile on older versions of Go anymore
  • 67f2a89 Fix tracks never "loved" to be selected in Smart Playlists. Refer to #1417 (comment)
  • bf1f93e Bump github.com/go-chi/httprate from 0.5.2 to 0.6.0 (#1828)
  • ebf7354 Add more info in search log message
  • c0066eb Add log warn when request is cancelled/interrupted
  • cd5bce7 Speed up /search subsonic endpoints by parallelizing the queries
  • d613b19 Simplify Singleton usage by leveraging Go 1.18's generics
  • a2d9aae Fix Quality translation in Spanish
  • 49392e0 Update caniuse-lite
  • 181cb8a Remove interfacer linter, as it does not work with Go 1.18 and will not be updated (it is deprecated)
  • 31882ab Upgrade Ginkgo to V2
  • 0d8eaa2 Remove experimental version of context package
  • f4bffb1 Update @djherbis's packages
  • f218473 Remove hardcoded github.com/dhowden/tag branch. Fix #1764
  • 9c3b14c Return 501 for "not implemented". Fixes #1785
  • 8cd405d Add IP to Subsonic API's invalid login log messages. Closes #1814
  • 35bec14 Add missing test case for #1778
  • 321b3c5 Fix fscache key mapping. Closes #1778
  • b7e50f7 Fix docker build in pipeline
  • 2e9c81c Bump github.com/mileusna/useragent from 1.0.2 to 1.1.0 (#1819)
  • 4964742 Bump github.com/sirupsen/logrus from 1.8.1 to 1.9.0 (#1821)
  • 9f62533 Bump github.com/go-chi/cors from 1.2.0 to 1.2.1 (#1822)
  • 7d58f44 Bump github.com/lestrrat-go/jwx from 1.2.17 to 1.2.25 (#1742)
  • 974816f Bump github.com/onsi/gomega from 1.18.1 to 1.20.0 (#1817)
  • 7665478 Upgrade golangci-lint and fix new lint error
  • bde5be3 Build with GoLang 1.18.4
  • aae79b4 Upgrade to GoLang 1.18
  • ce0db83 Fix signaler not exiting on cancel (#1638)
  • 5987cd0 Fixes a coloring glitch with the Monokai theme "unauthorized" popup (#1670)
  • e7cf74d Adds a Monokai theme (#1669)
  • 2ddd3ac Fix translatable label
  • 028723f Fix loading overridden translations from ${DataFolder}/resources/i18n
  • 50ff8bc Add "random" sort option for Smart Playlists
  • e966d94 Force correct mime-type for JS and CSS files

v0.47.5

22 Jan 01:20
86fe1e3
Compare
Choose a tag to compare

This bug-fix release includes a fix to a potential SQL injection and a couple of other niceties and fixes.

There are a few nice contributions that needs more testing, and I plan to validate and release them in
the next month or so. Stay tuned!

Highlights

  • [UI] Set volume to 100% when web player is in mobile mode. Fix #1429
  • [UI] New translations: Bulgarian (thanks @MrEddX) and Catalan (thanks S脿dur)
  • [UI] Fix ActivityPanel should behave better now, with (hopefully) no more UI freezing
  • [UI] Handle invalid theme in ui state (#1504) (thanks @srichter)
  • [Server] Fix potential SQL injection in Smart Playlists (thanks @DePierre)
  • [Server] Fix issue in smart playlists with values compared to 0 (See: #1417 (comment))
  • [Server] Add name and comment fields to .NSP files
  • [Server] Allowing 3rd party UIs to access x-total-count http header (#1470) (thanks @bricej13)
  • [Subsonic] Add userRating to Subsonic Album/Artist responses. Fix #1486

Changelog

86fe1e3 Bump github.com/ReneKroon/ttlcache/v2 from 2.9.0 to 2.11.0 (#1529)
eed54d7 Bump github.com/lestrrat-go/jwx from 1.2.11 to 1.2.17 (#1574)
ab36344 Bump github.com/microcosm-cc/bluemonday from 1.0.16 to 1.0.17 (#1560)
e5d03a3 Bump github.com/Masterminds/squirrel from 1.5.1 to 1.5.2 (#1501)
30813cd Update translations (#1578)
6164f37 Added Bulgarian Translation (#1577)
9e79b5c Fix potential SQL injection in Smart Playlists
8c707b4 Handle invalid theme in ui state (#1504)
910091f Fix playCount casing
2e1b985 Revert "Direct link to dev build"
100b805 Update README.md
bde9d5f Fix TypeError: Cannot read property 'id' of undefined
69615f1 Trying to fix multiple EventStream connections, one more time
a99b9b4 Direct link to dev build
9892524 Connect eventStream after login
9fe9789 Try to avoid creating multiple eventStreams
5425c1a Update translations (#1489)
afe1e4c Fix lint for public credentials
20cdd38 Better logging for agents configuration
913a4cf Bump github.com/onsi/gomega from 1.16.0 to 1.17.0 (#1459)
121ada5 Bump @testing-library/jest-dom from 5.14.1 to 5.15.0 in /ui (#1456)
e59a95c Bump github.com/golangci/golangci-lint from 1.42.1 to 1.43.0 (#1460)
d75f286 Update zh-Hans.json (#1478)
30d3f1e Add userRating to Subsonic Album/Artist responses. Closes #1486
6a1f967 Bump github.com/ReneKroon/ttlcache/v2 from 2.8.1 to 2.9.0 (#1414)
a0977ce Bump github.com/go-chi/chi/v5 from 5.0.4 to 5.0.7 (#1484)
b3d8038 Bump github.com/lestrrat-go/jwx from 1.2.7 to 1.2.11 (#1485)
0714f08 Recover from SIGSEGVs in taglib's code
cbeaadf Fix logging smart playlist's song count
3e282df Set volume to 100% when web player is in mobile mode.
ce7940b Allow overriding name and comment when importing NSP playlists
92c31c9 Fix values from annotation table cannot be compared to 0
4bf4765 Bot that adds a download link on pull requests
6d947f6 Allowing 3rd party UIs to access x-total-count http header (#1470)

v0.47.0

18 Nov 23:22
8c7d95c
Compare
Choose a tag to compare

New in this release

First implementation of Smart Playlists
Smart Playlists can be created as a .NSP file and they will be imported the same way as .M3U files. Some examples are available in the GitHub issue. While I don't write a documentation page for this feature, please check the info in the issue (examples, list of fields and operators). Feel free to open an issue if you are having difficulties to use it.

Lyrics support (thanks @dheerajdlalwani / @chiraglulla)
Embedded lyrics are now supported by both the Subsonic API and in the UI. There's a limitation in the UI that it only works with synchronized lyrics for now, but the work with this feature is not complete and there's more things in the pipeline. Expect the following enhancements in future versions: support for external .LRC files, unsynchronized lyrics in the UI, grabbing lyrics from external services.

ListenBrainz scrobbling (thanks @srichter)
Same as with Last.fm, the user needs to link ListenBrainz to their account, by going to the Personal menu in the UI and enabling Scrobble to ListenBrainz.

Speaking of external integrations, if you don't want Navidrome to connect to any external service, you can now disable everything with just one config option: EnableExternalServices=false (default is true).

Thanks for all contributors who helped in this release.

Highlights

  • [UI] More improvements to the Artist Page (#1391). Thanks @Dnouv
  • [UI] Display synced lyrics in the UI if available (#1406). Thanks @chiraglulla
  • [UI] Allow changing playlist's owner
  • [UI] Add bulk action to make playlists private/public
  • [UI] Add links to artists from songs (only when artists have albums)
  • [UI] Fix default volume (#1395). Thanks @sparkhom
  • [UI] Fix translations on Windows
  • [UI] Fix Player incorrectly scrobbles tracks when unpaused (#1397). Thanks @srichter
  • [Server] Optimize Playlists operations
  • [Server] Speed-up a bunch of SQL queries
  • [Server] ListenBrainz support (#1424). Thanks @srichter
  • [Server] New config option to disable all external integrations (#102)
  • [Subsonic API] Add GetLyrics endpoint (#1379). Thanks @dheerajdlalwani
  • [Subsonic API] Don't send invalid artistIds

Changelog

8c7d95c Update Translations (#1471)
d4447e3 Fix sorting albums by year (should use name as secondary sort field).
3bd6f82 Rename ListenBrainz config flag and enable by default (#1443)
da26c5c Combined multiple appends into a single one (#1464)
023d7bf Remove link from songs to artist (when artist has no albums)
48a6278 Simplify prototype definition for taglib_read
91b470c Show artist link in Songs lists
1c82bf5 Remove non-album artist_ids from the DB
0d9dceb Fix playlist cannot be empty via Subsonic API
5994c31 Fix migration to support null values
804fb71 Show in the logs how long it took to startup
d3a2f76 Better logging of GetSimilar call
68a84ec Smarter cache of external info calls (last.fm / spotify)
9e48d87 Add a new index for album, to optimize the getAlbumList?type=alphabeticalByArtist Subsonic query
9712a5b Fix error codes for required parameters in getAlbumList
9422373 Optimize AlbumRepository.GetAll and add a GetAllWithoutGenres method specifically for Subsonic API, where multiple-genres are not required
bc8132e Bump @testing-library/user-event from 13.2.1 to 13.5.0 in /ui
82bc8cd Bump github.com/go-chi/httprate from 0.5.1 to 0.5.2
1e5ab59 Bump github.com/onsi/ginkgo from 1.16.4 to 1.16.5
28ad91a Bump github.com/Masterminds/squirrel from 1.5.0 to 1.5.1
e40e865 Bump github.com/microcosm-cc/bluemonday from 1.0.15 to 1.0.16
12818fb Make song/album/artist endpoints read-only
aaeaa3c Fix playlist filter
0539091 More info in scrobbling logs
6a87fc8 Ignores invalid timestamps in requests (use current time)
975986a Add bulk action to make playlists private/public
778f474 Use new rest lib (Update receives all columns that need to be updated)
b2acec0 When externals services are disabled, only disable UILoginBackgroundURL if it is not set by the user
e720233 Ignore empty lines in M3U files
8c2e4da Fix dateLoved in criteria. Now log invalid field names in criteria
a4d3bf4 Remove some duplicated code
765557d Remove "Show" button from PlaylistEdit view
86afd16 Allow changing playlist's owner. Relates to #698
133fed3 Add owner_id to playlist
84bbcdb Add artist image lightbox
1823159 New config to disable all external integrations. Closes #102
0b5ed9e Update ListenBrainz Portuguese translations
a56d5bc Listenbrainz scrobbling (#1424)
ccc871d Only reset player scrobbled state on track change or end (#1432)
d3e1422 Fix TypeError: Cannot read properties of undefined (reading 'length')
a42aeff Optimize queries by path, should speed up the scanner a bit
7cdbc04 Update caniuse-lite
f3fae7e Optimize basic media_file query, avoiding adding "group by" or joining with genres if not required
074732b Filter playlists by names and comments
66a9cbb Remove temp folders after tests
fa3471f Simplify resources code, enabling any resource to be overridden (not just translations)
9072412 Fix translations on Windows
cca3236 Use refetch when changing the playlist (as opposed to a full refresh)
85d4847 Add .mka file format. Only works with ffmpeg extractor
2183eb6 Should not allow changing sort order in Album songs view
ea435d0 Fix error on empty playlists. Simplify code for some operations
f645c47 Fix double escaped lyrics and comments
5e87280 Load playlist track genres
526b659 Remove duplication for loading tracks
5dce499 Fix/Optimized Playlist tracks deletion
fbd87ba Fix console error "Cannot convert undefined or null to object PlaylistsSubMenu"
63b5191 Fix lint
af00503 Optimize playlist updates
85185e3 Misc small changes (#1433)
83eaafc Add dateLoved Criteria field
93ce0b5 Fix Genre field and Contains/NotContains/StartsWith/EndsWith in Criteria (Smart Playlists)
47549ec Increase updatePlaylist chunk to 100 tracks
ed1ca65 Show hotkeys as chips, for easier reading
8d6b5f9 Speed up Subsonic GetPlaylist (by optimizing loadTracks)
76fdcd1 Tweak SimilarSongs algorithm to prioritize the requested main artist
18e1c16 Don't read the whole smart playlist file in memory
4bc4daa Improve git-vs-tarball detection (#1423)
cc1659a Better way to match top songs from external sources (Last.fm)
31c598d Fix drag-n-drop from a playlist, also fix useDrag memoization
2e2a647 Make SmartPlaylists read-only
d169f54 Rename hasCoverArt field in criteria
1494be9 Add playCount and playDate columns to album songs list
c73f64e Removed unused code
806b13c Update stats of Smart Playlist when it is created
2c860ed Don't import invalid .nsp files
6a550da Use new Criteria and remove SmartPlaylist struct
3972616 New Criteria API
d0ce030 Add PlayCount and PlayDate columns to PlaylistSongs
9473536 Include never played songs in the "not in the last" operator
2b57b98 Fix smart playlist refreshing only after the tracks were loaded
1a96e9f Import smart playlists (extension .nsp)
21da1df Cache smart playlist refreshes for 5 seconds
d21932b First version of SmartPlaylists being generated on demand
c72add5 Add methods to Playlist model
d200933 Reduce number of queries for some playlists operations.
943082e Fix time-based tests (again)
c3fb4e1 Fix rules serialization
9c8f779 Fix time-based tests
8156237 Load SmartPlaylists rules from DB
7221b49 More tests
cf8d08e Initial drafts for Smart Playlists
2a756ea Show external links on all resolutions but mobile
104679c Guard against record being undefined. Fix error Cannot read properties of undefined (reading 'id')
5621551 Adds Lyrics Support to Subsonic API (#1379)
3214783 Remove double-retching playlist's tracks
34b01c2 Display lyrics on UI if synced lyrics present in metadata (#1406)
0d2a8f5 Enable new Artist Page by default
b7feddd Guard against record being undefined. Fix error Cannot read properties of undefined (reading 'albumId')
1d742cf Artist page improvements (#1391)
7505b5c Bump GoLang to 1.17.2
174ad9e Fix ffmpeg bitrate parsing for flac files
ba0ee6a Rename manifest.json to manifest.webmanifest (#1399)
6b38aca Update README.md
ee8943f Fix semantic classes for currently playing song
86a87b4 Fix default volume (#1395)

v0.46.0

06 Oct 22:29
Compare
Choose a tag to compare

Welcome to a new version of Navidrome! The main change in this release is that now playlists are accessible from the sidebar menu, and you can add songs/discs/albums/artists to them via drag'n'drop. If you have issues with this functionality, it can be disabled by setting DevSidebarPlaylists=false in your config (or setting the env var ND_DEVSIDEBARPLAYLISTS=false)

Also there's initial work for a new Artist page. It still has some rough edges to fix, so we decided to disable it by default for now, but you can experiment with it by setting DevShowArtistPage=true in your config. If you do so, please give us feedback.

As part of preparing Navidrome to start using Infinite Scroll, we moved song and album details from the expandable panel to a new Get Info dialog, accessible from the context Menu.

Last but not least, if you want Navidrome to import playlists only from specific folder(s), you can do it now by setting the new PlaylsitsPath. It can contain a path or a list of paths separated by : (or ; in Windows), and it also allows globs (like "playlists/**/**")

We have a few other cool features cooking right now, so hopefully the next release won't take as long as this one.

Highlights

  • [UI] Show playlists on the sidebar (#1339). Based on work by @aldrinjenson
  • [UI] Show song/album details in a dialog, instead of an expandable panel (#1259), Thanks @samarsault
  • [UI] Initial work on a new Artist Page (#1287). Thanks @Dnouv
  • [UI] Player preloads next song. Reduce gap between songs in some setups
  • [UI] Self-host workbox, no need to contact Google's CDN anymore (#1358). Thanks @ajgon
  • [UI] New translations: Persian (thanks parviz.homayun) and Finnish (thanks harmie)
  • [Server] Add support for Audio Channels metadata (#1294). Thanks @mayanez
  • [Scanner] Fix special chars scanning in Windows with TagLib (#1310). Thanks @caiocotts
  • [Scanner] Only import playlists from configured paths in option PlaylistsPath (#1181)
  • [Scanner] Recover from any possible taglib panics (#1343)

Changelog

8bbb878 Add Finnish translation
8591a9a Update translations (#1383)
b6e30cd Return playlists sorted in getPlaylists Subsonic endpoint
058e7e4 Add logo to README
152836a Bump @testing-library/react from 12.1.1 to 12.1.2 in /ui
6139338 Bump react-icons from 4.2.0 to 4.3.1 in /ui
f0c1191 Revert: Small optimization in genre mapping
a631125 Fix layout error in ArtistShow (#1387)
dbde0ff Bump github.com/djherbis/atime to v1.1.0
fba7337 Sort songs by artist/album/disc/track_number before adding to playlist
e673360 Limit number of playlists displayed in the sidebar, to avoid UI freezes
2b105ca Enable DevSidebarPlaylists by default.
9c29ee3 Check permissions before adding songs to playlists
6c3e45d Add songs to playlists with drag and drop
2ab4647 Bump golang.org/x/tools from 0.1.6 to 0.1.7 (#1382)
91e36a2 Check goimports in the pipeline (#1381)
0cbba80 Bump react-router-dom from 5.2.0 to 5.3.0 in /ui (#1330)
f9d9104 Bump react-admin to 3.18.3
be3a6dc Use local copy of workbox service worker scripts (#1358)
b1e7760 Preload next song
ad45ab4 Fix genre update chunking
24fef58 Bump react-jinke-music-player from 4.24.0 to 4.24.2 (#1378)
e17d436 Do not attach Genres to the "Various Artists" artist
73659e5 Change "Build" link to point to the latest build artifacts from master
71b1e7f Bump github.com/lestrrat-go/jwx from 1.2.6 to 1.2.7
6940560 Bump @testing-library/react from 12.1.0 to 12.1.1 in /ui
4fda895 Bump blueimp-md5 from 2.18.0 to 2.19.0 in /ui
f664af5 Bump react-admin from 3.18.1 to 3.18.2 in /ui
c6868ff Don't show Artist Page for "Various Artists"
0b65a4e Fix comment word wrapping
24872e6 Fix biography word wrapping and requests for undefined resource
b4e5c66 Fix JS console warning
6752e0a Fix harmless error message in logs when ScanSchedule set was "0"
5680e53 Update genres in chunks. Should fix #1368
482c2de Artist Detail Page (first cut) (#1287)
210dc6b Add x-total-count to Subsonic API getAlbumList (#1360)
73a2271 Small optimization in genre mapping
0c0bd29 Replace expanded with a dialog (#1258)
15ae3d4 Only apply audioStreamRx once
1365adb Support 7.1 (8) channels
e12a14a feat: Adds Audio Channel Metadata - #1036
0079a9b Close Sidebar when going to Playlists list
892c2bf Revert "Disable mini-player (bubble) dragging. Should fix #1217"
5fb7328 Bump golang.org/x/tools from 0.1.5 to 0.1.6
86479a6 More info when recovering from panic
76bd20e Recover from any possible taglib panics. Fixes #1343
7a15ed0 Bump prettier from 2.4.0 to 2.4.1 in /ui
d574df5 Bump github.com/go-chi/jwtauth/v5 from 5.0.1 to 5.0.2
a7ace48 Bump github.com/ReneKroon/ttlcache/v2 from 2.8.0 to 2.8.1
84d9801 Bump github.com/spf13/viper from 1.8.1 to 1.9.0
e63804f Use newer versions of node in the pipeline
a5101fa Use npm dependencies cache from setup-node@v2
f2ed3f2 Bump prettier from 2.3.2 to 2.4.0 in /ui (#1341)
b23ab1c Bump @testing-library/react from 12.0.0 to 12.1.0 in /ui (#1342)
abf6318 Disable mini-player (bubble) dragging. Should fix #1217
b55f3a6 Add paddingBottom to the whole sidebar menu, to avoid playlists to be covered by the player
ab2912b Only import playlists from configured paths in option PlaylistsPath. Closes #1181
9f00aad Upgrade to GoLang 1.17.1
79363d6 Move Playlists to the sidebar menu (#1339)
a7017e4 Fix JS console warning
dc0ec32 Fix menu items highlight
06b1a1a Album size overflow fixed (#1071)
6ac2fef Make AppBar stick on scroll
2e921cd Fix sidebar scroll height (#1338)
c2251e6 Update GoLang to 1.17 (#1295)
25aab8b go mod tidy
94083f8 Bump @testing-library/react-hooks version
f0ef518 Bump react-redux version
79e79b6 Bump github.com/go-chi/chi
a961ffe Bump github.com/golangci/golangci-lint
402aaaa Bump github.com/lestrrat-go/jwx version
5c7784f Bump github.com/cespare/reflex version
a4e96d2 Pin Node to 16.8 as a workaround to nodejs/node#40030
8444c28 Upgrade react-admin to 3.18.1
fb11080 Improve performance of placeholder images (#1325)
173b30c Extract version from directory name if .git dir is missing (#1327)
af7c87d Give a warning on commands that do not build the frontend.
8df056b ru.json update (#1320)
54f9849 Use wchar_t for TagLib filenames on Windows (#1310)

v0.45.1

26 Aug 02:21
c55e659
Compare
Choose a tag to compare

Bug fix point release

This release fixes the following regressions:

  • Fix getArtistInfo Subsonic API returns "Internal Error" (#1293)
  • Fix random volume changes (#1296 & #1297)

Also, please read the release notes from 0.45.0 if you haven't already done so.

Downloads are available here: https://github.com/navidrome/navidrome/releases/tag/v0.45.1

Changelog

c55e659 Bump github.com/onsi/gomega from 1.15.0 to 1.16.0 (#1300)
d37231f Bump github.com/ReneKroon/ttlcache/v2 from 2.7.0 to 2.8.0 (#1298)
47fa32e Bump github.com/golangci/golangci-lint from 1.41.1 to 1.42.0 (#1299)
cf042ed Fix random volume changes
d481864 Some small refactorings
c2927e1 Fix loadSimilar method, was causing "internal error". Fix #1293
6983390 Setup git hooks when running make setup
143f5ba Import song duration with hundredths when using TagLib

v0.45.0

19 Aug 13:06
Compare
Choose a tag to compare

Multiple genres is finally here! Navidrome now supports multiple genres for songs and albums (and artists!). It can read multi-valued
tags from ID3v2.4 and Vorbis Comments, and also can split the genres by a configured set of separators
(config option Scanner.GenreSeparators, default is ;, / and ,). This is now reflected in the UI,
that has new Genres filters and information, and in the Subsonic API.

There were also lots of refactorings and bug fixes in this release.

Highlights

  • [UI] In album view, add links to Last.FM and MusicBrainz (when mbid is available)
  • [UI] Add Genre and Comments columns in Songs listview (hidden by default). Thanks @certuna (#1219)
  • [UI] When clicking on an album/playlist song to start playing, adds all songs to the playlist (#703)
  • [UI] EnableCoverAnimation=false now works in mobile view. Thanks @mill1000 (#1268)
  • [UI] Show rectangular cover art when animations is disabled
  • [UI] Change default volume to 50% (#1052)
  • [UI] "Add to Playlist" on AlbumList actions. Thanks @lostpolaris (#1257)
  • [Server] Scrobbling is now buffered and will be retried in case Last.FM is not available
  • [Server] Use AlbumArtist tag even for compilations, when it is specified
  • [Server] Completely disable Last.FM when LastFM.Enabled is false
  • [Server] Fix infinite loop when the fs fails (#1164)
  • [Server] Full rescan now does what it is supposed to do: re-import all metadata
  • [Server] Abort startup if config file is invalid
  • [Server] Use ffmpeg extractor by default on Windows platforms
  • [Server] Support local paths as urls when importing playlists. Thanks @caiocotts (#1215)
  • [Build] Support Docker on Linux 32 bits platform

Changelog

05e2709 Fix getTopSongs endpoint
aa72d3d Add missing song information to players and apply EnableCoverAnimation to mobile player. (#1268)
a20bd5f Correct some french translations (#1278)
99aeaab Update translations (#1285)
0a5f966 Bump redux from 4.1.0 to 4.1.1 in /ui
5338567 Bump github.com/onsi/gomega from 1.14.0 to 1.15.0
5052602 Bump github.com/lestrrat-go/jwx from 1.2.4 to 1.2.5
db4165f Bum react-admin to 3.17.2. Fix SearchInput border
a8cf887 Adjust icon size
63000ab Update en.json (POEditor.com)
b44ef81 Allow 0 value to disable ScanSchedule.
e9d0abe Support local paths as urls in playlists.
bcafe88 Don't autoplay when reloading play queue from Redux store
1710730 Bump github.com/kr/pretty from 0.2.1 to 0.3.0 (#1267)
aa1571e Remove unused AnnotatedModel interface
c831dc4 Use structs lib to map models to DB. Fix #1266
344d7a4 Inject DB into DataStore, instead of hardcode the dependency
c0fc36d Make album genres clickable
e68b22e Don't send invalid scrobbles when clearing the player's queue
fb4eefc "Add to Playlist" on AlbumList actions (#1257)
615cac2 Extract ExternalLinks into its own component
72f9e3e Bump @testing-library/user-event from 13.2.0 to 13.2.1 in /ui
763bcaf Use Tooltip in links to external sites
5b81f7a Fix get song by id
7bd506a Retrieve all options for Genre filters
b66c394 Fix build
4ed01ba Use ffmpeg extractor by default on Windows
d3975d2 Reorganize metadata extractors code
6175629 Build and release Docker image for Linux 32 bits platform (#1260)
6c55081 Use TagLib to detect whether a media file has embedded cover or not
9132507 Change fallback extractor to taglib, the default option
876dda8 Reduce number of calls to lstat.
86c0b42 Small refactorings
1cef44a Show in the logs which mbid will be used if multiple mbids are found for album/artist
4fcb238 Fix "too many SQL variables" error in GetStarred endpoint
4f9d546 Abort startup if config file is invalid
eeb14f0 Removed unused function
a89bdfb Fix build
8afa2cd Remove dependency of deprecated ioutil package
774ad65 Use fs.FS in MergeFS implementation
7540881 Small refactorings
08840f6 Simplify cover detection in roll-up code by left-joining synthesized table
cddd1b3 Simplify genre roll-up code by left-joining synthesized tables
bc6b175 Make getGenre Subsonic endpoint returns genres sorted by counts
b6e9ec4 Optimize GetAll genres query
1471e12 Show songs' genres as text instead of Chips
95181d7 Fix rollup of track genres to albums and artists.
254e567 Fix log message about artist with Various Artists' mbid
00e418c Fix log message about multiple MBIDs
2742977 Fix multiple id3v2.4 genres appearing as one big concatenated genre
69f71be Add more tests
58ee4c6 Add Links to external sites
21cd50d Fix aggregated values (count, size, duration) in roll-up queries
054b5ea Add Genres as "Chips" in Album details and Song details
e223377 Force full rescan when adding multi-genres
3a35649 Fix lint error
a0cd585 Fix Count methods
20b7e5c Add Genre filters to UI
c56c7c8 Purge unused genres at the end of the scan
b56e034 Add multiple genres to Artists
1d8607e Remove unnecessary repositories methods
5e54925 Add multiple genres to Albums
39da741 Add multiple genres to MediaFile
7cd3a8b Add genre tables, read multiple-genres from tags
1f03140 Change initial scan message log level
19c2ef3 Enable buffered scrobbles by default
d886c63 Bump react-image-lightbox from 5.1.1 to 5.1.4 in /ui (#1252)
5b828cd Bump @testing-library/user-event from 13.1.9 to 13.2.0 in /ui (#1253)
ef60db3 Bump github.com/lestrrat-go/jwx from 1.2.2 to 1.2.4
882b02c Fix forceRescan not re-importing all tracks
44e7502 Log warning when artist has a MBID of Various Artists
e61cf32 Reapply the fix from #1054, but without getting into an infinite look in case of SMB fs errors. See #1164
03ad6e9 Removed unused attributes in Last.fm responses
eb8ffc6 Fix infinite loop when the fs fails. Closes #1164
b0fc684 Fix small lint errors found by gocritic
8d56ec8 Use AlbumArtist tag even for compilations, when it is specified.
5064cb2 Add git version info to release source (#1250)
f782572 Add option to have different loglevels per source folder/file
1a6a284 Bump github.com/google/uuid from 1.2.0 to 1.3.0 (#1249)
1d948be Bump github.com/go-chi/httprate from 0.5.0 to 0.5.1 (#1248)
deefd7a Bump github.com/lestrrat-go/jwx from 1.2.1 to 1.2.2 (#1247)
97f8741 Bump @testing-library dependencies
5d8b90b Bump Go dependencies
8396b51 Upgrade React-Admin to 3.17.0
4a25fa0 Make the default volume 50% (compensate for logarithmic volume).
8e71f30 Bump prettier from 2.3.1 to 2.3.2 in /ui (#1210)
53fe2e9 Remove eject script, hopefully it will never be used
334068c Refactor mime-types configuration
b34d77f Don't show "playing/paused" icon on the first song when calling "Play Now"
24d4c81 Change default volume to 50%
189d0c0 Restore volume when playing a song...
1922eaa Make cover rectangular in player when cover animation is disabled
5d9bea5 Fix Album grid responsiveness on small screens.
69afb69 Fix Disc context menu not visible in mobile
27ba267 Fix play single song action
114fdce Fix Last.fm's artist.getInfo
fa8b4d4 Fix arranging songs in PlayQueue
ace5c90 Made the Player behaviour more consistent
26b5e6b Better scrobble log message when buffer is disabled
77f6bc8 Update SongList.js (#1219)
94e36d7 Remove old feature flag for cache layout
f492057 Add feature flag for buffered scrobbling
cfb113b Disable Last.FM features based on LastFM.Enabled config option
289da56 Implement Scrobble buffering/retrying

v0.44.1

01 Jul 23:25
Compare
Choose a tag to compare

Bug fix point release

This is an IMPORTANT upgrade, it fixes 3 nasty bugs:

  • The long standing "too many open files" issue, that has been with us since version 0.27.0! (#446)
  • Fixed a bug that caused the scanner to "hang" in certain circumstances.
  • When changing user details, the password would be overridden with garbage, preventing the user to login again (#1222)

Also, please read the release notes from 0.44.0 if you haven't already done so.

Changelog

fb183e5 Only encrypts NewPassword if it is not empty, when updating the user details. Fixes #1222
ed286c7 Don't rely on goroutines to send keepalive events
452c8dc Fixed the enduring nasty "too many files open" bug!! Fix #446
0c2ca2a Assign event ids in the main loop, to avoid out-of-order events
5bd3345 Fix deadlock situation when events are sent too fast to the broker
4ea0f23 Fix scrollbar colour for Dark/ExtraDark theme. Fixes #1216

v0.44.0

28 Jun 23:17
Compare
Choose a tag to compare

As promised, more security improvements: Passwords are now encrypted in the DB. The encryption key used can be overridden by the new config option PasswordEncryptionKey. See more details here: https://www.navidrome.org/docs/usage/security/#encrypted-passwords

ATTENTION: Please backup your DB before upgrading, as passwords will be encrypted when first running 0.44.0, and if you need to downgrade for any reason, old versions of Navidrome won't be able to read the passwords!

Also, you can now use a SSO/OAuth/OIDC proxy (like Authelia or Vouch) in front of Navidrome, to handle authentication. Thanks @ajgon!

And last but not least: Last.fm scrobbling is here! Users can opt-in by going to their Personal menu in the UI, and it can also be disabled for specific players if needed. Thanks @srichter!

Navidrome now uses a shared API-Key for Last.fm, so now Last.fm integrations (including scrobbling) work out of the box, but you can still override the API-Key with your own if you want to.

BREAKING CHANGE: The Native API URLs were changed:

/app/login => /auth/login
/app/createAdmin => /auth/createAdmin
/app/api/* => /api/*

If you use a script that connects directly with Navidrome, please check/change the URLs.

Highlights

  • [UI] Auto update current view when there are changes in the DB (new albums, ratings/playCount changes, etc) (#1025)
  • [UI] Prompt the user to refresh the page if server is using a version different then the UI, to keep both in sync after an upgrade
  • [UI] Move Artists/Songs/Playlist to top level, removing "Library" submenu
  • [UI] Show Disc Subtitles even if the album has only one disc (#947)
  • [UI] Allow themes to override the React Player styling. Fixed colors for Dark, ExtraDark and Light themes
  • [UI] New option to disable album cover animation in UI (save a few CPU cycles): EnableCoverAnimation (#1185)
  • [Server] Last.fm scrobbling! Must be authorized by the user, and can be disable by player (or completely disabled) (#1202) Thanks @srichter!
  • [Server] Last.fm integration now uses a shared API-Key, so Artist's bios, TopSongs, SimilarArtists and scrobbling work out of the box
  • [Server] New option LastFM.Enabled (default true) allows disabling Last.fm integration completely
  • [Server] Passwords are encrypted in the DB, with an option to override the encryption key used (#1187)
  • [Server] Reverse Proxy Authentication, allowing setting up SSO, OAuth and other authentication schemas (#1152) Thanks @ajgon!
  • [Server] Better SimilarSongs algorithm, prioritizing songs per popularity
  • [Subsonic API] Fix /rest/updatePlaylist not updating fields comment and public.
  • [Subsonic API] Fix /rest/getNowPlaying endpoint only returning one player/user
  • [Subsonic API] GetCoverArt returns placeholder if id is missing, mimicking Subsonic behaviour

Changelog

b16d473 Update es.json (POEditor.com)
fd82b8f Default for EnableCoverAnimation in dev mode is true
a73f885 Add option to disable album cover animation in the player. Closes #1185
167fe46 Addresses a bug that would prevent users from changing their own passwords, introduced as part of #1187. (#1214)
cb1827c Update translations (#1134)
25f0e11 Add 'AlbumArtist' column to SongList
292cf99 Add 'Year' column to Album and Playlists song list
d2fcab7 Fix ND_DEVFASTACCESSCOVERART flag not available as env var
94533e5 Add tests to /scrobble endpoint
6dd3837 Add referential integrity to remove user's props when user is deleted
26bcf0b Enable Last.fm scrobbling by default (still requires user's authorization)
92634a7 Only show message after 2 seconds, giving time for the browser to close it first
ee21f39 Pass userId explicitly to UserPropsRepository methods
a155107 Add a hacky way to style the react-player.
823fef8 Fix JS console error
82105c3 Remove React.Strict mode
b684a47 Show DiscSubtitle even if the album has only one disc.
da2334e Remove submenu "Library". Relates to #430
4853760 Suppress logs of successful DB migrations applied when running for the first time
0cbb0ac Skip songs with less than 31 seconds, as per Last.fm specification
5040f6f Fix label
abe8015 Add option to disable external scrobbling per player
5001518 Move user properties (like session keys) to their own table
265f33e Remove clearServiceWorkerCache, not needed anymore. (#1205)
99be844 Disable completely external scrobblers if feature is disabled (DevEnableScrobble)
f4ddd20 Send the time the track started playing when scrobbling
056f0b9 Refactor: Consolidate scrobbling logic in play_tracker
76acd7d Don't send scrobbles/nowPlaying updates to Last.fm if user has not authorized
8af7dab Fix wrong warning about ignored NowPlaying
a7509c9 Send NowPlaying and Scrobbles to Last.fm
d5461d0 Refactor Agents to be singleton
f9fa966 Show user-friendly message when error occurs in Last.fm callback endpoint
5fbfd9c Implement Last.fm account linking UI
8b62a58 Remove limitation of only scrobbling tracks longer than 30 seconds
743e469 Use singleton in other places as well
1f99735 Expose Last.fm's ApiKey to UI
143cde3 Implement Last.FM Web authentication flow
502a719 Implement Last.FM Desktop Auth flow endpoints
8ee5c1f Initial Last.fm UI implementation
0495e42 Fix Last.fm API method signature
ffa76bb Add flag to disable Scrobble config in the UI
a4f91b7 Add Last.FM Authentication methods
73e1a8f Remove false-positive on new version detection
877f01b Show notification if server is updated
47bcf71 Fix cookie warning
197d430 Fix lint error
4e1957c Update Go dependencies
25db2cb Add concurrency test for singleton
80b2c2f Try to register all playing music in GetNowPlaying
97434c1 Fix GetNowPlaying endpoint showing only the last play
f8ee6db New implementation of NowPlaying
0df0ac0 Add logos to badges
c09468e Option to allow auto-login during development.
cf553ce Don't show "logout" when authenticated by Header
31ea033 Fix subsonic token when authenticating by Header
66b74c8 Encrypt passwords in DB (#1187)
d42dfaf Add username to request.Context
84413b5 Bump @testing-library/jest-dom from 5.13.0 to 5.14.1 in /ui (#1176)
b590c31 Fix stream url, after changes to subsonic client api
c4623d7 Don't show "empty" dates
e0fd1c6 Add "Last Played" column to SongList
86271f0 Optimize refresh events for scrobble endpoint
fb7229a Refech using getMany, reducing the number of API calls
521d1ff Disable realip middleware when using the reverse proxy authentication feature
d3db41a Bump github.com/go-chi/httprate version
8bf0089 Bump github.com/ReneKroon/ttlcache/ and github.com/microcosm-cc/bluemonday versions
b65e762 Only send events to clients who need it
5f6f74f Always use httpClient to call APIs
8383527 Only refetch changed resources when receive a "refreshResource" event
8a56584 Removed the albumSong workaround, as React-Admin's cache seems to behave better now
667701b Less warning messages when first running it.
59b99d2 No need to check for first time when authenticating. One less SQL call per request
d54129e Rename app package to nativeapi
03efc48 Refactor routing, changes API URLs (#1171)
bed2f01 Fix index of songs in downloaded playlist
6bd4c0f Reverse proxy authentication support (#1152)
b445cdd Use a dedicated api-key/secret pair for Last.FM
e31802d Only send "refresh" event if SetRating was successful
cefc939 Trigger UI refresh on media annotation events: star, setRating and scrobble
2afb2db Refactor for readability
7f85ecd Trigger a UI refresh when the scanner finds changes.
cb6aa49 Bump github.com/lestrrat-go/jwx from 1.2.0 to 1.2.1 (#1167)
b7f47c8 Bump github.com/onsi/ginkgo from 1.16.3 to 1.16.4 (#1163)
adb09c9 Bump @testing-library/jest-dom from 5.12.0 to 5.13.0 in /ui (#1162)
0c9e0ff Bump prettier from 2.3.0 to 2.3.1 in /ui (#1161)
f9eec5e Refactored agents calling into its own struct
6c1ba8f Add tests to core.Share
110e17b Make MockRepo names more consistent
779571a go mod tidy
af210c8 Add Native Sharing REST API (#1150)
e80cf80 Move all Spotify and LastFM code into only one folder for each
182e3ec Update zh-Hans.json (#1160)
65ccd4c Parse ParamBool case-insensitively (#1151)
bebfe29 Allow updating only specific columns
9da9d73 Don't panic when taglib returns an error
cd24269 Foundational work to enable multi-valued tags
519c893 Omit empty fields from Native API responses
336d891 Bump github.com/ReneKroon/ttlcache/v2 from 2.5.0 to 2.6.0
9b4b28f Bump ginkgo/gomega versions
39c560a Remove unused web-vitals package
c5abdc1 Fix recursive bug in Last.FM calls without mbid
ead2095 Respect EnableLogRedacting config when pretty printing configuration
7b05c49 Add devEnableShare config option (#1141)
327c259 Create share table and repository. (#930)
675cbe1 Fix updatePlaylist not updating fields comment and public.
91a91f7 GetCoverArt returns placeholder if id is missing
7bbb09e Add tests for WeightedRandomChooser
dd56a77 Rename variable with conflicting name
a38e478 Better SimilarSongs algorithm
1940267 Handle functions with params in sort order.
01f3ce0 Add a timeout to background task
48b6fa7 Don't use request's context when refreshing artist info in background
25d62cd Set retention time for uploaded artifacts to 7 days
ed01946 Embed Last.FM error responses, making the tests faster
89b12b3 Retry calls to Last.FM without MBIDs when if returns artist invalid (#1138)
4e0177e Always update artist info, even if info is fresh
b398053 Include a shared Last.FM api key, providing zero conf ArtistInfo (bio/top songs/similar artists)
db11b6b Remove decoration from reflex output
60d50de Refactoring to make common components usage more uniform
0941fbc Fix lag on albumList toggling (#1136)
4...

Read more

v0.43.0

24 May 18:38
Compare
Choose a tag to compare

This release has a good deal of security improvements, with more to come in the next release.
Also some very nice features implemented by our contributors. Thanks to you all!

Highlights

  • [UI] Option to toggle fields in songs, albums & artists grids (#923). Thanks @aldrinjenson
  • [UI] Allow regular users to change their info, including passwords (#199)
  • [UI] Display BPM info (#1087). Thanks @brianschrameck
  • [UI] Add Czech, Slovenian and Swedish translations. Thanks @plr20, @jernejml and @deeeeeebs respectively
  • [UI] Restart current song when clicking "Previous song" when past the first few seconds (#1104). Thanks @aniketbiswas21
  • [UI] Show error message when adding duplicated username, and other user management improvements (#1101). Thanks @srichter
  • [Server] Never send passwords to the UI
  • [Server] Implement PermissionsPolicy security header (#1112). Thanks @Dnouv
  • [Server] Move away from unmaintained JWT library (see go-chi/jwtauth#50)
  • [Server] Add EnableLogRedacting to mask sensitive info in logs. Enabled by default
  • [Server] Make server compatible on OmniOS/illumos (#1048) Thanks @whorfin
  • [Scanner] Various reliability and speed improvements (#1054) Thanks @whorfin
  • [Scanner] Add new ScanSchedule that replaces ScanInterval and allows cron-like schedules
  • [Subsonic API] Fix Bookmarks Subsonic support (#1099)

Changelog

d9f2682 Rename List view mode to Table
8825197 Change back mounting order, for better logs
86d3a21 Show name of router in log
1d0e751 Update Portuguese translation
107a11b Bump React-Admin to 3.15.2
cf8ee25 Option to toggle fields in songs, albums & artists (#923)
6a17717 Update translations (#1130)
b8a274e Move Swedish translation to right folder
9800823 Bump react-jinke-music-player from 4.24.0 to 4.24.1 in /ui
02606f4 Add Swedish translation (#1126)
e529390 Remove md5-hex wrapper and use blueimp-md5 directly
0ec7a30 Reorder Makefile dev targets
b6cb81c Update Portuguese translations
e60f2bf User management improvements (#1101)
666c006 Bump lodash from 4.17.19 to 4.17.21 in /ui (#1110)
6ad9454 Add explicit dependency for inflection
fa0e6dd Remove C++11 warning in macOS
e047008 Fix test
3cac00a Upgrade TagLib to 1.12
39d68e8 Restore pretty formatted config options in debug level
751e2d6 Make ScanInterval=0 disable the periodic scan
74300ad Fix Ligera Error (#1117)
a484adf Add Slovenian translation. Thanks @jernejml
25bd36d Bump react-admin to 3.15.1
87298f6 Add more explicit npm dependencies
4699902 Remove dependency on lodash.get
978933a Add explicit npm dependencies
77e736c Do not use ra-core directly
a77635e Only setup event stream when mounting the app
0c93db8 Fix PWA notification toolbar color (#1083)
c024358 Integrate goose log with our own log system
22ce5b6 Removed unnecessary code
fa9083d Upgrade prettier to 2.3.0
da684ff Bump github.com/lestrrat-go/jwx from 1.1.6 to 1.2.0
7d96167 Upgrade to go-chi 5
fb58407 Bump github.com/golangci/golangci-lint from 1.39.0 to 1.40.0
089d4ab Replace Feature Policy with Permissions Policy (#1112)
62ccbaa Improve systemd unit security (#677)
8419a2a Schedule periodic scan before starting initial scan
71c2ed9 Restart Current Song on previous (#1104)
72ec808 Bump react-jinke-music-player from 4.21.2 to 4.24.0 in /ui
702a650 Fix redaction for query parameters. Fix #1103
3e8d3e7 Fix Bookmarks Subsonic support (#1099)
47f4e0a Refactor to remove some nesting
1f89499 Fix(?) possible TypeError
c92a24b Bump github.com/onsi/gomega from 1.11.0 to 1.12.0
cbe0d97 Bump github.com/robfig/cron/v3 from 3.0.0 to 3.0.1 (#1098)
44dd414 Bump github.com/microcosm-cc/bluemonday from 1.0.8 to 1.0.9 (#1056)
d85db8f Fix Spotify-ish playlist title is cut off (#1094)
c7378c0 Bump @testing-library/user-event from 13.1.5 to 13.1.8 in /ui (#1082)
18696c5 Update Czech translation (#1095)
5a5d763 Bump github.com/onsi/ginkgo from 1.16.1 to 1.16.2 (#1096)
f8dbc41 Breaking change: Add ScanSchedule, allows interval and cron based configurations.
1d6aa70 Fix possible TypeError
30bb3f7 BPM metadata enhancement (#1087)
fb33aa4 Fix possible TypeError
9e55931 Fix Album Grid flickering
a5fc5f0 Revert "Better way to invoke make single"
73efbd9 Better way to invoke make single
cbc4cb4 Fix QuickFilter by favourites in Album/All view
9864733 Fix missing translation error in console. Closes #1038
66b3164 Upgrade React-Admin to 3.15.0
b478b0a FIx ffmpeg output regex too rigid
c3316e2 Fix cover art detection with ffmpeg 4.4
874b17b Require user to provide current password to be able to change it
5808b9f Fix Transcodings menu
c33ebab Fix warning about promise being ignored
7feda4b Add EnableUserEditing, to control whether a regular user can change their own details (default true)
2ff1c79 Fix EnableLogRedacting case
cfbc39f Add log redacting, controlled by the new EnableLogRedacting config option (default true)
2372f1d Change visibility of helper function
490a7fc Add test to Login function
ad153f5 Fix User delete button not showing
b8138eb Fix create first login
e3fe839 Fix DevAutoCreateAdminPassword
88105d5 Clean-up Makefile, add help
b180386 Simplify build targets
70e7bf6 Clean up some make targets
d41137a [Spotify-ish] Login consistent with other themes (#1073)
88f2fc3 Fix regular users not able to edit their info before logging in again
bc62efb More auth tests
eaf40ef Never send passwords to the UI
71dc0dd Show Person icon for non admin users
bcda53f Less waiting for cache to be ready
8a07bac Fix SIGUSR1 work when ScanInterval=0
a35de2b Allow regular users to change their info, including password.
2258239 Fix "Failed prop type: Invalid prop variant" in console
932c108 Fix "SharedArrayBuffer will require cross-origin isolation"
20d2726 Improve scanner (#1054)
771c91d [Spotify-ish] Indicate active page number (#1068)
b817312 Update ja.json (POEditor.com)
d1605dc Replace godirwalk with standard Go 1.16 filepath.WalkDir
10cfaad Bump react-redux version to 7.2.4
07f6a7c Bump @testing-library dependencies
6e73c23 Keepalive must return an ID to be used with dataProvider.getOne
862c6d3 Upgrade React-Admin to 3.14.5
6926636 Uses GoLang 1.16.3
0d409e3 Fix aspect ratio of login icon