Context
Part of the SDUI runtime roadmap. The rendering engine (SchemaRenderer + registry) and record-detail synthesis (buildDefaultPageSchema) are done, and runtime draft→publish persistence already works for views/reports/dashboards via the ADR-0034 seam (packages/app-shell/src/views/runtime-metadata-persistence.ts). The PageDesigner (packages/plugin-designer/src/PageDesigner.tsx) can visually compose a component tree but its output is not persisted for record pages.
Goal
Close the write-side loop for record pages: edit a record PageSchema visually in the browser and save/publish it through the same draft/publish seam.
Scope
- Add
'page' (record PageSchema) as an artifact type to runtime-metadata-persistence.ts (persist/read/discard/publish), mirroring view/report/dashboard.
- Wire
PageDesigner output → persistRuntimeMetadata('page', ...).
- Resolve the assigned page on load (
usePageAssignment) including unpublished drafts (readRuntimeDraft).
- Round-trip: assign → edit → draft → publish → re-render via
SchemaRenderer.
Acceptance
Notes
Dashboards/reports are the working reference pattern. Pairs with #1542 (RuntimeDraftBar).
Context
Part of the SDUI runtime roadmap. The rendering engine (
SchemaRenderer+ registry) and record-detail synthesis (buildDefaultPageSchema) are done, and runtime draft→publish persistence already works for views/reports/dashboards via the ADR-0034 seam (packages/app-shell/src/views/runtime-metadata-persistence.ts). ThePageDesigner(packages/plugin-designer/src/PageDesigner.tsx) can visually compose a component tree but its output is not persisted for record pages.Goal
Close the write-side loop for record pages: edit a record
PageSchemavisually in the browser and save/publish it through the same draft/publish seam.Scope
'page'(record PageSchema) as an artifact type toruntime-metadata-persistence.ts(persist/read/discard/publish), mirroringview/report/dashboard.PageDesigneroutput →persistRuntimeMetadata('page', ...).usePageAssignment) including unpublished drafts (readRuntimeDraft).SchemaRenderer.Acceptance
Notes
Dashboards/reports are the working reference pattern. Pairs with #1542 (RuntimeDraftBar).