feat: the library's albums go on the wanted list as held, once; after that the list is the truth (M502 #5567)
release / govulncheck (push) Successful in 16s
release / web (push) Successful in 1m24s
release / go (push) Successful in 1m44s
release / integration (push) Successful in 5m19s
release / android (push) Successful in 5m31s
release / Build signed APK (releases and dev) (push) Successful in 5m35s
release / Attach APK to the Release (tag releases only) (push) Skipped
release / Build + push container image (push) Successful in 25s
release / Verify release artifacts (tag releases only) (push) Skipped

A one-time job in the wanted worker lists every album in the library as a
held want, one per release group, with a record that it happened
(acquisition_settings.library_listed_at). Albums whose tags name only a
release are named on MusicBrainz first, 120 a pass; what nothing names is
counted and shown on the Held tab.

Re-acquisition now wants back only albums on the list. Taking a held album
off the list leaves its files, and it is never fetched back; albums put in
the library folder by hand afterwards are not added.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
2026-10-10 16:13:46 -04:00
co-authored by Claude Opus 5.5
parent bc198a9389
commit 2c677b3184
19 changed files with 965 additions and 172 deletions
@@ -0,0 +1,8 @@
ALTER TABLE acquisition_settings
DROP COLUMN library_listing_started_at,
DROP COLUMN library_listed_at,
DROP COLUMN library_unlisted;
DELETE FROM wants WHERE reason = 'library';
ALTER TABLE wants DROP CONSTRAINT wants_reason_check;
ALTER TABLE wants ADD CONSTRAINT wants_reason_check CHECK (reason IN ('request', 'follow', 'missing'));
@@ -0,0 +1,23 @@
-- The library's albums go on the wanted list as held, once (M502 #5567,
-- operator 2026-10-10). After that the list is the truth: an album taken
-- off it stays off, and one dropped into the library folder by hand is not
-- added. Re-acquisition fetches back only albums on the list.
--
-- wants.reason library: on the list because the library
-- held it when the list began.
-- acquisition_settings when the one-time listing began (its cutoff:
-- albums added later are not listed), when it
-- finished, and how many albums it could not
-- list because nothing names them to
-- MusicBrainz.
--
-- The listing itself runs in the wanted worker after boot, not here: it may
-- have to ask MusicBrainz for each album's release group.
ALTER TABLE wants DROP CONSTRAINT wants_reason_check;
ALTER TABLE wants ADD CONSTRAINT wants_reason_check
CHECK (reason IN ('request', 'follow', 'missing', 'library'));
ALTER TABLE acquisition_settings
ADD COLUMN library_listing_started_at timestamptz,
ADD COLUMN library_listed_at timestamptz,
ADD COLUMN library_unlisted integer NOT NULL DEFAULT 0;