mirror of
https://github.com/bookorbit/bookorbit.git
synced 2026-11-03 00:11:37 -06:00
d86b32ed85
* fix(metadata): stop concatenating series and issue number into comicvine title ComicVine search and auto-fill set title to a synthesized "Series #N - Name" string instead of the issue's own name, inconsistent with how ComicInfo.xml's <Title> is used elsewhere in the app (issue title only, series and issue number in their own fields). title now carries just the issue name, falling back to "<series> #<issue>" only when ComicVine has no name for that issue. The concatenated format is genuinely useful for telling issues apart in the search-results list, so a new optional displayTitle field preserves that exact UX there, populated only by the ComicVine mapper. It's display-only and never read by any metadata-apply path, so the list keeps its current look while the metadata that actually gets persisted is cleanly separated. filterAndRank now scores candidates against displayTitle when present, falling back to title otherwise, so shortening title doesn't drop named issues when users search by series name. Since displayTitle is only ever set by the ComicVine mapper, this reproduces today's exact ranking behavior for ComicVine and leaves every other provider untouched. Closes #841 * fix(metadata): leave comic titles unset when comicvine has no issue name Address review feedback on the comicvine title mapping. Issue #841 asked for the issue name alone, or nothing when comicvine has none for that issue. Falling back to "<series> #<issue>" kept writing a synthesized title for unnamed issues, which is the common case in a comic run, so the ComicInfo round trip only held for named issues. Make MetadataCandidate.title optional and leave it unset instead: the pipeline already skips absent fields, and the client already omits diff rows whose candidate value is empty, so an unnamed issue now leaves any existing title alone. displayTitle still labels those candidates in the UI. Comic titles no longer parse as "<series> #<issue>", which is how ComicVineProvider decided between its precise volume-plus-issue search and the far looser general issue search. Carry seriesName and seriesIndex on MetadataSearchParams and prefer them when the title does not parse, so a refresh or a re-search of an already-matched comic keeps the structured path. A title that does parse still wins, since that is a user typing an explicit target. Also apply the display title in the diff panel's within-provider result picker, which renders only when a provider returned several candidates and so needs the issue number most; match the skip patterns against the same string that gets scored rather than title alone; and drop the redundant cover alt text on the result card, where the headline already names the result. --------- Co-authored-by: neon <18559658+neonsolstice@users.noreply.github.com>