Summary
Automatic search skips any book that has no quality profile (or whose profile no longer exists), and nothing in the Wanted view told the user why those books were never searched. #760 now prevents new profile-less books from being added; this PR repairs the ones already in the library, as a Wanted-view recovery flow. The search-service fallbacks from the earlier revision are gone — existing books receive an explicit assignment before automatic search proceeds.
Changes
Added
- Warning above the Wanted list when any wanted book has no valid profile: how many are affected and that automatic search skips them. When no quality profiles exist at all, the warning links to Settings → Quality Profiles instead of offering an assignment.
AssignQualityProfileModal(components/domain/audiobook/), opened from the warning's "Assign profile…" button:- a picker over every valid profile — the default is preselected when one exists; when none is marked default nothing is preselected and the action stays disabled until a profile is chosen;
- an explicit bulk-assign through the existing
/library/bulk-update, scoped to the wanted books without a valid profile — books with a valid assignment are never touched; - a per-book list of anything that failed (title + server error), kept open until dismissed, with a warning toast; a full success closes the modal with a success toast.
Changed
- The Quality column shows No profile (with a tooltip explaining the consequence) instead of falling back to
item.quality ?? 'Unknown'for books whose profile can't be resolved.
Removed
- The default-profile fallback in
DownloadServiceandAutomaticSearchService, and the one-click "Assign default profile" button.
Testing
WantedView.qualityProfileRecovery.spec.ts (6 cases) covers the scenarios from review:
- no profiles configured → warning with the Settings link, no assign action, every r...
Automated Canary build