Summary
MDL designproperties: can only express flat design properties — a key with a single value (option/dropdown string, or toggle boolean). It cannot express a compound design property: one whose value is itself a set of sub-properties (e.g. Atlas's Spacing, which Studio Pro stores as compound:Spacing → {option:margin-top: 'L', option:margin-bottom: 'M', …}).
A compound property written in MDL is silently not emitted.
Scope (stack-wide, not backend-specific)
This isn't an MCP or file-backend bug — both are at parity. Adding support requires changes across the stack:
- MDL grammar/AST — syntax for nesting, e.g.
designproperties: ['Spacing': ['margin-top': 'L', 'margin-bottom': 'M']] (ast.DesignPropertyEntryV3 is currently a flat key-value).
- SDK type —
sdk/pages.DesignPropertyValue{Key, ValueType, Option} is flat; needs a compound/nested variant (ValueType currently ∈ toggle/option/custom).
- File (MPR) backend —
sdk/mpr/writer_widgets.go serializeDesignProperties emits only Forms$Toggle/Option/Custom/DesignPropertyValue; needs Forms$CompoundDesignPropertyValue (confirm the exact $Type + structure with an on-disk BSON capture of a Studio-Pro-set compound property).
- MCP backend —
mdl/backend/mcp designPropertiesMap needs to emit the compound: object form (the pg_write_page shape is already known: "compound:Spacing": {"option:margin-top": "L"}, captured in mdl/backend/mcp/testdata/pg-page-contact-newedit-designprops.json).
Workaround (today)
Set compound design properties in Studio Pro directly, or use style: (raw CSS) / class: (Atlas utility classes).
Priority
Low/medium — flat properties cover most cases; compound (grouped Spacing, per-device settings) is used in richer Atlas theming. No regression: this has never worked through either backend.
Notes
- Surfaced during the MCP page-design-property fix; the
pg_read_page capture revealed the compound:/nested shape.
- Known-limitation documented in the
theme-styling skill.
Summary
MDL
designproperties:can only express flat design properties — a key with a single value (option/dropdown string, or toggle boolean). It cannot express a compound design property: one whose value is itself a set of sub-properties (e.g. Atlas'sSpacing, which Studio Pro stores ascompound:Spacing → {option:margin-top: 'L', option:margin-bottom: 'M', …}).A compound property written in MDL is silently not emitted.
Scope (stack-wide, not backend-specific)
This isn't an MCP or file-backend bug — both are at parity. Adding support requires changes across the stack:
designproperties: ['Spacing': ['margin-top': 'L', 'margin-bottom': 'M']](ast.DesignPropertyEntryV3is currently a flat key-value).sdk/pages.DesignPropertyValue{Key, ValueType, Option}is flat; needs a compound/nested variant (ValueTypecurrently ∈ toggle/option/custom).sdk/mpr/writer_widgets.goserializeDesignPropertiesemits onlyForms$Toggle/Option/Custom/DesignPropertyValue; needsForms$CompoundDesignPropertyValue(confirm the exact$Type+ structure with an on-disk BSON capture of a Studio-Pro-set compound property).mdl/backend/mcpdesignPropertiesMapneeds to emit thecompound:object form (thepg_write_pageshape is already known:"compound:Spacing": {"option:margin-top": "L"}, captured inmdl/backend/mcp/testdata/pg-page-contact-newedit-designprops.json).Workaround (today)
Set compound design properties in Studio Pro directly, or use
style:(raw CSS) /class:(Atlas utility classes).Priority
Low/medium — flat properties cover most cases; compound (grouped Spacing, per-device settings) is used in richer Atlas theming. No regression: this has never worked through either backend.
Notes
pg_read_pagecapture revealed thecompound:/nested shape.theme-stylingskill.