You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Replace the current three-system metadata layer (TS-derived reflection data,
hand-maintained supplements.json, embedded widget templates) with a single Schema Registry sourced empirically from mx dump-mpr (platform schemas)
and .mpk XML (widget schemas). Drives serialization, validation, inspection,
keyword dispatch, LSP, skills generation, and migration tooling end-to-end.
Confusion: Today DATAGRID always picks the native builder, regardless
of project version. On Mendix 11+ users want the pluggable variant.
Stale data: TS reflection is frozen at 11.6; supplements.json is
hand-maintained; embedded widget templates are one-version snapshots.
Lost expressiveness: Widgets with object-list properties (Accordion groups, PopupMenu items, AreaChart series) are non-functional via the
current pluggable engine.
No version awareness: A script that writes valid BSON for 10.24 silently
produces wrong BSON for 11.9.
Phases
Phase 1 — mxcli schema extract platform
Wraps mx dump-mpr against blank .mpr per Mendix version
Outputs {version}-platform.json (types, storage names, list encodings,
ref kinds, defaults, System module)
Embed ~15 LTS/MTS versions; downloadable for the rest
Validate by structural diff vs current reference/mendixmodellib/reflection-data/
Phase 2 — mxcli schema extract widgets
Parse .mpk ZIP + {Widget}.xml into full property tree
Capture object-list sub-property trees
Cache at ~/.mxcli/widget-schemas/{widgetId}@{version}.json
Drop sdk/widgets/templates/, sdk/widgets/augment.go, .mxcli/widgets/*.def.json
Summary
Replace the current three-system metadata layer (TS-derived reflection data,
hand-maintained
supplements.json, embedded widget templates) with a singleSchema Registry sourced empirically from
mx dump-mpr(platform schemas)and
.mpkXML (widget schemas). Drives serialization, validation, inspection,keyword dispatch, LSP, skills generation, and migration tooling end-to-end.
Full design:
docs/11-proposals/UNIFIED_SCHEMA_REGISTRY.mdSupersedes #335 (kept for context).
Motivation
DATAGRIDalways picks the native builder, regardlessof project version. On Mendix 11+ users want the pluggable variant.
supplements.jsonishand-maintained; embedded widget templates are one-version snapshots.
groups, PopupMenu items, AreaChartseries) are non-functional via thecurrent pluggable engine.
produces wrong BSON for 11.9.
Phases
Phase 1 —
mxcli schema extract platformmx dump-mpragainst blank.mprper Mendix version{version}-platform.json(types, storage names, list encodings,ref kinds, defaults, System module)
reference/mendixmodellib/reflection-data/Phase 2 —
mxcli schema extract widgets.mpkZIP +{Widget}.xmlinto full property tree~/.mxcli/widget-schemas/{widgetId}@{version}.jsonsdk/widgets/templates/,sdk/widgets/augment.go,.mxcli/widgets/*.def.jsonPhase 3 — Registry runtime (
mdl/backend/schema/)Registry,TypeSchema,PropertySchema,WidgetSchema,KeywordMappingsupplements.json,reference/mendixmodellib/reflection-data/,sdk/mpr/system_module.gomxcli schema list/show/diffschema_types,schema_properties,schema_keywordsPhase 4 — Native/pluggable dispatch + object lists
case \"datagrid\"etc. withRegistry.LookupKeyword(kw, version)(
group,item,series,markerfrom widget schema)Phase 5 — Workflow integration
mxcli initruns Phases 1+2 extractionrefresh catalogre-runs Phase 2 on.mpkchangesmxcli checkvalidates property bindings, version compatibility, BSON driftmxcli check --post-migration,mxcli upgrade pages,mxcli upgrade widgetsmxcli syntaxtopics gain "see also: `schema show `" linksAcceptance criteria
DATAGRIDBSON on Mendix 10.24 and pluggableDatagridBSON on 11.9, both opening cleanly in Studio Pro.group, PopupMenuitem, Mapsmarkerall work via MDL.mxcli checkrejects writes that target properties unavailable in the project'sMendix version, with actionable hints.
mxcli widget upgrade <widget>auto-fixes additive-safe drift, flags everything else.sdk/mpr/writer paths consumeRegistry; no subsystem reads reflection-dataor supplements.json directly.
Non-goals
Risks
mx dump-mprJSON format stability across Mendix versions🤖 Generated with Claude Code