> First step of the Repair epic, #1080. Also covers the Repair item of #1077.
>
> Every rule the screen applies is written out in the epic, in the "Rules (the front's business logic)" block of this step: search priority, search rules, results and their tags, picking, buttons, automatic actions and shortcuts, disabled controls, states, selection, repairing, the results step and the layout. This description sums them up.
Why
A book already in the library can point at the wrong Audible record: another edition, another volume, or the same book in another region's catalog. Rescan metadata can't fix it, because it keeps rescanning that record. This PR adds the buttons to point a book at the right record.
Find Match is affected too
Repair and Library Import's Find Match now use the same component, a book card (BookMatchCard.vue), because they do the same thing: find the Audible record a book should point at. Find Match shows the folder's book in that card, without the checkbox, and "Use this match" takes the record found. It always opens with the same search, from the folder's scan, in the configured region, whatever match the folder already has: that match only shows as Current. When the scan found an ASIN, it is in the ASIN field and searched as an ASIN, as Start Matching does ("No record for … in Audible France" when the region doesn't sell it), with the scan's title and author ready for a search without it; otherwise the scan's title and author are searched. A pick from an ASIN search carries the record's series, genres and dates (Add New's ASIN search now keeps them from the record), so the book is imported with them. Everything below about the card applies to Find Match as well.
Find Match follows the same rule, with one difference: only a book with files counts. Importing a folder onto a book without files is how a wanted book gets them...
Automated Canary build