mirror of
https://github.com/penpot/penpot.git
synced 2026-10-29 22:10:34 +00:00
The composable runners could edit, add, remove and move children, swap and switch, but not run the other component operations. New nodes run each one through the production generator in the pure runner and the real event in the frontend interpreter: - Detach, UpdateMain, DeleteComponent and RestoreComponent; - Duplicate, and NestCopy (a copy moved into a main); - EditText, with the automatic rename the text editor applies; - MoveShape (frontend only, through the sidebar) and MoveToCell; - swap-shape and reset on any copy head; - Undo with a step count, and an edit undone before its sync (frontend only). New cases, all with the undo/redo round trip: - Q, R, S, T, U: detach, update main, delete and restore, duplicate and nest, at nesting depths 0 to 2; - V, W, X: a new edit after undo, three undos over nested cascades, an undo before the edit's sync; - Y: text overrides against main text edits; - Z: a main child move; - AA to AF: swap outcomes on values and structure, and the grid cell of a swapped child; - AG, AH, AI: the plugin suite's slot alignment cases. The plugin suite gets OpDetach, OpSwap and OpReset, names that keep the roles of two nestable components apart, Assert.knownFailure, and ports of cases Q, AA, AB and K's reset. Supporting changes: nodes can record what they created (IAppliedResult); create-component takes a size, since with 0.01 frames the frontend reflows split undo entries at points that depend on timing (F43); the interpreter ends the text measurement headless, so text steps settle; tm/known-failure pins the wrong value a known bug gives in a case assertion; the interpreter no longer moves its undo baseline after a skipped optional, which cut the end-of-variant round trip short. Confirmed and pinned: F12 (resetting a nested swap clears the top copy's overrides), F27 (the automatic text rename touches :name-group), F29 (a second switch loses an override) and F44 (a swapped grid child misses the main's cell changes). F43 also shows through a plain sync at depth 2 (case Q).