mirror of
https://github.com/penpot/penpot.git
synced 2026-10-29 14:00:37 +00:00
Decision (c) of the component contract, after a fix that made the sync of a library file reach that file at all (Phase 3c). - Commit the sync of a library file to that file. An update of the main of a library component, made from a copy in the file, syncs the copies of the component in the file and in the library. The changes of a sync carry no file id, so the commit took the current file's: the library's copies, among them those its other mains nest, were written to pages the current file does not have, and never changed (F19). A sync now commits to the file it syncs. workspace-remote-cascade-test: an update of the main of a library component reaches the copy of it that another library main nests. - Sync the components a sync changes in the same commit. Decision (c) of the component contract: a sync reaches the copies of the components it changes, until none is left, in one commit. A sync of a file changed the mains of the components that nest the synced copies, and the component watcher synced those in a commit of its own, one level per pass, so the file stayed partly synced in between; the watcher only watches the current file, so a sync of a library file stopped at its first level (F19). common: generate-sync-file-cascade syncs a file as generate-sync-file-changes does, then the copies of each component of the file that the sync changed, one per pass, applying each pass to the file data, until none is left (generate-sync-components-cascade). The composable runner, the benchmark and the golden master use it. frontend: sync-file commits the whole cascade at once. When it syncs a library file, it then syncs the copies in the current file of the library components the cascade changed. workspace-remote-cascade-test: an update of the main of a library component, made from a copy in the file, reaches the file's copy of a library component whose main nests it. The common golden master records fewer changes undone in case W: a cascade is one change set. Benchmark (lower quantile, ms; baseline / now / ratio): deepest-edit-through-three-levels 35.2 / 17.0 / 0.48 edit-through-a-chain-of-dependents 68.9 / 33.2 / 0.48 library-update-into-copies 83.1 / 43.6 / 0.52 main-edit-among-many-shapes 4.8 / 3.5 / 0.73 main-edit-into-10-copies 1.8 / 0.9 / 0.49 main-edit-into-100-copies 15.4 / 8.1 / 0.52 main-edit-into-1000-copies 153.1 / 83.9 / 0.55 variant-switch-into-copies 32.1 / 19.6 / 0.61 AI-assisted-by: claude-opus-5-5