mirror of
https://github.com/storytold/soundcraft.git
synced 2026-11-11 16:35:42 -06:00
clip.unloop found loop copies only by comparing content of back-to-back clips. As soon as the source clip's notes were edited, its content no longer matched the copies and unloop answered "the selection is not a looped clip" for the very loop that clip.loop had just created. clip.loop now tags the origin and its copies with a shared `loop_id` (new optional Clip field, serde default so old sessions load), and unloop treats equal-length adjacent clips with the same loop_id as one loop. The content comparison stays as a fallback for loops without a tag. unloop with mode=flatten clears the tag so the copies become ordinary independent clips. Propagating edits from the source to the copies is not part of this change.