Repository navigation
Tab page CaptionParams and Visible: pass check and exec, then are silently not written #1465
Description
Summary
On a tabpage, CaptionParams: (...) and Visible: <expression> are accepted by check -p --references and by exec, with no MDL-WIDGET07 warning. Neither is stored. The caption is written as literal text (the tab shows Due · {1}), and the tab page gets no conditional visibility. mxbuild then builds clean, so nothing tells the user that anything was lost. We found it only by reading the unit back after exec.
Visible: on a container in the same script was stored correctly.
Environment
- mxcli v0.25.0 (2026-10-05), macOS arm64
- Mendix 11.14.0 Beta project, MPR v2, Classic (Dojo) web client, security level Production
- Not re-run on v0.26.0 or the 2026-10-13 nightly. We read both release notes and found no matching fix (v0.26.0 fixes the tab container's default tab and inserting a tab page with
alter page, ALTER PAGE cannot add a tab page to an existing tab container — INSERT AFTER <tabpage> and INSERT INTO <tabcontainer> both fail "tabpage must be a direct child of tabcontainer" #1215, but nothing about these two properties). mxcli diag --bundleis not attached because the project is a customer app. We can share session-log lines on request.
Steps to reproduce
The minimal script below is reduced from the field script and passes mxcli check (grammar only). We have not yet run this exact script end to end on a blank project.
mdl 1;
create module MyModule;
create persistent entity MyModule.PortalSummary (DueCount: Integer, ShowTabB: Boolean);
create page MyModule.Portal (
Params: ($Summary: MyModule.PortalSummary),
Title: 'Portal',
Layout: Atlas_Core.Atlas_Default
) {
dataview dvSummary (DataSource: $Summary) {
tabcontainer tabs1 {
tabpage tpA (Caption: 'Due · {1}', CaptionParams: ({1} = DueCount)) {
dynamictext txtA (Content: 'Tab A')
}
tabpage tpB (Caption: 'Tab B', Visible: $currentObject/ShowTabB) {
dynamictext txtB (Content: 'Tab B')
}
}
}
};
mxcli check script.mdl -p App.mpr --referencesmxcli exec script.mdl -p App.mprmxcli -p App.mpr -c "describe page MyModule.Portal", and/or read the page unit's BSON.mx check App.mpr
Expected
One of:
- both properties are written (caption parameters bound, tab page visibility set), or
checkrefuses the ones mxcli cannot write (MDL-WIDGET07 or similar), so the user knows before exec.
Hypothesis, not checked against the metamodel: a tab page's caption may be plain translatable text with no parameters in Mendix (the badge is the templated part). If so, CaptionParams should be refused rather than written.
Actual
checkandexecpass with no warning;mx checkreports 0 errors.- The stored caption is the literal
Due · {1}, and the running app shows it that way. - Tab page
tpBhas noConditionalVisibilitySettings: the attribute nameShowTabBoccurs 0 times in the page unit. The tab is always shown.
Workaround used
Plain captions with the count shown as a line inside each tab. The flag-dependent content moved out of the tab into a container (Visible: $currentObject/ShowTabB), which is stored correctly.
Suggested fix
Write Visible: on tab pages the same way as on containers. For CaptionParams, write it if the metamodel allows it, otherwise refuse it in check. More generally, any property the parser accepts on a widget but the builder does not write should raise MDL-WIDGET07.
Activity
github-actions commentedon Oct 13, 2026
Issue Triage
Summary:
The issue reports that
CaptionParamsandVisibleproperties on atabpageare accepted bymxcli checkandexecbut are not written to the MPR, causing silent data loss.Checklist of required bug‑report information
mxcli v0.25.0 (2026-10-05), macOS arm64Mendix 11.14.0 Beta projectCaptionParamsandVisibleon tabpages; steps to reproduce viacheck,exec,describecheckshould refuse them with an MDL‑WIDGET07 warningcheckandexecpass with no warning; stored caption is literal text (Due · {1}); tab page lacks conditional visibility;mx checkreports 0 errorsdiag --bundle)Missing information
Please provide at least the relevant session‑log output (or run
mxcli diag --bundleand attach the bundle if possible) so we can see exactly what mxcli did during thecheckandexecsteps.Once the log is shared, we’ll be able to investigate further. Thank you for the detailed report!
Automated triage via OpenRouter — workflow source
fix(pages): write a tab page's Visible:, refuse what it cannot store (m…
Merge pull request #1197 from ako/fix/1465-tabpage-visible
fix(pages): renumber the file manager context rule to MDL-WIDGET45 (m…
fix(pages): write a tab page's Visible:, refuse what it cannot store (#…
fix: describe keeps statements after an if, and loop bodies, inside a…