Validate a full composed screen (one commit, one revision) against the live instance #201
Labels
No labels
bug
chore
documentation
enhancement
feature
ready
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set
Reference
david/pi-extensions-and-skills#201
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 composition against the live instance by building one realistic screen — a shell frame with a cards row, progress bars and text — in a single commit, then confirming in the Penpot UI that the result is a design a human can keep working in: named layers, real text objects, fills linked to library assets, and an auto-layout frame that reflows.
Background
Depends on: #200
Each primitive has been validated in isolation; this gate validates that they compose, and that the "editable" property the feature is built around actually holds. It is also the first end-to-end exercise of the batched-commit architecture: many
add-objchanges in oneupdate-filecall, applying atomically as exactly one revision, with the server maintaining parentshapesarrays as children are added.The specific properties being proven, in the order of how easy they are to get subtly wrong:
Required environment:
PENPOT_URL,PENPOT_TOKEN, and the scratch project with the colour/typography assets created in the earlier validation steps.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/shapesarrays are maintained (used to confirm the server-side wiring).<PENPOT_URL>/api/main/doc/openapi.json—update-fileon the running version, if a failure needs isolating withcurlbelow the extension.docs/reference/pi-coding-agent//reloadand tool output capture for the evidence below.Implementation Details
Build the screen described below using only the composition primitives (
penpot_add_frame,penpot_add_rect,penpot_add_text,penpot_add_image), then run the checks. Where a check fails, fix the offending primitive in this step and repeat — a milestone does not advance on an unvalidated predecessor.The screen (a plausible
DESIGN.mddashboard section; adapt names to the scratch file's actual assets):screenframe at the page root,layout: flex,column, gap 24, padding 32, filled with a background library colour;headerframe,layout: flex,row, gap 16,align_items: center, containing a title text (library typographyh2) and a subtitle text (h3/body);cardsframe,layout: flex,row, gap 16, containing threecardframes, each containing a rect (linked fill), a title text and a body text;progressframe containing three progress-bar constructions (a track rect plus a filled-value rect, or a single rect if that is what the primitives support cleanly) — if the primitives cannot express a partial bar cleanly, record the gap rather than hacking it.Checks and evidence:
revnbefore and after; the advance must be exactly one. Confirm viapenpot_get_filethat every staged shape id exists.cardsframe is a real layout frame: in the UI, select a card and resize it; confirm the sibling cards / the frame's contents reflow and the layout panel reports gap and padding as staged.shapesarray without any follow-upmod-objfrom the extension (check by reading the file and comparing child lists).Record in
extensions/penpot/findings.mdunder "Composed screen": the staged change count,revnbefore/after, the per-check outcome, UI screenshots/observations where useful, and anything that did not come out well — including any construction the primitives could not express (e.g. a partial progress bar). Do not phrase a gap as a success.Acceptance Criteria
update-filecall, with the file'srevnadvancing exactly once.shapesarrays are correct without any follow-upmod-objfrom the extension.extensions/penpot/findings.mdrecords the evidence for every check plus every construction the primitives could not express.Test Plan
Manual, against the live instance:
Then, in the Penpot UI:
pi-loop opened and merged a pull request for this issue: #234