Skip to content

Releases: linuxserver/docker-beets

nightly-9ce4f11b-ls276

26 Apr 08:22
5aa9353

Choose a tag to compare

Pre-release

CI Report:

https://ci-tests.linuxserver.io/linuxserver/beets/nightly-9ce4f11b-ls276/index.html

LinuxServer Changes:

No changes

Remote Changes:

Correct MusicBrainz extra_tags default documentation (#6586)

The MusicBrainz plugin currently defaults extra_tags to an empty list.
Album search criteria are built from the release title plus either the
artist name or the MusicBrainz Various Artists ID; track count is only
added when tracks is configured in musicbrainz.extra_tags.

This updates the extra_tags documentation to match the current plugin
behavior.

Refs #6073.

Validation

  • Checked MusicBrainzPlugin.get_album_criteria and
    MusicBrainzAPI.search against the documented behavior.
  • Parsed the edited RST block and ran git diff --check.

nightly-42f5512e-ls276

25 Apr 16:07
5aa9353

Choose a tag to compare

Pre-release

CI Report:

https://ci-tests.linuxserver.io/linuxserver/beets/nightly-42f5512e-ls276/index.html

LinuxServer Changes:

Full Changelog: nightly-8a82a92a-ls275...nightly-42f5512e-ls276

Remote Changes:

zero: treat images and art as aliases in keep_fields (#6581)

Fixes #3532

When images is listed in keep_fields, embedded album art was still
being removed because the zero plugin didn't recognize art as an alias
for images. Both field names map to the same underlying data in
mediafile, so specifying either one in keep_fields should protect
embedded art.

This PR adds aliasing logic in the keep_fields block. If either
images or art appears in keep_fields, the other is automatically
added to the keep set.

2.10.0-ls327

24 Apr 19:29
9320a9b

Choose a tag to compare

CI Report:

https://ci-tests.linuxserver.io/linuxserver/beets/2.10.0-ls327/index.html

LinuxServer Changes:

Full Changelog: 2.10.0-ls326...2.10.0-ls327

Remote Changes:

Updating PIP version of beets to 2.10.0

nightly-8a82a92a-ls275

24 Apr 19:28
1619c62

Choose a tag to compare

Pre-release

CI Report:

https://ci-tests.linuxserver.io/linuxserver/beets/nightly-8a82a92a-ls275/index.html

LinuxServer Changes:

Full Changelog: nightly-8a82a92a-ls274...nightly-8a82a92a-ls275

Remote Changes:

library: add subtitle (id3 TIT3) field (#5696)

Adds support for a subtitle field, corresponding to the TIT3 id3 tag.
Requires beetbox/mediafile#82

nightly-baffb341-ls274

23 Apr 11:58
e981596

Choose a tag to compare

Pre-release

CI Report:

https://ci-tests.linuxserver.io/linuxserver/beets/nightly-baffb341-ls274/index.html

LinuxServer Changes:

No changes

Remote Changes:

Fix labeler config (#6574)

Fix labeler regex patterns to use OR matching

Consolidates duplicate label-matching rules in .github/labeler.yaml.
Each plugin label previously used two separate regex patterns — one
matching "<name> plugin" and one matching "<name>:" — which the
labeler config ANDs together, requiring both patterns to match
simultaneously.

Each pair is replaced with a single regex using a non-capturing group,
e.g. /convert(?: plugin|:)/i, so either suffix correctly triggers the
label.

Note I tested this issue under the following pr:
beetbox/beets#6573. See the changes timeline.

nightly-a35bb419-ls274

22 Apr 22:43
e981596

Choose a tag to compare

Pre-release

CI Report:

https://ci-tests.linuxserver.io/linuxserver/beets/nightly-a35bb419-ls274/index.html

LinuxServer Changes:

Full Changelog: nightly-7edf27bf-ls273...nightly-a35bb419-ls274

Remote Changes:

Regression: #6547 main needs default (#6571)

Fix regression error from #6547.

Default value None is needed for main function, was removed
accidentally.

nightly-8a82a92a-ls274

23 Apr 20:08
e981596

Choose a tag to compare

Pre-release

CI Report:

https://ci-tests.linuxserver.io/linuxserver/beets/nightly-8a82a92a-ls274/index.html

LinuxServer Changes:

No changes

Remote Changes:

library: add subtitle (id3 TIT3) field (#5696)

Adds support for a subtitle field, corresponding to the TIT3 id3 tag.
Requires beetbox/mediafile#82

nightly-e5504825-ls273

21 Apr 21:42
b1fe91e

Choose a tag to compare

Pre-release

CI Report:

https://ci-tests.linuxserver.io/linuxserver/beets/nightly-e5504825-ls273/index.html

LinuxServer Changes:

No changes

Remote Changes:

Replace old cover art instead of creating suffixed new entries / fetchart (#6554)

Summary

  • Fix duplicate album art files (cover.2.jpg, cover.3.jpg, ...)
    accumulating when re-importing albums with the fetchart plugin enabled.
  • ImportTask.remove_duplicates now operates at the album level and
    explicitly deletes album art files from disk when removing duplicate
    albums during import.
  • Album.set_art now unconditionally removes old art and any existing
    file at the destination, instead of appending a numeric suffix via
    unique_path. This matches the method's documented behavior of
    "replacing any existing art".
  • SingletonImportTask gets its own remove_duplicates override
    preserving the original item-level behavior, since find_duplicates
    returns items (not albums) for singletons.

Root cause

Two issues contributed to the bug:

1. remove_duplicates never deleted album art files.

When a user imports a duplicate album and chooses "Remove old",
remove_duplicates iterated over items and called item.remove(). When
the last item was removed, this cascaded to
Album.remove(delete=False), which skipped art deletion due to
delete=False. The old cover.jpg remained on disk as an orphan.

2. set_art created unique paths instead of replacing.

set_art only removed the old art file when oldart == artdest (exact
byte equality). When oldart was None (new album, no inherited
artpath) or pointed to a different path (e.g. different extension), the
existing file was left in place and unique_path generated
cover.2.jpg.

Fixes #6205

nightly-7edf27bf-ls273

21 Apr 19:07
b1fe91e

Choose a tag to compare

Pre-release

CI Report:

https://ci-tests.linuxserver.io/linuxserver/beets/nightly-7edf27bf-ls273/index.html

LinuxServer Changes:

Full Changelog: nightly-406db7cc-ls272...nightly-7edf27bf-ls273

Remote Changes:

Handle TEXT path values when migrating to relative paths (#6562)

Handle TEXT paths in library path migration

Fixes a crash during library migration for users who manually edited
their beets SQLite database and stored item or album-art paths as TEXT
instead of BLOB/bytes.

Changes

  • migrations.py: The relative-to-portable path migration now skips
    NULL rows (avoids unnecessary work) and wraps each path value with
    os.fsencode() before passing it to normalize_path_for_db(). This
    ensures TEXT paths are coerced to bytes before the update, matching
    the expected storage format.
  • test_migrations.py: The migration test now inserts both a
    bytes path and a str path, asserting both are correctly migrated to
    relative bytes posix paths.

Impact

Low-risk, targeted fix. No changes to the happy path for users with
well-formed databases — os.fsencode() on bytes is a no-op, so
existing behaviour is preserved.

Fixes: #6561

2.10.0-ls326

19 Apr 19:48
1ae80bb

Choose a tag to compare

CI Report:

https://ci-tests.linuxserver.io/linuxserver/beets/2.10.0-ls326/index.html

LinuxServer Changes:

Full Changelog: 2.9.0-ls325...2.10.0-ls326

Remote Changes:

Updating PIP version of beets to 2.10.0