Skip to content

[retro 2026-10-12] Atlas / Datagrid 2 / watch-mode traps that cost fix rounds in all three apps #282

Closed

Description

@MendixMau

Info for research (no PR requested)

Pattern: the Atlas / Datagrid 2 / watch-mode traps below each cost one or more fix rounds in at least one of three apps. Most are one-line facts a skill could hold.

Evidence (2026-10-12/13)

  • A --watch run that sees an SCSS edit drops deployment/web/dist/pages, so every page returns 404 until restart. Hit in 3 tasks of one app and 2 of another, plus one crash during a base e2e run. Counts: 15 NEEDS_RESTART events across the three lanes' ledger.
  • New calculated attributes added while the app runs read empty until restart (4 attributes blank in one screenshot).
  • Datagrid 2: rows are display: contents, so an outline on a row draws nothing, and scrollIntoView on a row scrolls nothing (hit 3 times in two film takes; paint or scroll the first cell). A listview inside a column shows its own "Load more" and "No items found". Columns whose content walks 2 or more associations write a null attribute reference. A manual column width stored in the model did not change the rendered grid template. Setting a width through ALTER PAGE on an existing column gave CE0463. A right-aligned column aligns only its header unless the value is wrapped in a container. A sort arrow on a right-aligned header lands at the cell's far left.
  • Atlas text inputs are flex items: a width is ignored, even with !important, unless flex: 0 0 auto is set.
  • A dynamic text cannot carry an inline Style (crashes the build); wrap it in a container.
  • A snippet's top-level text has no context object; wrap it in a dataview on the parameter.
  • Trial licence session cap: scripts and retry loops that log in without logging out make later logins hang (HTTP 560). 2 of 3 apps; one incident left 6 shells hung for 3 to 7 hours.
  • Reported by one session, not independently verified here: some Atlas spacing classes render nothing, so a 48px gap came from stacked layout-grid padding plus a spacing class.

What worked: a DOM probe per screenshot (focused element, outline, scroll width, grid template) found most of these in one pass; recording the cause in FINDINGS the same day.

What to research: a "known widget traps" skill, loaded for any page task, keyed by widget; a runner helper that logs out in a finally block; mxcli run --watch either rebuilding dist on SCSS change or warning.

🤖 Generated with Claude Code

Activity

  1. MendixMau commented on Oct 19, 2026

    @MendixMau
    OwnerAuthor

    Status after 1.0 (v2026.10.19): the Datagrid 2 and Atlas input traps are now lint rule UI001 (#305). Still open: confirming the SCSS and watch-mode facts all sit in a skill.

  2. AlvinnYeo commented on Oct 22, 2026

    @AlvinnYeo

    One more trap for this list, from a Nova-themed app (Mendix 11.14, Atlas Core 4.5, File Uploader widget 2.5.0):

    The Nova theme's css-mappings.scss sets the file uploader's icon variables to images under /resources/images/:

    --file-icon:          url("/resources/images/IconCmdUpload.svg");
    --file-warning-icon:  url("/resources/images/cmdCaution16.svg");
    --file-remove-icon:   url("/resources/images/cmdClose12.svg");

    Nothing ships those three files: not Nova's own public/images, not Atlas Core, not the File Uploader .mpk (its assets are named file-icon.svg, remove-icon.svg and so on). The uploader therefore
    renders with blank icon slots, and the browser logs three 404s. No build step, lint or design-audit rung notices,
    because the CSS compiles and the widget renders.

    Fix we used: put SVGs taken from the uploader widget's own assets into the app's
    theme/web/resources/images/ under the three names Nova expects. Overriding the three variables in the app's own
    theme file to point at shipped images works too.

    Two possible toolkit follow-ups, for whoever picks this list up:

    1. A line in the widget-traps skill: "Nova theme: uploader icons 404 unless theme/web/resources/images/ holds
      IconCmdUpload.svg, cmdCaution16.svg and cmdClose12.svg."
    2. More generally, check-design-reaches-app.sh (or the design audit) could resolve every url(/resources/…) in
      the compiled theme CSS against what the app serves and list the ones that 404. That catches this class of
      defect for any theme.
  3. MendixMau commented on Oct 26, 2026

    @MendixMau
    OwnerAuthor

    The last two unpromoted traps landed in #578 (squash a088b4e):

    • snippet top-level text has no context object (learned-page-patterns);
    • Nova points the File Uploader icons at images nothing ships (learned-file-upload-widget).

    The rest was already covered.


    Generated by Claude Code

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

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions