feat(studio): page WYSIWYG canvas, nested-block config, and type-aware Action authoring#1831
Merged
Merged
Conversation
Selecting a data-bound block (object-grid table, object-form, object-metric, grid) in the page metadata editor opened an inspector with only type/id/className while the full `properties` binding lived in source — the config panel was disconnected from what the author saw. - block-config: curated fields for object-grid/object-form/object-metric/ object-kanban/grid - PageBlockInspector: generic "Advanced" editor renders every remaining property (scalars as typed inputs, objects/arrays as editable JSON), so the panel always matches source for any block type, curated or not - PageBlockCanvas.childGroups: fix page:card (properties.children, not body), add grid, and a generic properties.children fallback so nested blocks are selectable on the canvas - block-types: object-grid/form/metric/kanban + grid become first-class (icons, a Data category, addable from the block picker) Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
…lection The Design canvas showed abstract type-badge cards while Preview rendered the real page — they looked completely different. Now each leaf block renders its REAL component (via SchemaRenderer, the same renderer Preview uses) behind a transparent select/drag overlay with a hover/selected type badge, mirroring the dashboard editor's design mode. Container blocks (grid/card/tabs/section) keep a slim title bar; their nested children render as real previews, and a grid lays its children out in its configured column count. - PageBlockCanvas: BlockLivePreview helper; BlockRow leaf vs container split; NestedChildren renders real child previews honoring grid columns - selection/drag/add/nested-edit ergonomics preserved Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Replace the flat SchemaForm for `action` with a progressively-disclosed,
type-first editor (Salesforce Quick Action / ServiceNow UI Action style):
- Basics (label/name/object scope hint/icon/variant)
- Behavior branches by type: script -> body editor; api -> method + endpoint;
url/flow/modal/form -> a single typed target binding
- Inputs: param builder (field-backed picks reuse object field metadata)
- Placement: location checkboxes + object-vs-global scope hint
- Feedback: confirm/success/error/refresh/undo/mode/shortcut
- Conditions: visible/disabled CEL
- AI exposure: opt-in via flattened aiExposed/aiDescription (matches
ActionPreview + served schema), not the nested ai block
- Advanced/rare props fall through to a SchemaForm fed the live server schema
with curated keys hidden, so nothing is double-edited or lost
Registered via registerMetadataDefaultInspector('action', …).
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
…preview Three heavier authoring aids for the Action editor (Retool/ServiceNow-style): - ActionPreview: a "Test request" runner for type:api (composes method + endpoint + bodyExtra, sends a real request with the session bearer, renders HTTP status + response; warns for non-GET) and a "Where it appears" placement simulation that mocks the button in record header / list row / toolbar / more-menu / section / command-palette per the action's locations. - ConditionBuilder (new): no-code visible/disabled editor — [subject][op][value] rows over the bound object's fields + context, joined AND/OR, compiled to CEL. Stateful (in-progress rows persist); round-trip guard keeps hand-authored complex CEL in a raw textarea; empty predicate unsets the field (no invalid ''). - ActionDefaultInspector: Conditions section now uses ConditionBuilder. Verified live: api test request (real POST → HTTP 404 shown), placement mocks, and record.status != 'done' compiled from the builder. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
|
The latest updates on your projects. Learn more about Vercel for GitHub. |
Contributor
✅ Console Performance Budget
📦 Bundle Size Report
Size Limits
|
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.
Summary
Improves the Studio metadata-admin authoring experience across Page and Action types.
Page editor
object-grid(table),object-form,object-metric,object-kanban,gridget curated inspector fields; a generic Advanced editor renders every remaining property (scalars as typed inputs, objects/arrays as editable JSON) so the panel never diverges from source.childGroupsfixed (page:card→properties.children,gridadded, generic fallback) so nested blocks are selectable.SchemaRendereras Preview) behind a select/drag overlay, with a grid laying children out in its configured column count — mirroring the dashboard editor's design mode. All selection/drag/add/nested-edit ergonomics preserved.Action editor
ActionDefaultInspector) — replaces the flat SchemaForm with a progressively-disclosed, type-first editor (Basics / Behavior-by-type / Inputs / Placement / Feedback / Conditions / AI). Advanced/rare props fall through to a SchemaForm fed the live server schema with curated keys hidden.type: api, composes and sends a real request (with the session bearer) and renders the HTTP status + response.ConditionBuilder) —[subject][op][value]rows over the bound object's fields + context, joined AND/OR, compiled to CEL. Stateful (in-progress rows persist); round-trip guard keeps complex hand-authored CEL in a raw textarea; empty predicate unsets the field.locations.Verification
All changes verified live in the browser against the showcase app (page
showcase_my_work, dashboard/view/report/flow/object editors, and actions): type-aware branching (api → method+endpoint, script → body editor), the test runner (realPOST→ HTTP response), the condition builder (record.status != 'done'compiled), and placement mocks. Type-check passes for all touched files.🤖 Generated with Claude Code