Repository navigation
Description
mxcli v0.28.0 (2026-10-23) · Mendix 11.14.0 (blank repro project) — first hit in an 11.15.0 app · OS Windows Server 2025
Summary
A navigation profile's application title (Studio Pro: Navigation → profile → Application title; stored as
Navigation$NavigationProfile.AppTitle, a Texts$Text whose default en_US text in a new project is Mendix) has no MDL
form. The runtime shows it in the browser tab as Mendix - <page title>, so every generated app keeps "Mendix" in the tab
unless someone opens Studio Pro. describe navigation does not print it, three natural spellings fail to parse, and the
translations statement cannot reach it in the source language (it refuses en_US by design). The profile's
application icon (AppIcon, an image reference, Atlas_Core.Content.Mendix by default) is likewise not described and has
no clause.
Minimal repro
Blank project, unchanged navigation:
-- spelling 1
CREATE OR MODIFY NAVIGATION Responsive APP TITLE 'EWO' HOME PAGE MyFirstModule.Home_Web;
-- spelling 2
CREATE OR MODIFY NAVIGATION Responsive TITLE 'EWO' HOME PAGE MyFirstModule.Home_Web;
-- spelling 3 (the stored property name)
CREATE OR MODIFY NAVIGATION Responsive AppTitle: 'EWO' HOME PAGE MyFirstModule.Home_Web;
-- the translations route, source language
CREATE OR MODIFY TRANSLATIONS WITHOUT MARKETPLACE FOR en_US ( 'Mendix' AS 'EWO' );(each statement was run on its own, in a freshly reset project)
Expected
describe navigation Responsive prints the title (and the icon), and some clause writes them, so a describe → exec round trip
keeps them. Studio Pro stores (read from the blank project's navigation unit):
profile Responsive Navigation$NavigationProfile
AppTitle:
$Type: 'Texts$Text'
Items:
0: 3
1:
$Type: 'Texts$Translation'
LanguageCode: 'en_US'
Text: 'Mendix'
AppIcon:
'Atlas_Core.Content.Mendix'
Actual
$ mxcli -p Repro.mpr -c "describe navigation Responsive"
create or modify navigation Responsive
home page MyFirstModule.Home_Web
{
menu item 'Home' ( OnClick: show page MyFirstModule.Home_Web with (DisabledDuringExecution: false), Icon: glyph 57377 )
};
$ mxcli check <repro>/scripts/ewo_apptitle_a.mdl -p Repro.mpr
- line 2:39 extraneous input 'APP' expecting the start of a statement (create, alter, drop, show, describe, …)
$ mxcli check <repro>/scripts/ewo_apptitle_b.mdl -p Repro.mpr
- line 2:39 extraneous input 'TITLE' expecting the start of a statement (create, alter, drop, show, describe, …)
'Title' is a keyword in MDL. Quote it to use it as a name …
$ mxcli check <repro>/scripts/ewo_apptitle_c.mdl -p Repro.mpr
- line 2:47 no viable alternative at input 'AppTitle:'
$ mxcli exec <repro>/scripts/ewo_apptitle_tr1.mdl -p Repro.mpr
Error: en_US is the project's source language — writing translations into it would overwrite the strings the rest of the model is keyed on
(the same refusal without WITHOUT MARKETPLACE; mx check passes throughout — nothing is written)
What narrows it down
| Variant | Result |
|---|---|
describe navigation |
home page and menu only; no title, no icon |
APP TITLE 'x' |
parse error at APP |
TITLE 'x' |
parse error at TITLE (keyword hint) |
AppTitle: 'x' |
parse error at AppTitle: |
translations for en_US ('Mendix' as 'x') (source language), with or without without marketplace |
refused: source language |
translations for nl_NL ('Mendix' as 'x') (another language) |
writes AppTitle's nl_NL item and Atlas_Core's layout text Mendix (warns: 1 Marketplace document) |
translations without marketplace for nl_NL ('Mendix' as 'x') |
writes only AppTitle's nl_NL item in this blank project — but it is keyed on the text, so any own-module string Mendix changes too, and the default (source-language) title stays Mendix |
So a second language can be reached indirectly, keyed on a string that is not unique to the title; the source-language title,
which is what most apps show, cannot be set at all.
Suggestions
- A navigation-profile clause, e.g.
create or modify navigation Responsive app title 'EWO' app icon MyModule.Images.Logo home page …,
writing the source-language item ofAppTitle(as captions are written in the project's language, Captions written via MDL always land as en_US — breaks projects whose only/default language isn't en_US #970), anddescribe navigationprinting both back. A property-styleAppTitle: 'EWO'would fit equally well if the grammar prefers it. - Translations of the title through the existing
create or modify translations … for <lang>keyed on the new source text
(that already works once the source text is no longer the shared wordMendix). - Until then,
describe navigationcould print the title and icon as comments so the gap is visible.
Workaround we use
The shell's start-up JavaScript action rewrites a document.title that starts with Mendix to the app name (a few lines
plus a MutationObserver on <head>). It works, but it is runtime code standing in for one model property, and until the
action has run the tab still reads Mendix. Our second language (Arabic) gets its own title through the translations route
above. The alternative is setting the English title by hand in Studio Pro after every regeneration.
Session log (isolated HOME, paths redacted)
{"time":"2026-10-27T23:58:16.0331936+03:00","level":"INFO","msg":"session_start","version":"v0.28.0","go":"go1.27.3","os":"windows","arch":"amd64","mode":"batch","args":["mxcli","-p","Repro.mpr","-c","describe navigation Responsive"]}
{"time":"2026-10-27T23:58:16.0817477+03:00","level":"INFO","msg":"connect","mpr_path":"Repro.mpr","mendix_version":"11.14.0","mpr_format":2}
{"time":"2026-10-27T23:58:16.263839+03:00","level":"INFO","msg":"execute","stmt_type":"DescribeStmt","stmt_summary":"describe NAVIGATION Responsive","duration_ms":160}
{"time":"2026-10-27T23:58:16.2662717+03:00","level":"INFO","msg":"session_end","commands_executed":2,"errors_count":0,"duration_s":0}
{"time":"2026-10-27T23:58:17.1663807+03:00","level":"INFO","msg":"session_start","version":"v0.28.0","mode":"mxcli check","args":["mxcli","check","<repro>/scripts/ewo_apptitle_a.mdl","-p","Repro.mpr"]}
{"time":"2026-10-27T23:58:17.8270646+03:00","level":"INFO","msg":"session_start","version":"v0.28.0","mode":"mxcli check","args":["mxcli","check","<repro>/scripts/ewo_apptitle_b.mdl","-p","Repro.mpr"]}
{"time":"2026-10-27T23:58:18.5153425+03:00","level":"INFO","msg":"session_start","version":"v0.28.0","mode":"mxcli check","args":["mxcli","check","<repro>/scripts/ewo_apptitle_c.mdl","-p","Repro.mpr"]}
{"time":"2026-10-27T23:58:20.0039068+03:00","level":"INFO","msg":"session_start","version":"v0.28.0","mode":"mxcli exec","args":["mxcli","exec","<repro>/scripts/ewo_apptitle_tr1.mdl","-p","Repro.mpr"]}
{"time":"2026-10-27T23:58:22.1286811+03:00","level":"ERROR","msg":"execute_error","stmt_type":"CreateTranslationsStmt","error":"en_US is the project's source language — writing translations into it would overwrite the strings the rest of the model is keyed on","duration_ms":5}
{"time":"2026-10-27T23:58:23.6680192+03:00","level":"INFO","msg":"session_start","version":"v0.28.0","mode":"mxcli exec","args":["mxcli","exec","<repro>/scripts/ewo_apptitle_tr2.mdl","-p","Repro.mpr"]}
{"time":"2026-10-27T23:58:25.9394106+03:00","level":"ERROR","msg":"execute_error","stmt_type":"CreateTranslationsStmt","error":"en_US is the project's source language — writing translations into it would overwrite the strings the rest of the model is keyed on","duration_ms":0}
{"time":"2026-10-27T23:58:28.6931315+03:00","level":"INFO","msg":"session_start","version":"v0.28.0","mode":"mxcli exec","args":["mxcli","exec","<repro>/scripts/ewo_apptitle_tr3.mdl","-p","Repro.mpr"]}
{"time":"2026-10-27T23:58:31.5470323+03:00","level":"INFO","msg":"execute","stmt_type":"CreateTranslationsStmt","stmt_summary":"CreateTranslationsStmt","duration_ms":728}
{"time":"2026-10-27T23:58:33.3512621+03:00","level":"INFO","msg":"session_start","version":"v0.28.0","mode":"mxcli exec","args":["mxcli","exec","<repro>/scripts/ewo_apptitle_tr4.mdl","-p","Repro.mpr"]}
{"time":"2026-10-27T23:58:36.1432059+03:00","level":"INFO","msg":"execute","stmt_type":"CreateTranslationsStmt","stmt_summary":"CreateTranslationsStmt","duration_ms":434}
Lines abridged (connect / session_end lines and pids trimmed); the check runs stop at the parser, so they log no statement.
Activity
fix(navigation): app title and app icon clauses for a navigation profile
chore(navigation): changelog entry and finding for app title and icon
Merge pull request mendixlabs#1664 from ako/claude/cool-keller-jtch0r