mirror of
https://github.com/penpot/penpot.git
synced 2026-10-29 05:50:35 +00:00
- component-changed marked the component modified and sent launch-component-sync, its only caller, which opened an undo transaction around the syncs of the copies. component-changed sends those events itself, in the same order. - The library update notification found the libraries that would change with a lazy filter, so the check ran up to the first one when the notification was built and the rest when the user clicked "Update". It is a filterv, so the whole check runs when the notification is built, as the comment above it says. - The check that a new name is valid (trimmed, not blank, no trailing separator) was written in the shape rename and the component rename; cpn/clean-valid-name gives the cleaned name, or nil. - Paste and the move of shapes into a parent each tested whether they put a component head inside a variant; ctn/head-into-variant? does. - Going to the local main of a component and combining components into variants each opened another page and ran their work once it was initialized, with the same stream code; dwl/go-to-page-then does it. - Making components from the selection mapped the check over the shapes and then tested every result; every? takes the check. - generate-components-menu-entries reads the current file and page with mf/use-ctx, so it is a hook, and called conditionally it would break the order of its caller's hooks. It is use-components-menu-entries, and its docstring says why. The analytics events that paste and duplicate send for each new shape are built the same way but look up the parent's layout in different objects, so they stay apart. No behavior change: the suites are unchanged. AI-assisted-by: claude-opus-5-5