Overview

Navidrome 0.55.0 introduces the highly anticipated Big Refactor (BFR), significantly enhancing core functionalities, and introducing robust new features. This release brings substantial improvements in handling file management and metadata usage and customization.

New Features

  • Multiple Artists in Albums and Songs: Navidrome now supports albums and tracks with multiple artists, allowing users to group tracks with different artists under a single album. This feature enhances the organization of compilation albums and multi-artist collaborations.

  • Contributors and Performers: Composer, conductor, and other contributors can now be added to tracks, providing detailed information about the creators and performers involved in the music production process.

  • Album Versions: Support for ALBUMVERSION tag has been added, enabling users to differentiate between standard releases, deluxe editions, remasters, and other versions of the same album. This feature enhances album categorization and provides a more comprehensive music library experience.

  • Multi-valued Tags: Support for multi-valued tags has been improved, allowing users to store multiple values for any single tag. This feature enhances metadata flexibility and enables more detailed categorization.

  • Custom Tags: Support for user-defined custom tags has been added, allowing enhanced metadata flexibility and personalized categorization. Learn more.

  • Smart Playlists Enhancements: Smart Playlists supports all newly added tags, including multiple artists, contributors, performers, and album versions, as well as custom tags. It also behaves better with multi-valued tags.
    Learn more.

  • Persistent IDs: Tracks and albums now use persistent IDs (PIDs), ensuring stability in playlists, favorites, and external integrations, even if your files move or are renamed. PIDs can also be configured to change the way
    Navidrome disambiguates albums and tracks. It is now also possible to group albums by folder, bay setting PID.Album="folder". Learn more.

  • Scanner Improvements: Optimized file scanning, with improved handling of file moves and retagging, “watcher” mode for real-time updates, resumable scans and enhanced performance during library updates.

  • Improved Handling of Missing Files: Enhanced mechanisms for managing missing files ensure better accuracy and easier troubleshooting. Learn more.

  • Beginner-Friendly Tagging Guidelines: A comprehensive tagging guide has been introduced to assist new users in properly tagging their music collections. Learn more.

New configuration options

  • PID.Album
  • PID.Track
  • Scanner.Enabled
  • Scanner.Schedule
  • Scanner.WatcherWait
  • Scanner.ScanOnStartup
  • Subsonic.AppendSubtitle
  • Subsonic.ArtistParticipations
  • Subsonic.DefaultReportRealPath
  • Subsonic.LegacyClients
  • Tags

Deprecated/Changed configuration options:

  • ScanSchedule was renamed to Scanner.Schedule
  • Scanner.Extractor was removed. ffmpeg extractor is not supported anymore and Navidrome will now always use TagLib for metadata extraction.
  • Scanner.GenreSeparators was removed. Use Tags.genre.Split instead. Check the Custom Tags documentation for more information.
  • Scanner.GroupAlbumReleases was removed. Use PID.Album instead.

Check the Configuration Options documentation for
more information.

Upgrade Instructions

  1. Backup Database: Before upgrading, create a backup of your current Navidrome database.
  2. Stop Navidrome: Ensure Navidrome is not running before proceeding.
  3. Replace Binary: Download and replace the existing Navidrome binary with the latest version (0.55.0).
    If using docker, pull the latest image.
  4. Start Navidrome: Restart Navidrome to automatically migrate the database schema. The upgrade process will trigger a full scan of your library, which may take some time depending on the size of your collection. While this full scan is in progress, please avoid using Navidrome, as the data will be unstable until the process finishes.
    Please don’t report any bugs until this full scan is complete (check the logs)

For detailed discussions and comprehensive insights into this update, refer to
our Big Refactor announcement and the original BFR Pull Request

  • abies_exarchia@lemm.ee
    link
    fedilink
    arrow-up
    1
    ·
    5 days ago

    Breaking Changes

    • Artist favourites and artist ratings will be lost after the upgrade.

    I spent a lot of time carefully favoriting artists. Is there any way to re-import or maintain these favorites after updating?

    • Deebster@infosec.pubOP
      link
      fedilink
      arrow-up
      2
      ·
      5 days ago

      I can’t help much there, I’ve only favourited albums and they were handled by the upgrade script.

      I assume the change is due to the persistent id feature, but I don’t know why the upgrade script couldn’t handle it (although I’m assuming it’s too error prone to do automatically because of duplicate artist names).

      My guess would be you should open your pre-upgrade database and export a list, and then use that to add them again to the post-upgrade database. If you’d tagged your files with musicbrainz (Picard) then you should be able to find the PIDs without too much trouble.

      Alternatively, you could change your settings to use the old matching “legacy” style if you don’t have tags that are useful for PID.

      • abies_exarchia@lemm.ee
        link
        fedilink
        arrow-up
        2
        ·
        23 hours ago

        Hey just following up on this, I took your advice and got it working! For anyone seeing this in the future I took the old navidrome.db and called it navidrome_fav_artist_backup.db and then I loaded into the new database (after making a backup of it) with sqlite3 navidrome.db and then I ran this

        -- Attach the backup database as "backup"
        ATTACH 'navidrome_fav_artist_backup.db' AS backup;
        
        -- Update annotations for favorited artists by matching on artist name
        UPDATE annotation
        SET starred = 1,
            starred_at = CURRENT_TIMESTAMP
        WHERE item_type = 'artist'
          AND item_id IN (
            SELECT newArtist.id
            FROM artist AS newArtist
            JOIN backup.artist AS oldArtist ON newArtist.name = oldArtist.name
            JOIN backup.annotation AS oldAnnot ON oldArtist.id = oldAnnot.item_id
            WHERE oldAnnot.item_type = 'artist'
              AND oldAnnot.starred = 1
          );
        
        -- Detach the backup database
        DETACH backup;
        .quit