mirror of
https://github.com/stashapp/stash.git
synced 2026-05-09 05:05:29 +02:00
Document summary, test plan, and compatibility note for card class shape changes. Made-with: Cursor
3.7 KiB
3.7 KiB
Draft PR: Tagger Performer Hover Preview Enhancements
PR Title
Enhance Tagger performer match UX with hover previews and mismatch warnings
Base / Head
- Base:
stashapp/stashdevelop - Head:
Stash-KennyG/stashfeature/6853-performer-hover-preview
Summary
- Adds a hover preview for matched performer selection in Scene Tagger by attaching the preview to the picker control, not the matched text label.
- Adds a scraped performer hover preview on the left performer label using scraped/remote data, while rendering through shared performer card UI for visual consistency.
- Adds mismatch context in the matched performer hover card for non-matching performer fields (including aliases/URLs as counts), to make potential cross-linkage easier to spot before save.
- Adds stash ID conflict warning inside the hover card when the local selected performer already has a stash ID for the same endpoint but with a different GUID.
- Uses a compact red endpoint chip for stash ID conflict warning, with full conflicting GUID available via chip tooltip.
Files Changed
ui/v2.5/src/components/Performers/PerformerPopover.tsxui/v2.5/src/components/Tagger/scenes/MatchedPerformerPreview.tsxui/v2.5/src/components/Tagger/scenes/PerformerResult.tsxui/v2.5/src/components/Tagger/scenes/ScrapedPerformerPreview.tsx(new)ui/v2.5/src/components/Tagger/styles.scss
Behavior Details
- Picker hover target: hover card now opens from the selected picker chip/control.
- Left-side scraped hover: hover on scraped performer text shows card built from scraped data (image/name/etc.) but styled with shared
PerformerCard. - Mismatch rows: shown only for fields where scraped has a value and differs from selected local value.
- Aliases / URLs: reported as counts only.
- Stash ID conflict warning:
- shown only when
selected stash_id(endpoint) != incoming remote_site_id - displayed inside card, above mismatch rows
- compact red endpoint chip; GUID is tooltip text.
- shown only when
Mismatch Fields Included
- Birthdate
- Death Date
- Ethnicity
- Hair Color
- Eye Color
- Height
- Weight
- Penis Length
- Circumcised
- Measurements
- Fake Tits
- Tattoos
- Piercings
- Career Start
- Career End
- Aliases (count)
- URLs (count)
Test Plan
- Hover selected performer picker in Scene Tagger matched result and confirm card opens below picker.
- Hover left scraped performer name and confirm scraped preview card appears and matches shared performer card styling.
- Confirm mismatch rows render only for differing values and are hidden for exact matches.
- Confirm aliases/URLs mismatch rows show count only.
- Confirm stash ID warning appears only when endpoint matches and GUID differs.
- Confirm warning chip is compact red endpoint chip and GUID is visible in tooltip.
- Confirm no stash ID warning appears when GUIDs match.
- Confirm no regressions in create/skip/select/link flow for performer rows.
- Confirm lint/build checks pass.
Notes
- This feature is designed to improve confidence in match correctness before save, especially in larger datasets where name collisions are more common.
Compatibility Note: CSS Class Shape
PerformerPopovernow supports an optionalcardClassNameprop and applies it by appending to the existing wrapper class:- before:
className="tag-popover-card" - after:
className={\tag-popover-card ${cardClassName ?? ""}`.trim()}`
- before:
- The base class
tag-popover-cardis preserved, so existing styling and selectors that target it continue to work. - This is expected to be low-risk for downstream usage because:
- the prop is optional
- existing callers do not need to change
- DOM structure is unchanged (same wrapper element).