Skip to content

Add SmartResolve plugin for duplicate scene workflows#697

Merged
DogmaDragon merged 3 commits intostashapp:mainfrom
Stash-KennyG:pr/smartresolve-mainline
Apr 9, 2026
Merged

Add SmartResolve plugin for duplicate scene workflows#697
DogmaDragon merged 3 commits intostashapp:mainfrom
Stash-KennyG:pr/smartresolve-mainline

Conversation

@Stash-KennyG
Copy link
Copy Markdown
Contributor

@Stash-KennyG Stash-KennyG commented Apr 8, 2026

Summary

  • Add a new SmartResolve plugin under plugins/SmartResolve for Stash Duplicate Checker workflows.
  • Include rule-based keeper selection with protection/sync safeguards to reduce metadata loss during duplicate cleanup.
  • Include Smart Resolve UI assets and docs (README.md + settings screenshot) so behavior and configuration are clear in CommunityScripts.

Test plan

  • Install/update plugin and verify SmartResolve loads in Duplicate Checker.
  • Run Smart Resolve and confirm reasons/selection output is generated across duplicate groups.
  • Validate sync protections (group/performer/tag/date/o-count/ignore-tag rules) on known edge-case pairs.
  • Verify settings toggles in plugin config alter rule/protection behavior as expected.

LLM Details

  • [✔] LLM use is openly disclosed. Made with Cursor
  • [✔] Code is reviewed by a human. Human reviewed
  • [✔] Human testing and validation was performed. I filtered through hundreds of scenes testing the code.
  • [✔] You take full responsibility for the code (including license compliance).

Notes

This works VERY well for all matches exact matches
It does struggle a little bit with performance for VERY large (100k) libraries with fuzzier matches. It's not that it's altering the matches but it just is not perfectly efficient and triggers some re-queries that are expensive and causses the overall UI to be a little sluggish in the match review segment. Still very helpful.

KennyG added 2 commits April 8, 2026 11:48
Introduce SmartResolve with rule-based scene selection, protection/sync safeguards, in-row sync tooling, and documented settings for tuning Smart Resolve behavior.

Made-with: Cursor
…rsion increment to 1.0.02. Added a function to determine if a refresh is needed after sync, optimizing group loading based on cache state.
@Stash-KennyG
Copy link
Copy Markdown
Contributor Author

Latest push removes unnecessary refresh, greatly improving performance.

Restore unconditional duplicate-group reload when running Select Smart Resolve to avoid the browser instability introduced by cache-key reuse, while keeping sync no-refresh behavior unchanged.

Made-with: Cursor
@DogmaDragon DogmaDragon added the type:plugin Plugins label Apr 9, 2026
@DogmaDragon DogmaDragon merged commit 68dbccb into stashapp:main Apr 9, 2026
1 check passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants