Skip to content

Comments

Performer merge#5910

Merged
WithoutPants merged 16 commits intostashapp:developfrom
sezzim:performer-merge
Jan 5, 2026
Merged

Performer merge#5910
WithoutPants merged 16 commits intostashapp:developfrom
sezzim:performer-merge

Conversation

@sezzim
Copy link
Contributor

@sezzim sezzim commented Jun 5, 2025

Fixes #1351. (The issue is about both performers and scenes, but scene merging was implemented some time ago.)

Also includes (as separate commits) some changes to make the UI of the different merge types consistent, although there's still a difference for scenes, where there's a convenient drop-down, so adding it there seemed preferable to adding a dedicated button.

No tests, and while it worked for me, I don't think that's complete enough coverage of all the fields to call it good. I could probably work on some tests if it generally looks good.

@sezzim sezzim force-pushed the performer-merge branch 2 times, most recently from 13bd14b to b760086 Compare June 5, 2025 02:36
@Gykes
Copy link
Collaborator

Gykes commented Dec 2, 2025

@WithoutPants

I think this could potentially be a good addition. I know it is currently supported via plugins but since scenes can do it then might be good for performers. Haven't really looked at the code and there are conflicts to take care of.

@WithoutPants WithoutPants added this to the Version 0.30.0 milestone Dec 2, 2025
Copy link
Collaborator

@WithoutPants WithoutPants left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

For expediency, I've addressed the identified issues in the backend code, and written some unit tests - this will be pushed shortly.

The biggest blocker to merging this is the lack of support for merging custom fields. For this reason, I'll defer this for 0.30. I'll sort out custom field support myself during 0.31 if it's not already addressed.

@WithoutPants WithoutPants removed this from the Version 0.30.0 milestone Dec 3, 2025
@WithoutPants WithoutPants added the feature Pull requests that add a new feature label Dec 3, 2025
@WithoutPants
Copy link
Collaborator

Just an additional testing note: merging from the performers page redirected to the scene list filtering on the destination performer, but showing the performer id rather than the name.

@sezzim
Copy link
Contributor Author

sezzim commented Dec 31, 2025

merging from the performers page redirected to the scene list filtering on the destination performer

This should be fixed.

Comment on lines +70 to +74
stash_ids {
endpoint
stash_id
updated_at
}
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This seems to be a merge conflict (of sorts) between #6398 and #6403.

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yep, this is a merge error.

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Nevermind, this is necessary for the change to tag merge

Comment on lines +471 to +473
tag_filter: filter.makeFilter(),
},
});
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

For consistency, and because I don't think the old logic was correct (it didn't evict the "aliases" field), I changed this to evict the tag rather than update the cache manually.

The "refetch the performer" strategy didn't seem to work, and didn't seem necessary once I added eviction, so I've remove it from all three merge types.

@WithoutPants WithoutPants added this to the Version 0.31.0 milestone Jan 5, 2026
Copy link
Collaborator

@WithoutPants WithoutPants left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

More static review comments. I'll fix these while testing.

performerDestroy(input: PerformerDestroyInput!): Boolean!
performersDestroy(ids: [ID!]!): Boolean!
bulkPerformerUpdate(input: BulkPerformerUpdateInput!): [Performer!]
performerMerge(input: PerformerMergeInput!): Performer
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This should be Performer!

Comment on lines 604 to 608
for _, src := range sources {
if err := src.LoadRelationships(ctx, qb); err != nil {
return fmt.Errorf("loading performer relationships from %d: %w", src.ID, err)
}
}
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Why are we loading relationships here? We're not actually doing anything with the sources.

Comment on lines +70 to +74
stash_ids {
endpoint
stash_id
updated_at
}
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yep, this is a merge error.

@WithoutPants WithoutPants merged commit 65e82a0 into stashapp:develop Jan 5, 2026
2 checks passed
cj12312021 added a commit to cj12312021/stash that referenced this pull request Jan 6, 2026
Sync extension components with upstream changes since v0.29.3:

- PerformerList: Add merge dialog and menu item
- TagList: Add merge dialog and menu item
- StudioList: Add edit dialog, edit button, and "e" keyboard shortcut
- Scene.tsx: Add merge action in operations dropdown

These features were added in upstream PRs stashapp#5910 and stashapp#6238 but were
missing from our extension implementations.

Also update extensions README.md to document these features.
@sezzim sezzim deleted the performer-merge branch January 8, 2026 03:44
@WithoutPants WithoutPants linked an issue Feb 5, 2026 that may be closed by this pull request
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

feature Pull requests that add a new feature

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[Feature] Merge Into option on tags homepage [Feature] Merging performers and scenes

3 participants