Commit Graph

482 Commits

Author SHA1 Message Date
Alok Saboo
1ddc95f7a6 address copilot comments 2026-08-05 09:05:51 -04:00
Alok Saboo
c19b6b42d8 add interactive upgrade option 2026-08-05 08:47:26 -04:00
Mohsin Hirani
503830cacb docs: apply docstrfmt formatting to editor section 2026-08-02 13:45:06 -04:00
Mohsin Hirani
a849afb4c1 docs: add editor config option to configuration reference 2026-08-02 13:36:14 -04:00
Alok Saboo
7a49cc4882 Merge branch 'master' into upgrade 2026-07-30 09:11:46 -04:00
TowyTowy
348b87dd3e Normalise reversed date ranges instead of crashing
A date range query whose start lies after its end, such as
`beet ls added:2024..2020`, crashed with an uncaught ValueError
raised by DateInterval's endpoint-order check:

    ValueError: start date 2024-01-01 00:00:00 is not before end date
    2021-01-01 00:00:00

Only InvalidQueryArgumentValueError is converted into a user-facing
InvalidQueryError by Library._get_results, so the plain ValueError
escaped all the way up as a traceback.

Rather than reporting an error, accept the range and swap its two
endpoints, so `added:2024..2020` means the same as `added:2020..2024`.

The swap lives in `DateInterval.from_periods`, which is the only place
where the two user-supplied endpoints are still available as `Period`
objects. Swapping further down, in `DateInterval.__init__`, would swap
the already-derived datetimes, and those are derived asymmetrically:
the start contributes `Period.date` while the end contributes
`Period.open_right_endpoint()`. For `2024..2020` that would yield
[2021-01-01, 2024-01-01), which excludes both 2020 and 2024 -- not the
interval the user asked for. Swapping the periods first yields
[2020-01-01, 2025-01-01), which is exactly `2020..2024`.

`DateInterval.__init__` keeps raising ValueError, since it remains the
invariant guard for callers constructing an interval from datetimes
directly, where there is no notion of the order the user typed.

The swap only triggers when the interval would otherwise be empty, so
partially overlapping mixed-precision ranges that are valid today, such
as `2000-06..2000`, are unaffected. Genuinely malformed input such as
`added:notadate` still raises InvalidQueryArgumentValueError from
`Period.parse` as before.

Co-Authored-By: Claude <noreply@anthropic.com>
2026-07-30 12:36:04 +02:00
Alok Saboo
6fb5e62e40 Resolve upgrade target per-album when duplicates span multiple albums 2026-07-28 19:51:30 -04:00
Alok Saboo
789c13e4f7 Add bitrate-based upgrade duplicate_action 2026-07-28 19:51:30 -04:00
J0J0 Todos
582e3ccce4 Docs for multi-value modify operators 2026-07-08 12:12:15 +01:00
Sebastian Mohr
f1412d82c6 Added changelog and docs. 2026-06-24 17:09:13 +02:00
culpen0
fb7a940ea3 Fix titlecase template documentation 2026-06-06 09:36:14 -04:00
李家成
98d99f818c Address review: wrap tests in class, add changelog, update docs
- Wrap new test_dbcore.py tests in TestModelTypeFallback class
- Add changelog entry for the modify -a multi-value field fix
- Document multi-valued field support for album modify in cli.rst
2026-05-21 23:54:02 +08:00
oxms16
b47460b3e6 Fix multi-value path query matching 2026-05-16 16:46:48 +08:00
ShimmerGlass
45e78473b0 feat(import): add --nomove / -M option 2026-05-07 13:50:40 +02:00
Daniele Ricci
7eadc5e1d8 library: add subtitle (id3 TIT3) field 2026-04-23 21:11:50 +02:00
Spencer Nystrom
f6b44c50de Update docs for archive deletion on move 2026-04-18 22:20:16 -07:00
Elaine Chen
4478ece59c Fix docs formatting 2026-04-14 15:01:46 -04:00
Elaine Chen
480e67c7bf Replaced ffmpeg with Python extraction, add docs, and second test 2026-04-14 12:39:08 -04:00
Šarūnas Nejus
8673ea9a4d Update docs 2026-04-11 13:02:42 +01:00
Šarūnas Nejus
724891fa9d Update docs 2026-04-07 10:43:00 +01:00
Šarūnas Nejus
a867b961cc Migrate arranger -> arrangers 2026-04-05 09:15:23 +01:00
Šarūnas Nejus
85eaa447f0 Migrate composer -> composers 2026-04-05 09:15:23 +01:00
Šarūnas Nejus
a8f14ced42 Update docs 2026-04-05 09:15:23 +01:00
Šarūnas Nejus
f2e282a327 Update docs 2026-04-05 09:15:23 +01:00
gaotue
f9874d57be Merge branch 'master' into master 2026-04-02 17:28:47 +02:00
laogao216
2285671223 refactoring and other improvements 2026-03-29 17:41:28 +02:00
laogao216
31d4a1209b add config & doc, refactor, optimize 2026-03-29 04:51:54 +02:00
Wouter2devries
6e4c7354ab Formatted docs again 2026-03-26 10:53:00 +01:00
Wouter2devries
6f61fe9a3b Updated missed has_images 2026-03-26 10:50:40 +01:00
Wouter2devries
6aaa89fd8d Fixed docs formatting 2026-03-26 10:04:40 +01:00
Wouter2devries
fa24c63bbb Merge branch 'master' into issue2572 2026-03-26 09:20:37 +01:00
Wouter2devries
867d17e409 Changed has_images to has_cover_art
Per suggestion as this is what used everywhere else
2026-03-20 21:03:52 +01:00
Wouter2devries
1c30e67e03 Added Images query tests, docs and changelog 2026-03-20 14:48:23 +01:00
Eric Masseran
548bd9bab6 Merge remote-tracking branch 'official/master' into use-aliases-for-track-album
* official/master: (54 commits)
  Require data_source in album_for_id and track_for_id functions
  Invoke album_matched hook from AlbumMatch.__post_init__
  Refactor match_by_id
  Take data source into account when deciding duplicate candidates
  Return album candidates from multiple sources when matching by IDs
  Add a test to reproduce the issue
  Move assignment tests to test/autotag/test_match.py
  Pulled latest changelog and added my entry to 'Unreleased > Bug fixes' section.
  Moved changelog note to top, under Unreleased.
  This PR improves the regex detection used for the drive_sep_replace default.
  This PR improves the regex detection used for the drive_sep_replace default.
  refactor: Use deprecate_for_user for beatport/bpsync deprecation warnings
  Fix docs: use single-line deprecated directive compatible with docstrfmt
  Fix docs formatting for beatport and bpsync rst files
  Deprecate beatport and bpsync plugins
  Update changelog.rst
  try to fix fish plugin
  Make get_search_query_with_filters abstract
  Document new methods
  Document shared metadata search plugin workflow
  ...
2026-03-10 08:52:31 +01:00
Eric Masseran
efd2b090b5 Copilot feedback 2026-03-10 08:52:08 +01:00
Emil Hammarberg
1f2beb6d02 Format 2026-03-08 08:51:42 +00:00
Emil Hammarberg
763dc7ccb1 Fix empty literal error 2026-03-08 08:51:42 +00:00
Emil Hammarberg
8a57472224 Reword 2026-03-08 08:51:42 +00:00
Emil Hammarberg
654b76190c Clarify %if template behavior
Closes #4991
2026-03-08 08:51:42 +00:00
Šarūnas Nejus
ae3a2e5729 Fix redirect URLs 2026-03-06 11:28:29 +00:00
Šarūnas Nejus
441c838387 Fix broken URLs 2026-03-06 11:28:29 +00:00
Eric Masseran
1fe5bad4b2 Merge remote-tracking branch 'official/master' into use-aliases-for-track-album
* official/master: (180 commits)
  feat(lastgenre): cleanup_existing
  convert: generate playlist entries from effective output paths
  Fix lint issues
  Move changelog note under Unreleased section
  Enable duplicate detection for as-is imports
  Force slow queries for FuzzyPlugin
  Add tests
  Add changelog note
  Match substrings fuzzily
  Fix lint
  Move test_autotag tests under test/autotag
  Keep missing multi-value fields as None instead of empty list
  Show that album genres are not applied to tracks
  autotag: refactor autotag tests to use single comprehensive test
  fix(lastgenre): Reset plugin config in fixtured tests
  fix(fetchart): prevent deletion of configured fallback cover art
  Move changelog note under unreleased section
  Update changelog note
  fix: ftintitle can handle a list of ampersanded artists
  Fix symlink tests for macOS
  ...
2026-03-04 22:21:03 +01:00
Serene
aa81232336 Use proper syntax highlighting for code block
Co-authored-by: Šarūnas Nejus <snejus@protonmail.com>
2026-03-01 11:46:44 +00:00
Serene-Arc
dd1bda4bd0 Format docs 2026-03-01 11:46:44 +00:00
edvatar
a40bd7ca3c docs: Document match.distance_weights in autotagger docs
Add documentation for the distance_weights configuration option in
the autotagger matching section. This includes all available fields
with their default values and an example of how to customize them.

Closes #6081

Signed-off-by: edvatar <88481784+toroleapinc@users.noreply.github.com>
2026-03-01 11:46:44 +00:00
Šarūnas Nejus
a8d53f78de Fix the rest of the tests 2026-02-27 18:34:26 +00:00
Šarūnas Nejus
9d237d10fc Fix multi-value delimiter handling in templates
- Use '\␀' as the DB delimiter while formatting lists with '; ' for
templates.
- Update DelimitedString parsing to accept both separators:
  * '\␀' for the values from the DB
  * '; ' for the rest of parsed values (for example `beet modify genres="eletronic; jazz"`)
- Refresh %first docs and tests to reflect multi-value field behavior.
2026-02-22 16:12:58 +00:00
Kirill A. Korinsky
1dd2cd019f Update color docs with bright_* and bg_bright_* entries 2026-01-25 12:05:40 +01:00
Eric Masseran
ac6c0dd1a5 Add documentation 2025-12-23 12:16:17 +01:00
asardaes
9c37f94171 Add album template value in ftintitle plugin 2025-11-21 18:31:59 +01:00