finding the macOS CPU spike
I was seeing periodic CPU spikes on macOS even though the audio processing itself looked healthy. The problem was in the less interesting background work: checks and state reconciliation between the editor and engine were happening too often and sometimes at the wrong time. I reduced that work and made its timing more deliberate.
The same state updates could make a newly selected loop become unselected as the next snapshot arrived. I changed the reconciliation so a circle no longer changes its mind immediately after I click it.
start and length are attached to each other
A loop has one allocation, and Start plus Length have to fit inside it. I had been treating them too independently, which made it possible for an edit to push the active window past the end of the buffer. The fix calculates the pair together and keeps the displayed values synchronized with the values the engine actually accepted.
There is not a new effect in this release. The CPU stays calm, the selected loop stays selected, and the loop window ends where the screen says it ends. I am happy with all three of those things.