Skip to content

Releases: linuxserver/docker-beets

2.2.0-ls250

27 Dec 18:54
45effef
Compare
Choose a tag to compare

CI Report:

https://ci-tests.linuxserver.io/linuxserver/beets/2.2.0-ls250/index.html

LinuxServer Changes:

Add packages required for Discogs plugin.

Remote Changes:

Updating PIP version of beets to 2.2.0

nightly-fdd365f8-ls99

29 Dec 14:12
922d9b9
Compare
Choose a tag to compare
nightly-fdd365f8-ls99 Pre-release
Pre-release

CI Report:

https://ci-tests.linuxserver.io/linuxserver/beets/nightly-fdd365f8-ls99/index.html

LinuxServer Changes:

Pin beetcamp to 0.19.2 until upstream requirements fixed.

Remote Changes:

Future proof BucketPluginTest.test_year_single_year_last_folder (#5566)

2025 won't be in the future, forever.

Fixes: https://bugs.debian.org/1091495

nightly-faf7529a-ls99

27 Dec 18:12
922d9b9
Compare
Choose a tag to compare
nightly-faf7529a-ls99 Pre-release
Pre-release

CI Report:

https://ci-tests.linuxserver.io/linuxserver/beets/nightly-faf7529a-ls99/index.html

LinuxServer Changes:

Pin beetcamp to 0.19.2 until upstream requirements fixed.

Remote Changes:

Replace munkres with lapjv for track assignment (#5564)

Fixes #5207.

This PR replaces the munkres library with lap (Linear Assignment
Problem solver) for computing optimal track assignments during the
auto-tagging process. The main changes are:

  • Remove munkres dependency and add lap and numpy dependencies
  • Refactor the track assignment code to use lap.lapjv() instead of
    Munkres().compute()
  • Simplify cost matrix construction using list comprehension
  • Move config value reading outside of track_distance function to
    improve performance

The motivation for this change comes from benchmark comparisons showing
that LAPJV (implemented in the lap library) significantly outperforms
the Munkres/Hungarian algorithm for the linear assignment problem. See
detailed benchmarks at: https://github.com/berhane/LAP-solvers

The change should provide better performance for track matching,
especially with larger albums, while maintaining the same assignment
results.

Testing Notes

  • All existing tests pass without modification
  • Track assignments produce identical results
  • No behavioral changes in auto-tagging

nightly-f91f0961-ls99

01 Jan 02:23
922d9b9
Compare
Choose a tag to compare
nightly-f91f0961-ls99 Pre-release
Pre-release

CI Report:

https://ci-tests.linuxserver.io/linuxserver/beets/nightly-f91f0961-ls99/index.html

LinuxServer Changes:

Pin beetcamp to 0.19.2 until upstream requirements fixed.

Remote Changes:

Fix sorting on missing non-string fields (#5570)

Description

Fixes #5512. When sorting on a field, if the field is missing from some
items and it has a type, use the type's null value. Otherwise,
continue to fall back to an empty string, as I don't think there's much
to be done in that case.

The new test test_int_field_present_in_some_items fails without the
fix in query.py.

nightly-2277e2a0-ls98

26 Dec 19:17
2c65ecd
Compare
Choose a tag to compare
nightly-2277e2a0-ls98 Pre-release
Pre-release

CI Report:

https://ci-tests.linuxserver.io/linuxserver/beets/nightly-2277e2a0-ls98/index.html

LinuxServer Changes:

Pin beetcamp to 0.19.2 until upstream requirements fixed.

Remote Changes:

Use shutil.move() to move files. (#5123)

Fixes #4622.

I don't think this changes other behavior of the function, but it fixes
the problem with the moved files being created with the wrong
permissions for me.

2.2.0-ls249

20 Dec 19:05
7d78f0d
Compare
Choose a tag to compare

CI Report:

https://ci-tests.linuxserver.io/linuxserver/beets/2.2.0-ls249/index.html

LinuxServer Changes:

Add packages required for Discogs plugin.

Remote Changes:

Updating PIP version of beets to 2.2.0

nightly-bcf516b8-ls97

19 Dec 17:07
840e223
Compare
Choose a tag to compare
nightly-bcf516b8-ls97 Pre-release
Pre-release

CI Report:

https://ci-tests.linuxserver.io/linuxserver/beets/nightly-bcf516b8-ls97/index.html

LinuxServer Changes:

Pin beetcamp to 0.19.2 until upstream requirements fixed.

Remote Changes:

Properly type db on the model, sort out generic types issues (#5545)

Thanks to @wisp3rwind's suggestion this PR adds types to the
relationship between Model, Database and Library.

Then I worked through the rest of the issues found in the edited files.
Most of this involved providing type parameters for generic types (or
defining defaults, rather 😉).

There queryparse module had a somewhat significant issue where the
sorting construction logic only expected to receive FieldSort
subclasses, while SmartArtistSort was not one. Thus SmartArtistSort
has now been forced to behave and is a FieldSort subclass. It's also
been moved to query.py module which is where the rest of sorts are
defined.

nightly-994f9b83-ls97

19 Dec 06:17
840e223
Compare
Choose a tag to compare
nightly-994f9b83-ls97 Pre-release
Pre-release

CI Report:

https://ci-tests.linuxserver.io/linuxserver/beets/nightly-994f9b83-ls97/index.html

LinuxServer Changes:

Pin beetcamp to 0.19.2 until upstream requirements fixed.

Remote Changes:

pyproject.toml: don't install docs et al into the wheel

wheels are directly unpacked into site-packages, so this means likely
conflict with other packages

nightly-9110a111-ls96

15 Dec 15:16
05d8ebb
Compare
Choose a tag to compare
nightly-9110a111-ls96 Pre-release
Pre-release

CI Report:

https://ci-tests.linuxserver.io/linuxserver/beets/nightly-9110a111-ls96/index.html

LinuxServer Changes:

Pin beetcamp to 0.19.2 until upstream requirements fixed.

Remote Changes:

Stop perpetually writing mb_artistid, mb_albumartistid and albumtypes fields (#5540)

This PR fixes an issue where the beet write command repeatedly shows
differences for certain fields (mb_artistid, mb_albumartistid,
albumtype) even after writing the tags.
This happens because these fields are actually stored as lists in the
media files (mb_artistids, mb_albumartistids, albumtypes), but
beets maintains both single and list versions in its database.

This PR addresses this issue in a non-invasive way: the fix ensures
consistency between single fields and their list counterparts by:

  1. When setting a single field value, making it the first element of the
    corresponding list
  2. When setting a list, using its first element as the single field
    value

This resolves long-standing issues #5265, #5371, and #4715 where users
experienced persistent "differences" in these fields despite writing
tags multiple times.

Changes:

  • Added ensure_consistent_list_fields() function to synchronize field
    pairs
  • Applied this function during metadata application
  • Added tests for all field combinations

Fixes #5265, #5371, #4715

Note: your music needs to be reimported with beet import -LI or
synchronised with beet mbsync in order to fix these fields!

nightly-22163d70-ls95

13 Dec 19:03
4b4b7e0
Compare
Choose a tag to compare
nightly-22163d70-ls95 Pre-release
Pre-release

CI Report:

https://ci-tests.linuxserver.io/linuxserver/beets/nightly-22163d70-ls95/index.html

LinuxServer Changes:

Pin beetcamp to 0.19.2 until upstream requirements fixed.

beets Changes:

Remove support for Python 3.8 (#5508)

  • Drop support for EOL Python 3.8 making Python 3.9 the minimum
    supported version

  • Take advantage of Python 3.9+ type hint syntax by:

    • Using list[T] instead of List[T] etc. from typing module
    • Using Type | None syntax for unions instead of Union[Type, None]
    • Moving collection type hints from typing to collections.abc
    • Using TYPE_CHECKING guard for runtime import optimization

Note: in #5503 we found that we cannot support Python 3.12 unless we
upgrade our minimum support Python to 3.9.