Releases: linuxserver/docker-beets
Release list
nightly-15949c86-ls313
CI Report:
https://ci-tests.linuxserver.io/linuxserver/beets/nightly-15949c86-ls313/index.html
LinuxServer Changes:
Full Changelog: nightly-1a1d7dc2-ls312...nightly-15949c86-ls313
Remote Changes:
Fix incorrect line numbers in logs (#6833)
Because beets wraps logging.Logger, the default stacklevel=1
incorrectly reports all log messages being emitted from
beets/logging.py:163 at the super()._log() callsite. Change the
default to stacklevel=2 so that the reported line numbers in debug
logging are the actual logging callsites.
nightly-e700135e-ls312
CI Report:
https://ci-tests.linuxserver.io/linuxserver/beets/nightly-e700135e-ls312/index.html
LinuxServer Changes:
No changes
Remote Changes:
eDit: Enable album-level field editing during interactive import (#6727)
During interactive import, the edit plugin only exposed item-level
fields — the albumfields configuration was completely ignored in
importer_edit(). Users who wanted to modify album-level fields such as
album or year had to complete the import, then run beet edit -a QUERY as a separate step.
Solution
Updated importer_edit() to support editing album-level fields during
import. Album fields (configured via albumfields) are presented as a
YAML header section prepended to the per-track documents. Changes to the
header are applied to all items in the album, making album-level edits
work in both the eDit and edit Candidates choices.
nightly-9cbbf5be-ls312
CI Report:
https://ci-tests.linuxserver.io/linuxserver/beets/nightly-9cbbf5be-ls312/index.html
LinuxServer Changes:
No changes
Remote Changes:
Increase test verbosity (#6828)
Change config["verbose"] from 1 to 2 so that DEBUG-level logging
from plugin import tasks and event hooks are emitted. (See
beets.plugins._set_log_level_and_params.)
config["verbose"] == 2 does not appear to affect logging anywhere else
in the codebase, while config["verbose"] == 3 would enable output of
messages logged via BeetsLogger.extra_debug().
nightly-1a1d7dc2-ls312
CI Report:
https://ci-tests.linuxserver.io/linuxserver/beets/nightly-1a1d7dc2-ls312/index.html
LinuxServer Changes:
Full Changelog: nightly-4061ea05-ls311...nightly-1a1d7dc2-ls312
Remote Changes:
lyrics: add --no-keep-synced CLI option (#6769)
- This change adds a small CLI override to
beetsplug/lyrics.py:
--no-keep-synced. It is the inverse of--keep-synced, and lets one
manuallyricsrun ignore the configuredkeep_synced: yes.
nightly-4061ea05-ls311
CI Report:
https://ci-tests.linuxserver.io/linuxserver/beets/nightly-4061ea05-ls311/index.html
LinuxServer Changes:
Full Changelog: nightly-0fd0e827-ls310...nightly-4061ea05-ls311
Remote Changes:
Add fetch_for_asis setting to FetchArt plugin (#6815)
Add fetch_for_asis setting to FetchArt plugin
Description
Enable fetching art for imports even when as-is is selected as the
metadata source. Allows for the case when files with good metadata but
without album art are being imported (e.g. digital download store).
To Do
- Documentation.
- Changelog.
- Tests.
2.12.0-ls340
CI Report:
https://ci-tests.linuxserver.io/linuxserver/beets/2.12.0-ls340/index.html
LinuxServer Changes:
Full Changelog: 2.12.0-ls339...2.12.0-ls340
Remote Changes:
Updating PIP version of beets to 2.12.0
nightly-9acb1ecf-ls310
CI Report:
https://ci-tests.linuxserver.io/linuxserver/beets/nightly-9acb1ecf-ls310/index.html
LinuxServer Changes:
No changes
Remote Changes:
feat(ftintitle): hook metadata events, fixing mbsync (#6726)
Depends on beetbox/beets#6732.
Summary
This PR integrates ftintitle with metadata fetched through beets’
metadata-received events, so commands like mbsync apply
already-normalized metadata when ftintitle is enabled.
Addresses beetbox/beets#1153.
Changes
- Register
ftintitlelisteners fortrackinfo_receivedand
albuminfo_receivedwhenftintitle.autois enabled. - Rewrite fetched
TrackInfometadata beforembsyncapplies it,
avoiding unnecessary re-sync churn. - Preserve existing manual command and import behavior while sharing the
same rewrite logic. - Handle
artist_credit, cachedInfoproperties, empty titles, and
no-op configurations consistently. - Update
ftintitledocs for the expandedautobehavior.
nightly-8ddae794-ls310
CI Report:
https://ci-tests.linuxserver.io/linuxserver/beets/nightly-8ddae794-ls310/index.html
LinuxServer Changes:
Full Changelog: nightly-94ef7d8d-ls309...nightly-8ddae794-ls310
Remote Changes:
tests: remove unused/redundant logic from tests (#6811)
-
This change simplifies the test architecture after full coverage
exposed dead paths. Redundant helpers, fixtures, fallback branches, and
defensive test-only code were removed acrosstest/*and
beets/test/fixtures.py. -
Biggest structural change is in
test/plugins/test_smartplaylist.py,
where repeated temporary playlist directory setup was pulled into a
small sharedPlaylistDirMixin. This keeps filesystem setup in one
place and makes the affected tests more uniform. -
Several tests now rely on direct assertions instead of
try/except,
manual cleanup, or skipped paths. That makes failures more explicit and
reduces hidden control flow in the suite. -
High-level impact: no production architecture changes, but the test
suite becomes smaller, stricter, and easier to reason about. Reviewers
can read this as a cleanup pass that removes unused test scaffolding
while preserving existing behavior.
nightly-0fd0e827-ls310
CI Report:
https://ci-tests.linuxserver.io/linuxserver/beets/nightly-0fd0e827-ls310/index.html
LinuxServer Changes:
No changes
Remote Changes:
Support += and -= for multi-value fields in modify (#6648)
Description
Fixes #6587.
This PR adds += and -= support to beet modify for multi-value
fields.
For example:
beet modify genres+=Funk
beet modify genres-=BluesWith this change, genres+=Funk appends Funk to the existing genres
values if it is not already present, while genres-=Blues removes only
the exact value Blues and preserves other values such as Blues Rock.
The existing field=value replacement behavior is preserved.
Main behavior changes:
genres=Jazz; Bluesstill replaces the full field value as before.genres+=FunkappendsFunkto the existing multi-value field.genres+=Funkdoes not create duplicate values.genres-=Bluesremoves only the exact valueBlues.- Removing
Bluesdoes not remove partial matches likeBlues Rock. - Existing value order is preserved.
+=and-=are rejected for scalar fields with a clear user-facing
error.
nightly-94ef7d8d-ls309
CI Report:
https://ci-tests.linuxserver.io/linuxserver/beets/nightly-94ef7d8d-ls309/index.html
LinuxServer Changes:
Full Changelog: nightly-051485be-ls308...nightly-94ef7d8d-ls309
Remote Changes:
typing: add types to beets.util and beets.test.helper (#6805)
I've started working on migrating the codebase to pathlib.Path and
this is the very first step: fully type beets.util and
beets.test.helper. Next, I will me migrating tests to use
pathlib.Path.
First half of #6808.
-
Extracts shared path/temp-directory behavior into
PathsMixin, and
splits import-specific test setup intoImporterMixin. This makes
beets.test.helpermore modular and gives test helpers a clearer
inheritance structure. -
Updates
TestHelperand import helpers to use those smaller mixins,
while keeping existing test behavior intact. The main architectural
effect is better separation between core test setup, filesystem helpers,
and importer-specific utilities. -
Tightens typing across
beets.test.helperandbeets.util,
especially around path handling.beets.utilnow accepts a broader set
of path types throughPathLike/AnyPath, which reduces friction
betweenbytes,str, andPathusage. -
Aligns helper internals with the typed interfaces by normalizing path
handling in methods liketouch, using typedtemplate(...)entries
for importer path formats, and fixing a few return-type/inheritance edge
cases. -
High-level impact: this is mainly a typing and test-infrastructure
cleanup. It improves maintainability and type-checker accuracy without
changing production architecture or intended runtime behavior.