What's new
Fetch Metadata search modal
- Cover-resolution booster. New post-aggregation pass (
cps/services/cover_booster.py) that upgrades thumbnail-sized covers (Hardcover ~290×475, Open Library-L, Google Books default) to ~1500×1500 by parallel iTunes Search API lookup — no API key required. ValidatestrackNameagainst the record's title before swapping so a wrong-book ISBN cross-reference in Apple's catalog can't poison the cover. Animal Farm goes from 290×475 (7 KB Hardcover asset) to 1000×1500 (150 KB Houghton Mifflin cover via Apple Books). - Sort by cover size. New dropdown in the modal: provider order (default), cover size — largest first, cover size — smallest first. Re-applies live as images finish loading.
- Google Books URLs upgraded. Prefers
extraLarge/large/mediumsource overthumbnail, strips&zoom=1, collapses any existingfife=sizing tofife=w1600-h2400. Bumped fromw1280-h1920to cover Libra Color (1264×1680) plus 2× retina without forcing browser upscale.
Diagnostics
- Hardcover provider now logs a clear hint when the saved API token gets a 401 from Hardcover ("Unable to verify token"), pointing operators at https://hardcover.app/account/api to regenerate. Previously surfaced as a generic "HTTP request failed" line.
Operator knobs (env)
CWA_COVER_BOOST=0— disable the booster entirelyCWA_COVER_BOOST_TIMEOUT— per-lookup HTTP timeout, seconds (default 4)CWA_COVER_BOOST_WORKERS— thread pool size for parallel iTunes lookups (default 8)CWA_COVER_BOOST_MAX— cap on records boosted per request (default 30)
Compatibility
No new dependencies. No DB schema changes. Only new external service URL is itunes.apple.com (no key, no auth, no cookies). Existing thumbnail cache is unaffected — the booster runs on the search modal, not the on-disk cache. Run Admin → Refresh Thumbnail Cache if you also want library-grid covers regenerated against the v4.0.6/v4.0.11 cache-resolution bumps.
PRs in this release
- #33 — feat(metadata): cover-resolution booster + sort-by-cover-size in fetch dialog