Repository navigation
Visualizer: moving a model to the front of its chain keeps the next model - #7269
Merged
dkulp merged 1 commit intoOct 23, 2026
Merged
Conversation
…odel Dropping a model on the left of the model it already follows (moving the middle model of A -> B -> C to the front) was treated as "not moved", so C stayed chained to B while A was re-chained to B too; the chain broke and C fell out of its place on the port. Only a right-hand drop onto the model it already follows is a no-op. The iPad's assignModelToController never re-linked the model that followed the moved one; it now does. Co-Authored-By: Claude Opus 5.5 <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.
Summary
In the controller visualizer, moving the middle model of a chain to the front knocked the model after it out of its place on the port.
Repro: a pixel port chained
EFL-Bat -> GE_Spinner_32_2 -> Spider. DragGE_Spinner_32_2onto the left side ofEFL-Bat. ExpectedGE_Spinner_32_2 -> EFL-Bat -> Spider. Instead the Spider dropped out of its position, and the work log reported "Model chain is broken so just stuffing the remaining 1 models in in their original order."Cause: in
DropFromController's dropped-on-a-model branch, the "model did not actually move" test wasThe second half is true whenever
malready followsdroppedOn, whatever side it was dropped on. For a right-hand drop that is indeed no move. For a left-hand drop it is a swap, but the test skipped re-linkingm's follower, soSpiderkept>GE_Spinner_32_2whileEFL-Batwas also set to>GE_Spinner_32_2. With two models chained to the same model the port's chain broke.Fix: the "already follows droppedOn" case only counts as "not moved" for a right-hand drop.
iPad parity
State A. The iPad's
assignModelToController(XLSequenceDocument.mm) never re-linked the model that followed the moved model in its old chain at all. Moving a model within a port could leave a stale or circular chain. It now re-chains that follower to what the moved model followed, and handles the moved model's own follower being the insertion point. The note is on row 31 inplans/platform-parity/07-controllers-setup-upload.md.Testing
xLights-iPadLibbuild succeed.🤖 Generated with Claude Code