Skip to content

feat(app-create): seed placement size from the slot's registry default [BEX-461] - #91

Closed
piyushsarin-sib wants to merge 1 commit into
feat/iframe-extension-authoringfrom
feat/bex-461-seed-default-size
Closed

feat(app-create): seed placement size from the slot's registry default [BEX-461]#91
piyushsarin-sib wants to merge 1 commit into
feat/iframe-extension-authoringfrom
feat/bex-461-seed-default-size

Conversation

@piyushsarin-sib

Copy link
Copy Markdown
Collaborator

Jira: BEX-461 · Epic: BEX-211

What

The registry's per-slot default card size becomes a create-time seed, the same mechanism context already uses: brevo app create reads default_size off the picked registry row (GET /v3/app-store/surface-points, published by app-store-bo-be#405) and writes it into the authored entry's size — explicit in app-config.json, editable, and the entry's own value is what upload validates and the platform serves. No manifest change, no kit fallback read, no cacheSchemaVersion bump — that render-time alternative stays the follow-up only if product ever needs to restyle existing sizeless apps platform-wide.

  • SurfacePointRow.default_size (typed, nullable) — flows through the existing row normalization untouched.
  • buildSurfacePointList gains sizeFor (per-row, exactly like contextFor); a slot with no default writes no size key, 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 value validateUiApp refuses in the very flow that wrote it.
  • Still no size prompt (D2) — the registry default is the platform's answer to the question the flow deliberately doesn't ask.
  • Docs (SKILL.md/AGENTS.md) + minor changeset. 1418 tests green.

One knob, two surfaces — worth knowing

Per-entry size drives the widget card box and the modal body height. A seeded height: 200px on an iframeExtension widget entry therefore also makes its modal 200px tall — visible in the file, trivially edited, but if product prefers modals to keep the 72vh default, the one-line change is to skip seeding on the iframe branch. Flagging rather than deciding.

Stacked

Base is feat/iframe-extension-authoring (PR #87) — both touch buildSurfacePointList. Merge #87 first; this then retargets to main automatically.

🤖 Generated with Claude Code

…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>
@sonarqubecloud

sonarqubecloud Bot commented Sep 2, 2026

Copy link
Copy Markdown

@piyushsarin-sib

Copy link
Copy Markdown
Collaborator Author

Superseded by #92 — same BEX-461 change, cherry-picked directly onto main so it can release independently of the iframe-extension-authoring stack (#87), which is being deferred.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant