mirror of
https://github.com/penpot/penpot.git
synced 2026-10-29 14:00:37 +00:00
Updating a rotated copy also turns its main. A swapped descendant whose content and position sizes differ needs its placement settled in that new frame. Append the main-file placement changes to the inverse sync, keeping source-copy changes local and restoring both files in one undo group. Portable local/library regressions at 45 and 90 degrees fail eight assertions before the fix and pass all 20 after it. The original seed712 case4855 and its exact shrink pass, as does the 4855..5000 tail diagnostic. The diagnostic does not replace the full 5000-program swap gate. Common JVM1851/30684 and JS1782/29308, frontend1539/9312, backend1610/8104, exporter14/32 and all 68 plugin cases pass. Focused suites and unchanged goldens pass; lint and formatting pass. Live WASM at 45/90 degrees keeps placement stable through undo/redo and a later main edit. Maximum anchor error is below 0.00001px. Benchmark ratios against the recorded baseline: main 10/100/1000: 0.49/0.56/0.54; three levels: 0.49; chain: 0.49; library: 0.50; many shapes: 0.45; switch: 0.58. AI-assisted-by: GPT-6