Skip to content

test(navigation): repro script and symptom-table row for the #989 title override - #1009

Merged
ako merged 2 commits into
mainfrom
docs/989-navigation-title-override-repro
Aug 31, 2026
Merged

test(navigation): repro script and symptom-table row for the #989 title override#1009
ako merged 2 commits into
mainfrom
docs/989-navigation-title-override-repro

Conversation

@ako

@ako ako commented Aug 31, 2026

Copy link
Copy Markdown
Collaborator

Summary

#989 fixed Forms$FormSettings.TitleOverride in the three navigation writers but shipped without the two artifacts the CLAUDE.md bug-fix checklist asks for. This adds them — no behaviour change.

Evidence

A blank Mendix app's own navigation document is the reference. It already stores TitleOverride = null on both LoginPageSettings and the home menu item, so the fix is checkable against a Studio Pro-authored document rather than against a warning count:

LoginPageSettings <Forms$FormSettings>
  Form = ""
  ParameterMappings [marker 2, 0 items]
  TitleOverride = null
Menu.Items[0].Action.FormSettings <Forms$FormSettings>
  Form = MyFirstModule.Home_Web
  ParameterMappings [marker 2, 0 items]
  TitleOverride = null

Control on a real 11.12.0 v2 app, both engines, re-measured against merged main:

f=$(grep -ral NavigationDocument app/mprcontents | head -1)
strings -a "$f" | grep -c TextTemplate
  4 before the fix (3 page items + the login page)
  0 after — while grep -c TitleOverride stays at 4, so the key is
    still written, now as null

mxcli check passes on the script; MXCLI_ENGINE=legacy and the default engine both produce 0.

The lesson in the table row

Grep the builder's callers before concluding a navigation fix is menu-only. Each of the three builders is also the profile's login-page builder (writer_navigation.go:116, navigation_write.go:127, nav_patch.go:122, plus navigation_profile_add.go:108), so a fix aimed at menu items alone would have missed half the emitters.

Out of scope, documented in the script header

Two things the side-by-side dump exposed, neither introduced by #989 and neither addressed here:

  • describe navigation drops the login page clause — the reader type-asserts *genNav.NavigationProfileLoginFormSettings (property LoginPage) while both Studio Pro and mxcli store Forms$FormSettings (property Form), so a describe → exec round-trip loses the login page.

  • Every list these writers emit carries typed-array marker 1HomeItems, ParameterMappings, PagesForSpecializations, Menu.Items, Caption.Items — where the same app's own document has 2 or 3 for those fields. Now fixed in fix(navigation): emit the typed-array markers Studio Pro writes #1011, with a census behind each value.

    Correction to an earlier revision of this description, which said debug-bson.md's rule makes marker 1 invalid: it does not, and that rule is wrong. Marker 1 is what Mendix itself writes for by-name reference and string lists (CustomWidgets$WidgetValueType.AllowedTypes, 212k occurrences in a Marketplace package mxcli has never touched). These lists were a per-field mismatch with Studio Pro, not corruption. fix(navigation): emit the typed-array markers Studio Pro writes #1011 corrects the skill.

🤖 Generated with Claude Code

https://claude.ai/code/session_01DufwPkjFimB8BoTm7bWbik

ako and others added 2 commits August 31, 2026 13:51
…le override

PR #989 fixed Forms$FormSettings.TitleOverride in the three navigation
writers but shipped without the two artifacts the bug-fix checklist asks
for. This adds them.

mdl-examples/bug-tests/989-navigation-title-override.mdl replays a
navigation profile with a login page, three page menu items (one nested,
to reach the recursive sub-item build), a microflow item and a sub-menu
container -- four Forms$FormSettings, four TitleOverrides.

The evidence in its header is measured, not restated from the PR. A blank
Mendix app's own navigation document already stores TitleOverride = null
on both LoginPageSettings and the home menu item, so the fix is checked
against a Studio Pro-authored document rather than against a warning
count. The control on a real 11.12.0 v2 app, both engines:

  strings -a <nav unit> | grep -c TextTemplate
    4 before the fix (3 page items + the login page), 0 after,
    while grep -c TitleOverride stays at 4 -- the key is still
    written, now as null.

The symptom-table row records the lesson that generalises: grep the
builder's callers before concluding a navigation fix is menu-only. Each
of the three builders is also the profile's login-page builder, so a fix
aimed at menu items alone would have missed half the emitters.

Two things the script makes visible are called out in its header as out
of scope and are not addressed here: describe navigation drops the
`login page` clause (the reader expects a type the document does not
carry), and every list these writers emit uses typed-array marker 1
where the same app's own document has 2 or 3.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DufwPkjFimB8BoTm7bWbik
Marker 1 is a legitimate Mendix typed-array marker, not an invalid one --
verified in a Marketplace .mpk mxcli has never touched. The note read as
if the navigation lists were corrupt; they were a per-field mismatch with
what Studio Pro writes for those fields.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DufwPkjFimB8BoTm7bWbik
@ako
ako force-pushed the docs/989-navigation-title-override-repro branch from f591525 to b30177c Compare August 31, 2026 13:51
@ako
ako merged commit 646c6d3 into main Aug 31, 2026
13 checks passed
This was referenced Aug 31, 2026
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.

1 participant