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
{{ message }}
Repository navigation
Commit 3907fa3
Browse filesBrowse the repository at this point in the historyBrowse files
Chart authoring reaches round-trip fidelity (widget-level datasource
attributes, LINE/SCALECOLOR object-lists, DESCRIBE reconstruction),
plus ALTER ENUMERATION caption editing, named layout placeholders
(#532), new pre-build check heuristics (MDL043/MDL032/CE6770), and a
batch of page/workflow/view-entity round-trip fixes (Bugs 1/2/10a/11/12,
#626, #746).
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Copy file name to clipboardExpand all lines: CHANGELOG.md
+22-5Lines changed: 22 additions & 5 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -6,17 +6,34 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/).
6
6
7
7
## [Unreleased]
8
8
9
-
### Fixed
9
+
##[0.16.0] - 2026-07-12
10
10
11
-
-**`DESCRIBE PAGE`/`DESCRIBE SNIPPET` of a widget-less page/snippet now re-parses (#626)** — an empty page described as `create page … ( … )` with no `{ }` body block, which the CREATE PAGE grammar rejects, so the DESCRIBE output failed to round-trip through `mxcli check`. Empty pages and snippets now emit an empty `{ }` body. Added an integration test (`TestRoundtripPage_DescribeReparses`) that actually re-parses DESCRIBE output (not just substring assertions); a full describe→check pass over the 57 `03-page-examples` pages is clean.
12
-
-**`DESCRIBE WORKFLOW` round-trips all activities as executable MDL (Bug 11b)** — on the default `modelsdk` engine, jump-to, wait-for-timer, and wait-for-notification activities (and the implicit start/end) decoded to `GenericWorkflowActivity` and rendered as non-executable `-- [Workflows$…]` comments, so `describe → exec` dropped them and their syntax couldn't be learned by describing an existing workflow. The reader now reconstructs these as typed activities (reading the jump target and timer delay from raw BSON), matching the legacy engine and the describe formatter, which already handled them. Round-trip verified: `describe → drop → exec → docker check` with zero workflow errors.
13
-
-**Containers now appear in the widget catalog** — `show widgets`, `update widgets`, and `CATALOG.widgets` queries dropped every `container` (`Forms$DivContainer` / `Pages$DivContainer`), so a `WHERE widgettype LIKE '%Container%'` filter silently matched nothing and containers couldn't be bulk-styled — even though they carry `Class` / `Style` / `DynamicClasses` / `DesignProperties` and can be clickable. The catalog now indexes user-authored containers and skips only the synthetic transparent `conditionalVisibilityWidget*` layout wrapper (matching how `DESCRIBE PAGE` already unwraps it). Other container types (LayoutGrid, TabContainer, …) were already indexed.
11
+
Headline: **Pluggable chart authoring reaches round-trip fidelity**, plus in-place enum-caption editing, named layout placeholders, and a batch of new pre-build `check` heuristics. Charts gain widget-level datasource attributes, the `LINE`/`SCALECOLOR` object-list keywords, and a `DESCRIBE` that reconstructs them as executable MDL; workflows and widget-less pages now describe cleanly; view-entity OQL is validated before build; and several authoring mistakes are caught at `mxcli check` time instead of only by MxBuild.
14
12
15
-
### Documentation
13
+
### Added
16
14
15
+
-**Chart authoring expanded — object-lists, scale colours, and `DESCRIBE` round-trip** — building on the v0.15.0 chart-series work: widget-level datasource attributes for `PieChart`/`HeatMap` (item 1b), the `LINE` and `SCALECOLOR` object-list keywords, and a `DESCRIBE` that reconstructs pluggable-widget object-lists (series / line / scalecolor) as executable MDL, so an existing chart's syntax can be learned by describing it. Validated `LineChart` / `HeatMap` / `TimeSeries` / `BubbleChart` examples now run in the regular check-mdl suite.
16
+
-**`ALTER ENUMERATION … MODIFY VALUE <name> CAPTION '…'`** — edit an enumeration value's caption in place, without dropping and recreating the value.
17
+
-**Assign widgets to named layout placeholders** (#532) — a widget can be placed into a layout's named placeholder, not only the default content slot.
18
+
-**New authoring-time `check` heuristics** — caught at `mxcli check`, before a build round-trip:
19
+
-`MDL043` — rejects an object/list-typed `declare` where a primitive variable is required.
20
+
-`MDL032` — warns on a reserved OQL word used as a view-entity attribute name.
21
+
- a derived-string view entity that MxBuild rejects with `CE6770` is now caught pre-build (reviving the OQL type-checker it depends on).
17
22
-**Workflow authoring skill (Bug 11a)** — added `.claude/skills/mendix/write-workflows.md` (synced to user projects and CLAUDE.md's "read first" list) documenting `CREATE` / `DROP` / `ALTER WORKFLOW`: the activity grammar (user task, multi-user task, decision, parallel split, jump, wait-for-timer/notification, boundary events), header options, and the two first-attempt gotchas (`PARAMETER $var: Entity`, body closes with `END WORKFLOW`). Workflow authoring already worked and built, but no skill documented it, so it read as read-only.
18
23
-**`DynamicClasses` documented across the styling surfaces** — the runtime-computed CSS-class property (a sibling of `Class`/`Style`) was wired and skill-documented but missing from every reference enumeration that lists its siblings. Added it to the `mxcli syntax page.styling` topic, `MDL_QUICK_REFERENCE.md` (styling table + ALTER PAGE `SET` properties), and the docs-site pages (`quick-reference`, `create-page`, `widget-types`, `alter-page`). Also demonstrated end-to-end in the `12-styling` doctype example (create-time, bulk `UPDATE WIDGETS`, and `ALTER PAGE ... SET DynamicClasses ON <container>`).
19
24
25
+
### Fixed
26
+
27
+
-**`DESCRIBE PAGE`/`DESCRIBE SNIPPET` of a widget-less page/snippet now re-parses (#626)** — an empty page described as `create page … ( … )` with no `{ }` body block, which the CREATE PAGE grammar rejects, so the DESCRIBE output failed to round-trip through `mxcli check`. Empty pages and snippets now emit an empty `{ }` body. Added an integration test (`TestRoundtripPage_DescribeReparses`) that actually re-parses DESCRIBE output (not just substring assertions); a full describe→check pass over the 57 `03-page-examples` pages is clean.
28
+
-**`DESCRIBE WORKFLOW` round-trips all activities as executable MDL (Bug 11b)** — on the default `modelsdk` engine, jump-to, wait-for-timer, and wait-for-notification activities (and the implicit start/end) decoded to `GenericWorkflowActivity` and rendered as non-executable `-- [Workflows$…]` comments, so `describe → exec` dropped them and their syntax couldn't be learned by describing an existing workflow. The reader now reconstructs these as typed activities (reading the jump target and timer delay from raw BSON), matching the legacy engine and the describe formatter, which already handled them. Round-trip verified: `describe → drop → exec → docker check` with zero workflow errors.
29
+
-**Containers now appear in the widget catalog** — `show widgets`, `update widgets`, and `CATALOG.widgets` queries dropped every `container` (`Forms$DivContainer` / `Pages$DivContainer`), so a `WHERE widgettype LIKE '%Container%'` filter silently matched nothing and containers couldn't be bulk-styled — even though they carry `Class` / `Style` / `DynamicClasses` / `DesignProperties` and can be clickable. The catalog now indexes user-authored containers and skips only the synthetic transparent `conditionalVisibilityWidget*` layout wrapper (matching how `DESCRIBE PAGE` already unwraps it). Other container types (LayoutGrid, TabContainer, …) were already indexed.
30
+
-**Widget action microflow parameter mappings persist (Bug 1)** — a widget action's microflow parameter mappings were dropped on write; they are now serialized and round-tripped.
31
+
-**Nanoflow client actions on widgets (Bug 2)** — the `modelsdk` engine now writes nanoflow client actions on widgets; previously only microflow actions serialized.
32
+
-**HeatMap scale colour persists via the `ColorValue` alias (Bug 10a class)** — a HeatMap's scale colour was not written; it now serializes through the `ColorValue` object-list alias.
33
+
-**`ALTER ENTITY … MODIFY ATTRIBUTE` constraints and `MOVE ENUMERATION` folder reads (Bug 12)** — the read paths for attribute constraints and an enumeration's folder are corrected so both operations round-trip.
34
+
-**View-entity OQL is read from the source document on the `modelsdk` engine (Mendix 11.x)** — so `DESCRIBE` and validation see the actual query text.
35
+
-**ELSIF arms preserved by lowering to nested `IfStmt` (#746)** — microflow expression `ELSIF` branches were dropped on round-trip; they are now retained.
36
+
20
37
## [0.15.0] - 2026-07-10
21
38
22
39
Headline: **A page-authoring fidelity wave on the `modelsdk` engine**, plus MCP pluggable-widget authoring (Phases 1–2), Playwright warm-session reuse, and new `check` heuristics for widget properties. A batch of numbered page bugs (DataView/DataGrid2/widget serialization and round-trip) are fixed, microflow round-trip gaps (#723) are closed, and several new authoring-time checks catch widget mistakes before they reach MxBuild.
0 commit comments