Move semantics: copy speakers into new scope instead of unlinking#2
Draft
asg017 wants to merge 1 commit into
Draft
Move semantics: copy speakers into new scope instead of unlinking#2asg017 wants to merge 1 commit into
asg017 wants to merge 1 commit into
Conversation
Moving a transcript between scopes (standalone<->collection, collection->collection) no longer unassigns its speakers. The single primitive copy_and_rescope now creates a fresh speaker in the destination scope for each speaker the transcript references -- carrying name (suffixed on clash, never auto-merged), description, configured state, and photo -- and repoints the entries onto the copy, so assignments survive the move. Transcript-scoped source speakers (exclusive to the moved transcript) are deleted as before; collection-scoped source speakers are left intact for sibling members. Renames the response field unlinked_entries -> copied_speakers across page_data models, regenerated TS types, and updates confirm-dialog copy + toasts on both detail pages. Tests rewritten to assert the copy behavior, plus a new case covering name-clash suffixing. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Stacked on top of #1 (sharing-v2).
Changes move semantics so that moving a transcript between scopes (standalone↔collection, collection→collection) no longer unassigns its speakers.
What changes
The single primitive (renamed
unlink_and_rescope→copy_and_rescope) now, for each speaker the transcript references, creates a fresh speaker in the destination scope — carrying name (suffixed on clash, never auto-merged), description, configured state, and photo — and repoints the entries onto the copy, so assignments survive the move.API / UI
unlinked_entries→copied_speakersacrosspage_datamodels + regenerated TS types.Tests
Existing move tests rewritten to assert the copy behavior, plus a new case covering name-clash suffixing. Full suite green (36 passed).
🤖 Generated with Claude Code