Releases: linuxserver/docker-beets
nightly-c3482c68-ls254
CI Report:
https://ci-tests.linuxserver.io/linuxserver/beets/nightly-c3482c68-ls254/index.html
LinuxServer Changes:
Full Changelog: nightly-2bb4c41a-ls253...nightly-c3482c68-ls254
Remote Changes:
Increment version to 2.8.0
nightly-201989b8-ls255
CI Report:
https://ci-tests.linuxserver.io/linuxserver/beets/nightly-201989b8-ls255/index.html
LinuxServer Changes:
Full Changelog: nightly-c3482c68-ls254...nightly-201989b8-ls255
Remote Changes:
Clarify changelog notes that the genre field is gone (#6467)
Added a sentence to clarify that genre field has been removed.
2.7.1-ls320
CI Report:
https://ci-tests.linuxserver.io/linuxserver/beets/2.7.1-ls320/index.html
LinuxServer Changes:
Full Changelog: 2.7.1-ls319...2.7.1-ls320
Remote Changes:
Updating PIP version of beets to 2.7.1
nightly-72b4c771-ls253
CI Report:
https://ci-tests.linuxserver.io/linuxserver/beets/nightly-72b4c771-ls253/index.html
LinuxServer Changes:
Full Changelog: nightly-72b4c771-ls252...nightly-72b4c771-ls253
Remote Changes:
Simplify tagging (#6165)
Refactor item tagging and fix several underlying issues.
Fixes
- Synchronise all artist list fields. Notably,
artist_sort/
artists_sortandartist_credit/artists_creditfields have not
been synchronised. - Fix
overwrite_nullconfiguration which was previously ignored for
fields defined inautotag/__init__.py::SPECIAL_FIELDS.
Updates
- Move metadata application logic into
Matchobjects: add
Match.apply_metadata,AlbumMatch.apply_metadata,
AlbumMatch.apply_album_metadata, andTrackMatch.apply_metadata;
callers now use those methods instead of legacy free functions. - Remove legacy functions from
beets.autotag.__init__
(apply_item_metadata,apply_album_metadata,apply_metadata) and
related globals (SPECIAL_FIELDS,log), and export only core types
(AlbumInfo,AlbumMatch,TrackInfo,TrackMatch,Proposal,
Recommendation,tag_album,tag_item). - Add structured metadata facilities to
Infoand subclasses: Info.typeclass property andnullable_fieldsfor per-type
'overwrite_null' config.Info.raw_dataandInfo.item_datacomputed properties to apply
artist_creditrules, filter nulls, and map media-specific field names.AlbumInfoandTrackInfoextendraw_data/item_databehavior to
handle album/track specifics (date zeroing,tracktotal,
mb_releasetrackid, per-disc numbering).- Introduce
TrackInfo.merge_with_albumto merge track-level data with
album-level fallback for a final item payload. - Move
correct_list_fieldstohooks.pyand update it to keep
unmapped / non-media single/list fields in sync (artist<->
artists,albumtype<->albumtypes, etc.). - Wire changes through the codebase:
- Pass
Itemobjects intoTrackMatchinmatch.tag_itemto enable
item-level metadata application. - Replace calls to removed
autotagapply functions with
Match.apply_metadatainvocations inbeets/importer/tasks.py,
beetsplug/bpsync.py, andbeetsplug/mbsync.py. - Update importer logic to set album artist fallbacks for
albumartists
/mb_albumartistidswhen missing. - Add and update tests:
- New
test/autotag/test_hooks.pyandtest/autotag/test_match.pyto
validate new data mapping, list field synchronization, overwrite
behavior, and assignment logic.
nightly-2bb4c41a-ls253
CI Report:
https://ci-tests.linuxserver.io/linuxserver/beets/nightly-2bb4c41a-ls253/index.html
LinuxServer Changes:
No changes
Remote Changes:
Document extra_debug in the docs (#6461)
Document extra_debug Logging Method for Plugin Authors
Two docs are updated to describe the BeetsLogger.extra_debug method,
which was previously undocumented for external plugin authors and the
changelog note is updated accordingly.
nightly-72b4c771-ls252
CI Report:
https://ci-tests.linuxserver.io/linuxserver/beets/nightly-72b4c771-ls252/index.html
LinuxServer Changes:
Full Changelog: nightly-03b1ab01-ls251...nightly-72b4c771-ls252
Remote Changes:
Simplify tagging (#6165)
Refactor item tagging and fix several underlying issues.
Fixes
- Synchronise all artist list fields. Notably,
artist_sort/
artists_sortandartist_credit/artists_creditfields have not
been synchronised. - Fix
overwrite_nullconfiguration which was previously ignored for
fields defined inautotag/__init__.py::SPECIAL_FIELDS.
Updates
- Move metadata application logic into
Matchobjects: add
Match.apply_metadata,AlbumMatch.apply_metadata,
AlbumMatch.apply_album_metadata, andTrackMatch.apply_metadata;
callers now use those methods instead of legacy free functions. - Remove legacy functions from
beets.autotag.__init__
(apply_item_metadata,apply_album_metadata,apply_metadata) and
related globals (SPECIAL_FIELDS,log), and export only core types
(AlbumInfo,AlbumMatch,TrackInfo,TrackMatch,Proposal,
Recommendation,tag_album,tag_item). - Add structured metadata facilities to
Infoand subclasses: Info.typeclass property andnullable_fieldsfor per-type
'overwrite_null' config.Info.raw_dataandInfo.item_datacomputed properties to apply
artist_creditrules, filter nulls, and map media-specific field names.AlbumInfoandTrackInfoextendraw_data/item_databehavior to
handle album/track specifics (date zeroing,tracktotal,
mb_releasetrackid, per-disc numbering).- Introduce
TrackInfo.merge_with_albumto merge track-level data with
album-level fallback for a final item payload. - Move
correct_list_fieldstohooks.pyand update it to keep
unmapped / non-media single/list fields in sync (artist<->
artists,albumtype<->albumtypes, etc.). - Wire changes through the codebase:
- Pass
Itemobjects intoTrackMatchinmatch.tag_itemto enable
item-level metadata application. - Replace calls to removed
autotagapply functions with
Match.apply_metadatainvocations inbeets/importer/tasks.py,
beetsplug/bpsync.py, andbeetsplug/mbsync.py. - Update importer logic to set album artist fallbacks for
albumartists
/mb_albumartistidswhen missing. - Add and update tests:
- New
test/autotag/test_hooks.pyandtest/autotag/test_match.pyto
validate new data mapping, list field synchronization, overwrite
behavior, and assignment logic.
2.7.1-ls319
CI Report:
https://ci-tests.linuxserver.io/linuxserver/beets/2.7.1-ls319/index.html
LinuxServer Changes:
Full Changelog: 2.7.1-ls318...2.7.1-ls319
Remote Changes:
Updating PIP version of beets to 2.7.1
nightly-da7714ae-ls251
CI Report:
https://ci-tests.linuxserver.io/linuxserver/beets/nightly-da7714ae-ls251/index.html
LinuxServer Changes:
No changes
Remote Changes:
Add feature to exclude albums/songs during auto import (#6452)
Fixes #3523.
nightly-b09801b2-ls251
CI Report:
https://ci-tests.linuxserver.io/linuxserver/beets/nightly-b09801b2-ls251/index.html
LinuxServer Changes:
No changes
Remote Changes:
docs: Update links to pipx installation guide (#6454)
The old link now responds
with 404.
nightly-1943b145-ls251
CI Report:
https://ci-tests.linuxserver.io/linuxserver/beets/nightly-1943b145-ls251/index.html
LinuxServer Changes:
Full Changelog: nightly-0dd6df84-ls250...nightly-1943b145-ls251
Remote Changes:
Refactor of layout utils (#6442)
This PR refactors import-match layout rendering by centralizing layout
selection and line generation in beets.util.layout, simplifying the
ShowChange display path, and tightening the layout
data model.
What Changed
- Added
get_layout_lines()andget_layout_method()in
beets.util.layoutso layout selection (columnvsnewline) is
handled in one place. - Replaced
Sidefrom a mutableTypedDictwith an immutable
NamedTuplethat exposes derived helpers (rendered, prefix/suffix
widths, and rendered width). - Simplified
split_into_lines()from a 3-width tuple API to
(first_width, width)and removed legacy last-line empty-string
handling. - Refactored
beets.ui.commands.import_/display.pyShowChangeto call
get_layout_lines()directly and removed duplicate per-class
layout-selection logic. - Updated tracklist width calculation to use
Sidehelpers and explicit
width assignment via_replace(width=...). - Reworked
ShowChangetests into snapshot-style assertions for both
newlineandcolumnlayouts, and updated util layout tests to the new
split_into_lines()signature.
Why
- Reduces duplicated wrapping/layout logic across UI code paths.
- Makes layout behavior easier to reason about and test at the utility
boundary. - Narrows the display layer to orchestration while keeping
transformation/rendering logic in reusable utilities. - Improves maintainability by moving from loosely typed dict mutation to
a typed, self-describing data structure.