Skip to content

Sync ako/mxcli: per-project compose names, on error on list activities, show message type - #1447

Merged
ako merged 10 commits into
mendixlabs:mainfrom
ako:main
Oct 12, 2026
Merged

ako merged 10 commits into
mendixlabs:mainfrom
ako:main

Conversation

@ako

@ako ako commented Oct 12, 2026

Copy link
Copy Markdown
Collaborator

Syncs ako/mxcli:main into mendixlabs/mxcli:main: 5 commits since #1398, landed in the fork through PRs ako#1134–ako#1139.

Docker

  • Each project's docker stack gets its own Compose project name (mxcli docker stacks of different projects share the compose project name docker and act on each other #1364). Compose named every stack after the .docker folder, so every app was project "docker": containers and the postgres volume were shared, and a second app's docker up replaced the first's stack. New compose files carry name: "mxcli-<app folder>". The name keys the stack's data, so mxcli never renames a stack on its own, and --force keeps the name the stack already had.

Microflows

Pages

stagknee and others added 10 commits October 12, 2026 14:12
…loses mendixlabs#1364)

mxcli runs `docker compose` in <app>/.docker and Compose names a stack
after that folder, so every project was the Compose project "docker":
containers docker-db-1 / docker-mendix-1 and volume docker_postgres-data
were shared, and a second app's `docker up` replaced the first app's stack.

New compose files (template v3) carry a top-level `name: "mxcli-<app folder>"`
written by `docker init`. The name is a key to the stack's data, so mxcli
never renames a stack on its own: nothing is rewritten without --force, and
--force keeps the name the stack already had - an existing `name:`, a
COMPOSE_PROJECT_NAME from the old .env (which --force rewrites and which
beats `name:` in Compose), or, for a file written by an older mxcli with no
name, `docker` (the folder-derived name Compose was using). Existing users
opt in by editing `name:`; the init output, --help, the docker-workflow skill
and the CHANGELOG explain that this starts an empty database and leaves the
old volume in place.

No code path hardcodes container or volume names; every compose call
addresses services.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
`column (Attribute: "M"."AssocA_2"/"M"."AssocB_2"/"NId")` failed check with
MDL-WIDGET34 + MDL-WIDGET42 on mxcli 0.25.0. The cause was already fixed by
05a05aa (qualified association hops in attributePathV3); this adds the
reported shape at each layer:

- check: the issue's script verbatim through parse + widget validation
  produces neither rule; against 05a05aa^ it reproduces both messages,
  including the `&{...}` text the reporter quoted.
- builder: two qualified hops store Attribute M.AssocB.NId with two
  IndirectEntityRef steps, identical to the bare spelling (existing tests
  covered only one hop here).
- bug-test MDL; exec + mx check on 11.12.4: 0 errors.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01PJziWrQXsg6PNdBe14sQ4v
`show message … type error` was stored as Type "error". The runtime does
not recognise it and shows an Information dialog, while `mx check` reports
0 errors. The visitor copied the type word verbatim.

- sdk/microflows: CanonicalMessageType folds case to Information/Warning/Error
- visitor and writer both store the canonical spelling (quotes stripped)
- new check rule MDL-SHOWMSG01 refuses a type Mendix does not have
  (the reporter's `type ok`), in microflows and nanoflows

Verified on 11.12.4: the pre-fix binary writes Type "error", the fixed one
"Error"; `mxcli docker check` passes both, so only the stored bytes catch it.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01JaVHH6vsSH4yccVCBpPMTB
…home page (mendixlabs#1252)

An Aggregate list activity with a custom error handler, authored in Studio
Pro 11.12.3, described as a bare `$count = count($TEYAs);`, and `on error`
was a parse error on list operations, aggregates, create list, add/remove,
cast, rollback and show home page.

Every one of these is a Microflows$MicroflowAction, which declares
errorHandlingType in the Mendix Model SDK (mendixmodelsdk 4.116.0,
unbounded StructureVersionInfo). MDL077 refused the clause on list
operations and aggregates on the premise that the property was absent;
it is removed (the navigation-icon rule keeps the ID).

- grammar: onErrorClause on the eight statement rules
- visitor/AST: the clause reaches each statement node
- builder: ehType(clause) + finishCustomErrorHandler; rollback and show
  home page use explicitErrorHandling so no-clause BSON is unchanged;
  add/remove on a reference set pass it to the Change object activity
- reader/writer: ErrorHandlingType on RollbackAction and
  ShowHomePageAction, which DESCRIBE needs to walk the handler branch
- MDL076 and the nanoflow without-rollback-only rule extended from a
  matrix measured on mxbuild 11.12.3 (one document per statement x
  clause, microflow and nanoflow)

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01JNPzGjwf9HGqanBBxMrvXq
fix: give each project's docker stack its own compose project name (mendixlabs#1364)
fix: store show message type in ShowMessageType's case (mendixlabs#1280)
fix(microflow): on error on list activities, cast, rollback and show home page (mendixlabs#1252)
test: pin multi-hop qualified datagrid column path (mendixlabs#1379)
`describe snippet` printed a data view sourced from a snippet parameter
with no DataSource. parseContextSource read only SourceVariable.PageParameter;
inside a snippet the name is stored in the SnippetParameter slot. The
association-source and pluggable readers already fell back to it.

Re-executing the old describe output on Mendix 11.12.4 stored
SourceVariable: null and mx check failed CE0488 "No entity configured for
the data source of this data view". With the fix the output describes as
`DataSource: $Parent`, re-exec reports "Unchanged snippet", and mx check
reports 0 errors.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01PJziWrQXsg6PNdBe14sQ4v
fix(describe): read a data view's snippet-parameter source (#1138)
@ako
ako merged commit 1edcbd1 into mendixlabs:main Oct 12, 2026
13 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants