Skip to content

Releases: linuxserver/docker-beets

nightly-c3482c68-ls254

28 Mar 13:55
a350ba9

Choose a tag to compare

Pre-release

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

28 Mar 15:31
db674fc

Choose a tag to compare

Pre-release

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

27 Mar 19:27
ffb7335

Choose a tag to compare

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

27 Mar 19:27
ce0f5d4

Choose a tag to compare

Pre-release

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_sort and artist_credit / artists_credit fields have not
    been synchronised.
  • Fix overwrite_null configuration which was previously ignored for
    fields defined in autotag/__init__.py::SPECIAL_FIELDS.

Updates

  • Move metadata application logic into Match objects: add
    Match.apply_metadata, AlbumMatch.apply_metadata,
    AlbumMatch.apply_album_metadata, and TrackMatch.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 Info and subclasses:
  • Info.type class property and nullable_fields for per-type
    'overwrite_null' config.
  • Info.raw_data and Info.item_data computed properties to apply
    artist_credit rules, filter nulls, and map media-specific field names.
  • AlbumInfo and TrackInfo extend raw_data/item_data behavior to
    handle album/track specifics (date zeroing, tracktotal,
    mb_releasetrackid, per-disc numbering).
  • Introduce TrackInfo.merge_with_album to merge track-level data with
    album-level fallback for a final item payload.
  • Move correct_list_fields to hooks.py and update it to keep
    unmapped / non-media single/list fields in sync (artist <->
    artists, albumtype <-> albumtypes, etc.).
  • Wire changes through the codebase:
  • Pass Item objects into TrackMatch in match.tag_item to enable
    item-level metadata application.
  • Replace calls to removed autotag apply functions with
    Match.apply_metadata invocations in beets/importer/tasks.py,
    beetsplug/bpsync.py, and beetsplug/mbsync.py.
  • Update importer logic to set album artist fallbacks for albumartists
    / mb_albumartistids when missing.
  • Add and update tests:
  • New test/autotag/test_hooks.py and test/autotag/test_match.py to
    validate new data mapping, list field synchronization, overwrite
    behavior, and assignment logic.

nightly-2bb4c41a-ls253

28 Mar 12:32
ce0f5d4

Choose a tag to compare

Pre-release

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

22 Mar 20:14
18ba12e

Choose a tag to compare

Pre-release

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_sort and artist_credit / artists_credit fields have not
    been synchronised.
  • Fix overwrite_null configuration which was previously ignored for
    fields defined in autotag/__init__.py::SPECIAL_FIELDS.

Updates

  • Move metadata application logic into Match objects: add
    Match.apply_metadata, AlbumMatch.apply_metadata,
    AlbumMatch.apply_album_metadata, and TrackMatch.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 Info and subclasses:
  • Info.type class property and nullable_fields for per-type
    'overwrite_null' config.
  • Info.raw_data and Info.item_data computed properties to apply
    artist_credit rules, filter nulls, and map media-specific field names.
  • AlbumInfo and TrackInfo extend raw_data/item_data behavior to
    handle album/track specifics (date zeroing, tracktotal,
    mb_releasetrackid, per-disc numbering).
  • Introduce TrackInfo.merge_with_album to merge track-level data with
    album-level fallback for a final item payload.
  • Move correct_list_fields to hooks.py and update it to keep
    unmapped / non-media single/list fields in sync (artist <->
    artists, albumtype <-> albumtypes, etc.).
  • Wire changes through the codebase:
  • Pass Item objects into TrackMatch in match.tag_item to enable
    item-level metadata application.
  • Replace calls to removed autotag apply functions with
    Match.apply_metadata invocations in beets/importer/tasks.py,
    beetsplug/bpsync.py, and beetsplug/mbsync.py.
  • Update importer logic to set album artist fallbacks for albumartists
    / mb_albumartistids when missing.
  • Add and update tests:
  • New test/autotag/test_hooks.py and test/autotag/test_match.py to
    validate new data mapping, list field synchronization, overwrite
    behavior, and assignment logic.

2.7.1-ls319

20 Mar 19:23
542dc9f

Choose a tag to compare

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

22 Mar 04:14
74bbc10

Choose a tag to compare

Pre-release

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

21 Mar 18:27
74bbc10

Choose a tag to compare

Pre-release

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

20 Mar 19:23
74bbc10

Choose a tag to compare

Pre-release

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() and get_layout_method() in
    beets.util.layout so layout selection (column vs newline) is
    handled in one place.
  • Replaced Side from a mutable TypedDict with an immutable
    NamedTuple that 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.py ShowChange to call
    get_layout_lines() directly and removed duplicate per-class
    layout-selection logic.
  • Updated tracklist width calculation to use Side helpers and explicit
    width assignment via _replace(width=...).
  • Reworked ShowChange tests into snapshot-style assertions for both
    newline and column layouts, 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.