New features
- Discogs Plugin: Add extra_tags option to use additional tags (such as
barcode,catalognum,country,label,media, andyear) in Discogs search queries. - Lyrics Plugin: Add
auto_ignoreconfiguration option to skip fetching lyrics for items matching a beets query during auto import. - Missing Plugin: When running in missing album mode, allows users to specify MusicBrainz release types to show using the
--release-typeflag. The default behavior is also changed to just show releases of typealbum. 🐛 (#2661) - Play Plugin: Added
-R/--randomizeflag to shuffle the playlist order before passing it to the player. - Smart Playlist Plugin: Add new configuration option
dest_regento regenerate items' path in the generated playlist instead of using those in the library. This is useful when items have been imported in don't copy-move (-C -M) mode in the library but are later passed through the Convert Plugin plugin which will regenerate new paths according to the Beets path format.
Bug fixes
- Beatport Plugin: Use
va_nameconfig for the album artist on VA releases instead of hardcoded "Various Artists". 🐛 (#6316) - config command on Windows now uses
cmd /c start ""for the default editor fallback sobeet config -eworks whenVISUALandEDITORare unset. 🐛 (#6436) - Fish Plugin: Fix AttributeError. 🐛 (#6340)
- import command Autotagging by explicit release or recording IDs now keeps candidates from all enabled metadata sources instead of dropping matches when different providers share the same ID. 🐛 (#6178) 🐛 (#6181)
- import command Simplify autotag metadata application for albums and singletons, fixing null-overwrite handling and keeping singular/plural artist metadata fields in sync during tagging.
- LastImport Plugin: Rename flexible field
play_counttolastfm_play_countto avoid conflicts with MPDStats Plugin. Migration: This cannot be migrated automatically because of the field clash. If you use LastImport Plugin without MPDStats Plugin, migrate manually withbeet modify lastfm_play_count='$play_count'. - MBSync Plugin and Missing Plugin now use each item's stored
data_sourcefor ID lookups, with a fallback toMusicBrainz. - Missing Plugin: Fix
--albummode incorrectly reporting albums already in the library as missing. The comparison now correctly usesmb_releasegroupid. - MusicBrainz Plugin: Use
va_nameconfig foralbumartist_sort,albumartists_sort,albumartist_credit,albumartists_credit, andalbumartistson VA releases instead of hardcoded "Various Artists". 🐛 (#6316) - replace: Made
drive_sep_replaceregex logic more precise to prevent edge-case mismatches (e.g., a song titled "1:00 AM" would incorrectly be considered a Windows drive path).
For plugin developers
beets.metadata_plugins.album_for_idandbeets.metadata_plugins.track_for_idnow require adata_sourceargument and query only that provider.- Colorisation, diff and layout utility helpers previously imported from
beets.uinow live inbeets.util.color,beets.util.diff, andbeets.util.layout. Update external imports accordingly. - The lastgenre
tuneloghelper was generalized intobeets.logging.BeetsLogger.extra_debug, which emitsDEBUGmessages only at verbosity level 3 or higher (for example-vvv). Plugin authors can use it viaself._log.extra_debug(...).
Other changes
- Contributing: Update pipx installation guide link
- Getting Started: Update quick installation section to reflect current installation guide structure.
- Installation: Remove redundant macOS section from the installation guide. 🐛 (#5993)
- Installation: Update installation guide to document plugin management with pipx and move package manager instructions to the FAQ.
- Installation: Update pipx installation guide link
- API-backed metadata source plugins can now use SearchApiMetadataSourcePlugin for shared search orchestration. Implement provider behavior in
~beets.metadata_plugins.SearchApiMetadataSourcePlugin.get_search_query_with_filtersand~beets.metadata_plugins.SearchApiMetadataSourcePlugin.get_search_response. - Deprecate the Beatport Plugin and BPSync Plugin plugins. Beatport has retired the API these plugins rely on, making them non-functional. 🐛 (#3862)