feat(app-create): seed placement size from the slot's registry default [BEX-461] - #92
Merged
Merged
Conversation
…t [BEX-461] The registry default card size (extension_points metadata.default_size, served as default_size on GET /cli/surface-points) becomes a CREATE-TIME seed, the same mechanism as context/default_context_field: written explicitly into the entry's size, where the partner can see and edit it. The entry's own value is what upload validates and the platform serves — no manifest change, no kit fallback, no cacheSchemaVersion bump. - SurfacePointRow gains default_size (typed, nullable). - buildSurfacePointList takes sizeFor (per-row, like contextFor); sanitizeSeededSize degrades a blank/malformed served default to no seed rather than authoring a value validateUiApp then refuses. - No size prompt, unchanged (D2). - Tests: seeded from the picked row, absent when the row declares none, malformed default dropped. Docs (SKILL.md/AGENTS.md) + changeset. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Adds a "UI apps" section explaining what brevo app create's interactive prompt supports today (actionLink placements) and the fields each entry carries, so users know what's actually available before reading the full CLI reference.
|
piyushsarin-sib
added a commit
that referenced
this pull request
Sep 3, 2026
…and size seeding Rebase fallout from #92 (registry default_size seeding) and #97 (non-interactive actionLink UI creation) landing on main first: - resolveUiAppOrRedirectUris threads the distribution answer through to resolveUiApp, which gates the Iframe choice (private-only). The non-interactive path deliberately doesn't take it — that route is actionLink-only by design, so its buildSurfacePointList call pins urlField: 'redirect_link'. - buildSurfacePointList carries both #92's sizeFor and this branch's urlField/url; its unit tests updated to the merged signature. - Agent docs merged: the non-interactive flags (#97) and the Iframe choice documented side by side, both noting the non-interactive routes stay actionLink-only. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.



Jira: BEX-461 · Epic: BEX-211
What
The registry's per-slot default card size becomes a create-time seed, the same mechanism
contextalready uses:brevo app createreadsdefault_sizeoff the picked registry row (GET /v3/app-store/surface-points) and writes it into the authored entry'ssize— explicit inapp-config.json, editable, and the entry's own value is what upload validates and the platform serves. No manifest change, no kit fallback read, nocacheSchemaVersionbump.SurfacePointRow.default_size(typed, nullable) — flows through the existing row normalization untouched.buildSurfacePointListgainssizeFor(per-row, exactly likecontextFor); a slot with no default writes nosizekey, so behavior is unchanged wherever the registry declares nothing.sanitizeSeededSize: a server predating the field, or echoing a blank/malformed shape, degrades to "no seed" rather than authoring a valuevalidateUiApprefuses in the very flow that wrote it.SKILL.md/AGENTS.md) +patchchangeset. 1414 tests green.Based directly on
mainThis ships independently of the iframe-extension-authoring work (PR #87) — that feature is being deferred, not dropped, so this PR is cherry-picked cleanly off
mainrather than stacked on it. Superseded PR #91 (which was stacked on #87) is closed in favor of this one.🤖 Generated with Claude Code