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-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-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.

nightly-af41eef7-ls94

07 Dec 18:10
c76552b
Compare
Choose a tag to compare
nightly-af41eef7-ls94 Pre-release
Pre-release

CI Report:

https://ci-tests.linuxserver.io/linuxserver/beets/nightly-af41eef7-ls94/index.html

LinuxServer Changes:

Pin beetcamp to 0.19.2 until upstream requirements fixed.

beets Changes:

lyrics: Fallback to plain lyrics if synced lyrics not available (#5089)

The synced config flag was not working the way the docs described it
for the LRCLIB source. With synced: yes, if a track does not have
synced lyrics, but does have plain lyrics, the plugin would return no
lyrics. The docs imply that, with the flag enabled, it would still use
plain lyrics if there are no synced lyrics.

LRCLIB API call that returns plain lyrics can be found
here.

nightly-3cc129b8-ls94

10 Dec 06:07
c76552b
Compare
Choose a tag to compare
nightly-3cc129b8-ls94 Pre-release
Pre-release

CI Report:

https://ci-tests.linuxserver.io/linuxserver/beets/nightly-3cc129b8-ls94/index.html

LinuxServer Changes:

Pin beetcamp to 0.19.2 until upstream requirements fixed.

beets Changes:

Package: fix release workflow, exclude plugin tests, include all files from MANIFEST.in (#5536)

Fixes #5526
Fixes #5531
Fixes #5539

Package contents

See #5526 where a package maintainer fails running plugin tests. I found that before
introduction of Poetry beets never bundled plugin tests, therefore I now excluded them.

I also remembered that previously MANIFEST.in file was used to specify which files get
included in the package, so I mirrored the same configuration. This includes zsh
completion in extra/_beet which fixes #5531.

I removed MANIFEST.in file since it has no use anymore.

Release workflow

The last release workflow run failed to pick up the commit with the version updates and
tagged an outdated commit (#5539). I simplified the workflow to create the tag at the same
time the version upgrade is committed.