mirror of
https://github.com/penpot/penpot.git
synced 2026-10-29 14:00:37 +00:00
- find-ref-shape, find-content-ref-shape, find-ref-component and the walk that finds the container of a main each found a head's file data and component the same way: the local file or a library, then the component, deleted or not. ctf/head-component gives both, or nil when they are not there. - ctf/get-component-shape, the child of a component by id, shared its name with ctn/get-component-shape, the top copy root of a shape; it is get-component-child. - generate-keep-touched found, in one reduce, the shape in the new copy that each touched child of the old copy relates to, carried the child's overrides into it or kept a swapped child in its place, and collected the parents of the related shapes in a binding named parents-of-swapped, though it held the parent of every related shape. It now pairs the shapes first (the old child, the main shape it refers to, the related new shape, and whether the old child was swapped), then carries each pair in a reduce, and gives the parents from the pairs. The pairing reads the page as it was before the switch, as the reduce did, so the result is the same. No behavior change: the golden masters and the suites are unchanged. Benchmark (lower quantile, ms; baseline / now / ratio): deepest-edit-through-three-levels 35.2 / 16.5 / 0.47 edit-through-a-chain-of-dependents 68.9 / 34.4 / 0.50 library-update-into-copies 83.1 / 37.7 / 0.45 main-edit-among-many-shapes 4.8 / 2.6 / 0.53 main-edit-into-10-copies 1.8 / 0.7 / 0.42 main-edit-into-100-copies 15.4 / 8.4 / 0.55 main-edit-into-1000-copies 153.1 / 77.9 / 0.51 variant-switch-into-copies 32.1 / 18.2 / 0.57 AI-assisted-by: claude-opus-5-5 Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>