- Added `cardContent` prop to `PerformerPopover` and `PerformerPopoverCard` for flexible content rendering.
- Introduced `TaggerPerformerPopover` to handle both local and scraped performer data, replacing the previous `ScrapedPerformerPreview`.
- Created `ScrapedPerformerCard` for displaying scraped performer details, including age and country flag.
- Updated styles for the tag popover card to ensure consistent dimensions and improved layout.
This refactor improves the encapsulation and display of performer information across the tagger components.
Use full PerformerCard in PerformerPopover ID mode so favorites and card button overlays render again, while keeping previewData mode for scraped/tagger previews.
Made-with: Cursor
Reorder padding declarations in the matched performer popover extra block to satisfy alphabetical property order enforced by stylelint.
Made-with: Cursor
- Updated CSS class names from `tagger-performer-popover` to `performer-preview-popover` for clarity.
- Enhanced styling for the new `performer-preview-popover` class to ensure consistent dimensions and image handling.
- Removed outdated styles related to the previous tagger popover implementation.
- Replaced PerformerPreviewCard with PerformerCard in PerformerPopover for better encapsulation and display.
- Simplified MatchedPerformerPreview by removing unnecessary loading state handling and age calculations.
- Enhanced styling in Tagger component with additional padding for better layout consistency.
Refactor PerformerPopover and related components for improved functionality and structure
- Updated PerformerPopover to accept preview data, loading states, and additional card extras for enhanced flexibility.
- Replaced PerformerCard with PerformerPreviewCard in PerformerPopoverCard for better encapsulation and display of performer details.
- Refactored MatchedPerformerPreview and ScrapedPerformerPreview to utilize PerformerPopover, streamlining the rendering of performer information and loading states.
- Improved styling by renaming CSS classes for consistency and clarity.
- Updated MatchedPerformerPreview to utilize scraped performer data and handle loading states more effectively.
- Introduced delta row calculations for displaying differences between local and scraped performer data.
- Removed redundant code and improved the overall organization of the components for better maintainability.
Convert scraped performer gender strings to GenderEnum using stringToGender before rendering GenderIcon so UI type-check passes in CI.
Made-with: Cursor
- Enhanced the normalizeValue function to handle numeric-like strings, converting them to numbers when applicable.
- Maintained existing functionality for trimming and lowercasing non-numeric strings, ensuring consistent value normalization.
- Replaced `PerformerCard` with `LocalPerformerCard` in `MatchedPerformerPreview` for better encapsulation.
- Introduced `RemotePerformerCard` in `ScrapedPerformerPreview` to enhance the display of performer details, including gender and country flag.
- Updated content rendering in `ScrapedPerformerPreview` to utilize the new `RemotePerformerCard` component.
- Added `useIntl` hook to support localized performer names.
- Updated `toPerformerCardData` function to utilize `intl` for formatting unknown performer names, enhancing user experience across different languages.
- Refactored buildPerformerDeltaRows to utilize `intl` for label formatting, improving localization.
- Updated loading state message to use `FormattedMessage` for better internationalization.
- Ensured all performer attributes are displayed with localized labels, enhancing user experience across different languages.
Use full findPerformer data for mismatch comparisons and selected hover content, and normalize scraped card mapping to satisfy PerformerDataFragment shape.
Made-with: Cursor
- Simplified conditions for displaying remote aliases and URLs by removing unnecessary checks against local counts.
- Ensured that rows are only pushed when remote counts exceed local counts, improving clarity and performance.
- Added delta row functionality to display differences between local and remote performer data in MatchedPerformerPreview.
- Introduced ScrapedPerformerPreview component for displaying scraped performer details with hover functionality.
- Updated PerformerResult to integrate ScrapedPerformerPreview and pass necessary props for delta rows and warnings.
- Enhanced styling for performer popovers to improve user experience.
- Added cardClassName prop to PerformerPopoverCard and PerformerPopover for customizable styling.
- Introduced MatchedPerformerPreview component to encapsulate PerformerPopover usage with a performerID.
- Updated PerformerResult to utilize MatchedPerformerPreview for improved structure and styling.
* Fix WebSocket UTF-8 error for non-UTF-8 file paths in subscriptions
Sanitize log messages and job fields (description, subtasks, error)
before sending over WebSocket. File paths with non-UTF-8 characters
caused the browser to close the connection with "Could not decode a
text frame as UTF-8." Invalid bytes are replaced with U+FFFD.
Only the API response layer is affected — underlying stored data is
unchanged.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
* Replace direct ToValidUTF8 calls to new sanitiseWebsocketString function
---------
Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-authored-by: WithoutPants <53250216+WithoutPants@users.noreply.github.com>
* Let the stash ID pill shrink in tagger
On very narrow viewports (e.g. mobile), the stash ID pill will
overflow its container. With this PR, it will instead limit itself
to the width of the container and display with an ellipsis if
necessary.
Fixes#6786
* update postmigration to handle deduplicate folders.
* Split post-migration to perform some tasks before the schema migration
* Reparent files and delete duplicate folder if possible
---------
Co-authored-by: WithoutPants <53250216+WithoutPants@users.noreply.github.com>