mirror of
https://github.com/penpot/penpot.git
synced 2026-10-29 14:00:37 +00:00
Store cumulative content scale as an optional shape attribute, default 1. Sync scales the main's styles by the copy/main ratio separately from constraint resizing. Keep descendants untouched and allow later main style edits to propagate (F109). Both renderer modifier paths use this field. Cover a later sync, repeated scaling, main radius edits, reset and its undo. The original stroke regression failed before the fix. Common JVM/JS and frontend suites, backend and exporter tests, lint and format checks pass. Historical scale gestures cannot be reconstructed from old file data. Benchmark vs Phase 1e (lower quantile, ms): world baseline now ratio main-10 1.790 0.993 0.55 main-100 15.415 9.038 0.59 main-1000 153.086 90.145 0.59 three-levels 35.215 18.989 0.54 chain 68.931 35.045 0.51 library-500 83.083 85.830 1.03 many-shapes 4.837 3.344 0.69 variant-100 32.052 33.586 1.05 All worlds pass the 10% regression threshold. AI-assisted-by: GPT-6