Skip to content

describe layout drops the scroll container's LayoutMode and create layout cannot write it: a describe-and-copy of Atlas_SideBar becomes a Headline layout (LayoutMode: silently ignored; check/exec/mx check pass) #1659

Open

Description

@MohamedElNady

mxcli v0.28.0 (2026-10-23) · Mendix 11.14.0 (blank app, Atlas_Core as shipped) · Windows Server 2025

Summary

A responsive layout's scroll container has a LayoutMode (Forms$ScrollContainer.LayoutMode: Headline or
Sidebar). It decides the frame: in Sidebar mode the left region runs the full height and the top bar sits beside
it; in Headline mode the top bar runs the full width and the left region starts under it. Atlas_SideBar and
Atlas_TopBar are stored as Sidebar, Atlas_Default as Headline.

describe layout does not print it, and create layout has no way to write it, so the documented way to copy an Atlas
layout ("describe it, rename it, run it" - mxcli syntax layout.show) turns Atlas_SideBar into a Headline
layout. Writing (LayoutMode: 'Sidebar') on the scroll container passes check and exec and is silently dropped.
mx check reports 0 errors either way: the copy simply renders a different frame.

Minimal repro

  1. mxcli -p Repro.mpr -c "describe layout Atlas_Core.Atlas_SideBar" - the scroll container line is printed bare:
create or modify layout Atlas_Core.Atlas_SideBar (
  layouttype: 'Responsive',
  class: 'layout-atlas layout-atlas-responsive-sidebar'
) {
  scrollcontainer layoutContainer {
    region top (Size: 48, Class: 'border-bottom') {
  ...
  1. Rename to ModL.Copy_SideBar, prefix create module ModL;, check (passes) and exec (passes).
  2. Variant: the same with scrollcontainer layoutContainer (LayoutMode: 'Sidebar') { as ModL.Copy_SideBar2 -
    check passes, exec passes.

Expected

describe prints the mode when it is not the default, and create writes it, e.g.

scrollcontainer layoutContainer (LayoutMode: Sidebar) {

and an unknown or unsupported scroll-container property is refused by check rather than dropped.

Actual (read back with a BSON dump of each unit)

Layout LayoutMode stored
Atlas_Core.Atlas_SideBar (original) Sidebar
Atlas_Core.Atlas_TopBar (original) Sidebar
Atlas_Core.Atlas_Default (original) Headline
ModL.Copy_SideBar (describe → create) Headline
ModL.Copy_SideBar2 (with LayoutMode: 'Sidebar' written) Headline

mx check Repro.mpr: 0 errors after both.

What narrows it down

Suggestions

  1. Print LayoutMode in describe layout when it is Sidebar, and accept it in create [or modify] layout.
  2. Make check refuse a property the scroll container does not support (the textbox Caption: case, textbox Caption: passes check and exec and is silently not written (inputs take Label:); check has no "property this widget does not have" warning #1651, is the
    same class of silent drop).

Workaround we use

None needed for the layout we built - EWO's own shell wanted the full-width top bar of Headline mode (it is what the
product's prototype draws) - but the copy had to be compared with the original unit by unit to notice, because nothing
reports the difference. A team that copies Atlas_SideBar to drop its feedback widget gets a different frame and
Atlas's sidebar CSS positioned for the other one.

Session log (isolated HOME; local path replaced by <repro>)
{"time":"2026-10-26T00:18:12.1592081+03:00","level":"INFO","msg":"session_start","version":"v0.28.0","go":"go1.27.3","os":"windows","arch":"amd64","mode":"batch","args":["C:\\Tools\\mxcli.exe","-p","Repro.mpr","-c","describe layout Atlas_Core.Atlas_SideBar"],"pid":20364,"parent_pid":""}
{"time":"2026-10-26T00:18:12.1947129+03:00","level":"INFO","msg":"connect","mpr_path":"Repro.mpr","mendix_version":"11.14.0","mpr_format":2}
{"time":"2026-10-26T00:18:12.1947129+03:00","level":"INFO","msg":"execute","stmt_type":"ConnectStmt","stmt_summary":"connect local 'Repro.mpr'","duration_ms":1}
{"time":"2026-10-26T00:18:12.349757+03:00","level":"INFO","msg":"execute","stmt_type":"DescribeStmt","stmt_summary":"describe LAYOUT Atlas_Core.Atlas_SideBar","duration_ms":136}
{"time":"2026-10-26T00:18:12.3514985+03:00","level":"INFO","msg":"session_end","commands_executed":2,"errors_count":0,"duration_s":0,"pid":20364}
{"time":"2026-10-26T00:18:12.9219636+03:00","level":"INFO","msg":"session_start","version":"v0.28.0","go":"go1.27.3","os":"windows","arch":"amd64","mode":"mxcli check","args":["C:\\Tools\\mxcli.exe","check","<repro>/scripts/ewo_lm1.mdl","-p","Repro.mpr"],"pid":68744,"parent_pid":""}
{"time":"2026-10-26T00:18:14.786389+03:00","level":"INFO","msg":"connect","mpr_path":"Repro.mpr","mendix_version":"11.14.0","mpr_format":2}
{"time":"2026-10-26T00:18:14.7867102+03:00","level":"INFO","msg":"execute","stmt_type":"ConnectStmt","stmt_summary":"connect local 'Repro.mpr'","duration_ms":1}
{"time":"2026-10-26T00:18:15.0947422+03:00","level":"INFO","msg":"session_end","commands_executed":1,"errors_count":0,"duration_s":2,"pid":68744}
{"time":"2026-10-26T00:18:15.672257+03:00","level":"INFO","msg":"session_start","version":"v0.28.0","go":"go1.27.3","os":"windows","arch":"amd64","mode":"mxcli exec","args":["C:\\Tools\\mxcli.exe","exec","<repro>/scripts/ewo_lm1.mdl","-p","Repro.mpr"],"pid":45312,"parent_pid":""}
{"time":"2026-10-26T00:18:15.7179225+03:00","level":"INFO","msg":"connect","mpr_path":"Repro.mpr","mendix_version":"11.14.0","mpr_format":2}
{"time":"2026-10-26T00:18:15.7179225+03:00","level":"INFO","msg":"execute","stmt_type":"ConnectStmt","stmt_summary":"connect local 'Repro.mpr'","duration_ms":1}
{"time":"2026-10-26T00:18:16.2888978+03:00","level":"INFO","msg":"execute","stmt_type":"CreateModuleStmt","stmt_summary":"create module ModL","duration_ms":116}
{"time":"2026-10-26T00:18:16.4610428+03:00","level":"INFO","msg":"execute","stmt_type":"CreateLayoutStmt","stmt_summary":"create layout ModL.Copy_SideBar","duration_ms":172}
{"time":"2026-10-26T00:18:16.4682663+03:00","level":"INFO","msg":"session_end","commands_executed":3,"errors_count":0,"duration_s":0,"pid":45312}
{"time":"2026-10-26T00:18:26.5108826+03:00","level":"INFO","msg":"session_start","version":"v0.28.0","go":"go1.27.3","os":"windows","arch":"amd64","mode":"batch","args":["C:\\Tools\\mxcli.exe","-p","Repro.mpr","-c","describe layout ModL.Copy_SideBar"],"pid":37472,"parent_pid":""}
{"time":"2026-10-26T00:18:26.5509701+03:00","level":"INFO","msg":"connect","mpr_path":"Repro.mpr","mendix_version":"11.14.0","mpr_format":2}
{"time":"2026-10-26T00:18:26.5509701+03:00","level":"INFO","msg":"execute","stmt_type":"ConnectStmt","stmt_summary":"connect local 'Repro.mpr'","duration_ms":1}
{"time":"2026-10-26T00:18:26.6082695+03:00","level":"INFO","msg":"execute","stmt_type":"DescribeStmt","stmt_summary":"describe LAYOUT ModL.Copy_SideBar","duration_ms":39}
{"time":"2026-10-26T00:18:26.6086628+03:00","level":"INFO","msg":"session_end","commands_executed":2,"errors_count":0,"duration_s":0,"pid":37472}
{"time":"2026-10-26T00:18:27.1885964+03:00","level":"INFO","msg":"session_start","version":"v0.28.0","go":"go1.27.3","os":"windows","arch":"amd64","mode":"batch","args":["C:\\Tools\\mxcli.exe","-p","Repro.mpr","-c","describe layout Atlas_Core.Atlas_SideBar"],"pid":59344,"parent_pid":""}
{"time":"2026-10-26T00:18:27.2303497+03:00","level":"INFO","msg":"connect","mpr_path":"Repro.mpr","mendix_version":"11.14.0","mpr_format":2}
{"time":"2026-10-26T00:18:27.2306874+03:00","level":"INFO","msg":"execute","stmt_type":"ConnectStmt","stmt_summary":"connect local 'Repro.mpr'","duration_ms":2}
{"time":"2026-10-26T00:18:27.2790211+03:00","level":"INFO","msg":"execute","stmt_type":"DescribeStmt","stmt_summary":"describe LAYOUT Atlas_Core.Atlas_SideBar","duration_ms":33}
{"time":"2026-10-26T00:18:27.2796494+03:00","level":"INFO","msg":"session_end","commands_executed":2,"errors_count":0,"duration_s":0,"pid":59344}
{"time":"2026-10-26T00:18:28.3584269+03:00","level":"INFO","msg":"session_start","version":"v0.28.0","go":"go1.27.3","os":"windows","arch":"amd64","mode":"mxcli check","args":["C:\\Tools\\mxcli.exe","check","<repro>/scripts/ewo_lm2.mdl","-p","Repro.mpr"],"pid":26180,"parent_pid":""}
{"time":"2026-10-26T00:18:28.5934173+03:00","level":"INFO","msg":"connect","mpr_path":"Repro.mpr","mendix_version":"11.14.0","mpr_format":2}
{"time":"2026-10-26T00:18:28.5941388+03:00","level":"INFO","msg":"execute","stmt_type":"ConnectStmt","stmt_summary":"connect local 'Repro.mpr'","duration_ms":1}
{"time":"2026-10-26T00:18:28.9625735+03:00","level":"INFO","msg":"session_end","commands_executed":1,"errors_count":0,"duration_s":0,"pid":26180}
{"time":"2026-10-26T00:18:29.5621955+03:00","level":"INFO","msg":"session_start","version":"v0.28.0","go":"go1.27.3","os":"windows","arch":"amd64","mode":"mxcli exec","args":["C:\\Tools\\mxcli.exe","exec","<repro>/scripts/ewo_lm2.mdl","-p","Repro.mpr"],"pid":18568,"parent_pid":""}
{"time":"2026-10-26T00:18:29.6023631+03:00","level":"INFO","msg":"connect","mpr_path":"Repro.mpr","mendix_version":"11.14.0","mpr_format":2}
{"time":"2026-10-26T00:18:29.6023631+03:00","level":"INFO","msg":"execute","stmt_type":"ConnectStmt","stmt_summary":"connect local 'Repro.mpr'","duration_ms":1}
{"time":"2026-10-26T00:18:30.2268648+03:00","level":"INFO","msg":"execute","stmt_type":"CreateLayoutStmt","stmt_summary":"create layout ModL.Copy_SideBar2","duration_ms":179}
{"time":"2026-10-26T00:18:30.2311656+03:00","level":"INFO","msg":"session_end","commands_executed":2,"errors_count":0,"duration_s":0,"pid":18568}

Activity

  1. added a commit that references this issue on Oct 26, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions