Validate component instancing against the live instance #208
Labels
No labels
bug
chore
documentation
enhancement
feature
ready
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set
Reference
david/pi-extensions-and-skills#208
Loading…
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Summary
Validate component instancing against the live instance and the Penpot UI: instantiate a library component into a screen, confirm the UI treats it as a real instance, and confirm that editing the main component propagates to the instance — the property that distinguishes an instance from a copy.
Background
Depends on: #207
The field contract (
componentId,componentRoot,shapeRef) was already proven to persist, but persistence in the data model is not the same as behaving as an instance in the UI. This gate closes that gap: if editing the main component does not update the instance, the feature delivers copies with instance-looking metadata, and that must be discovered and reported here rather than discovered by a user later.Required environment:
PENPOT_URL,PENPOT_TOKEN, the scratch project, the committed library artifact imported into it, and a consumer file linked to that library.Documentation Required
A separate process downloads these into the listed folders before this issue is implemented. Check the folders for the actual reference material before starting.
docs/reference/penpot-api/componentId/componentRoot/shapeRef, to confirm the persisted values match what was staged.<PENPOT_URL>/api/main/doc/openapi.json—get-fileon both the library file and the consumer file, to compare main instance and instance subtrees.Implementation Details
Buttoncomponent inside it, then commit.componentIdandcomponentRoot: true;shapeRefpointing at the corresponding main-instance child id;penpot_unlink_library) on a throwaway consumer file and record what happens to the instance — the design intends the instance's own geometry to persist, but confirm rather than assume.Record in
extensions/penpot/findings.mdunder "Component instancing": the staged vs persisted field values, the UI observations for each check, the exact steps the UI required to propagate a main-component edit, what survived as an override, and anything that did not work.Acceptance Criteria
Buttoncomponent is created inside a frame on the consumer file and renders correctly in the Penpot UI.componentId+componentRoot: trueon the instance root andshapeRefon every child, with all-new ids (no collisions).extensions/penpot/findings.mdcontains the evidence for every check, including negative results, and states plainly whether instancing behaves as a true instance on Penpot 2.17.Test Plan
Manual, against the live instance:
Then in the Penpot UI:
Button's fill; save.pi-loop opened and merged a pull request for this issue: #241