Repository navigation
Sync ako/mxcli: navigation list ALTER and addressing, Studio Pro type names, test --local hang - #1398
Merged
Merged
Conversation
…hem (#1388) ALTER SNIPPET/PAGE could not add an item to a navigation list: `insert into navList1 { item … }` failed with "item must be a direct child of navigationlist", and a widget inside an existing item failed to resolve (`widget "t1" not found`), leaving REPLACE of the whole list as the only workaround. - Route an INSERT of only `item` blocks to a new PageMutator.InsertNavigationListItems, which appends to the list's Items using CREATE's serialization (a throwaway wrapper list). - Descend into NavigationList Items in the find, widget-scope and nearest-data-source walks, so widgets inside an item are targets. - Items carry no Name, so BEFORE/AFTER a widget inside an item is refused naming the INTO form; mixed item/widget inserts are refused. Verified on Mendix 11.12.1: the issue's script runs, mx check reports 0 errors, and the ALTERed snippet's BSON is identical in shape to one CREATEd with both items. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_013WEPgso8WF2GxsRHvhP4cB
A navigation list item has no stored name, so it could not be the
target of INSERT BEFORE/AFTER, DROP, SET or REPLACE. Address it the way
a DataGrid 2 column is addressed:
nav item(t1) the item holding the widget named t1
nav item('Home') the item showing that text (any language)
nav item@2 the second item
nav item('Home')@2 the second of several items showing Home
An address matching several items is refused unless @n picks one; a
miss lists every item's addresses.
The address travels as the widget reference string
(backend.NavItemSelector) and the page mutator's widget finder resolves
it to the item in the list's Items, so SET (Action), DROP, INSERT INTO
an item and INSERT BEFORE/AFTER an item { item ... } use the paths they
already had. REPLACE of an item with item blocks gets its own mutator
method; widgets next to or in place of an item are refused.
Verified on Mendix 11.12.1: every form runs, mx check reports 0 errors,
and the ALTERed snippet's BSON is identical in shape to one CREATEd in
the same final state.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_013WEPgso8WF2GxsRHvhP4cB
`mxcli test --local` hung indefinitely after the tests finished whenever mxbuild started a new Gradle daemon. `mxbuild --serve` and `mx sync-java-dependencies` write to a buffer, so exec.Cmd creates a pipe and Wait blocks until every holder of its write end closes it. A fresh daemon inherits that end, outlives mxbuild, and escapes the tree kill, so ServeServer.Stop — which runs before results are printed and the JUnit file is written — never returned. Set cmd.WaitDelay on both commands. It starts only once the process has exited, so it cannot cut a live build short. SyncJavaDependencies treats exec.ErrWaitDelay as success: mx's own exit status is the result. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01GzsC1uYbnDNq7qprVpYahn
Describe printed a navigation list item's Appearance.Class as `ButtonStyle: nav-orders` - not an item property, and unparseable unquoted - and CREATE wrote an empty appearance whatever the item said, so a styled item lost its class on describe -> exec. - describe reads the item's Class, Style and DynamicClasses and prints them as a widget's are - pages.NavigationListItem carries them; buildNavigationListItemV3 sets them and navListItemToGen writes them into Forms$Appearance, where Studio Pro keeps them (every item in PedApp and the WidgetDemo showcase stores the same Forms$Appearance as a widget) - the wireframe no longer reports an item's class as a button style Verified on Mendix 11.12.1: a styled item passes mx check with 0 errors, and describe -> exec of it is "Unchanged". With the pre-fix binary the same describe output fails to parse. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_013WEPgso8WF2GxsRHvhP4cB
mendixlabs#1395: "mxcli describe --help ... still use the old names" after #755 (R10) renamed the document types. The cobra command keeps its own type table, so the help, the "Unknown type" hint and the auto-detected keyword (also printed in the ambiguity hint) still said restclient, odataclient, odataservice, queue, model and projectsecurity. The canonical keywords are now consumedrestservice / "consumed rest service", consumedodataservice, publishedodataservice, taskqueue, aimodel and appsecurity; every old spelling stays accepted. Auto-detect maps both the new catalog ObjectType values and the pre-#1395 ones, which a cached catalog still holds. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_019jnar6SL6PZUqymiE9peEo
mendixlabs#1395: "... the catalog.db still use the old names". The views are now consumed_rest_services, consumed_rest_operations, consumed_odata_services, published_odata_services and task_queues, and objects.ObjectType reports CONSUMED_REST_SERVICE, CONSUMED_ODATA_SERVICE, PUBLISHED_ODATA_SERVICE and TASK_QUEUE. The old view names stay as alias views (LegacyTableAliases) so saved queries keep answering, but LIST CATALOG TABLES shows only the new ones. The _data storage tables are unchanged. An ObjectType literal cannot be aliased: a query filtering on an old value returns no rows. Every Go reader of ObjectType accepts both, the shipped conv018 lint rule, skills and docs use the new values, and the catalog-tables page lists the renames. Schema 24, since views are CREATE VIEW IF NOT EXISTS. Control: with tables.go/catalog.go reverted, TestCatalog_StudioProDocumentNames fails with "Tables() still lists the old name CATALOG.REST_CLIENTS" and "no such table: consumed_rest_services". Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_019jnar6SL6PZUqymiE9peEo
fix(docker): bound Wait when a Gradle daemon outlives mxbuild (mendixlabs#1396)
Studio Pro document names in describe --help and the catalog (mendixlabs#1395)
ALTER: add, address and edit navigation list items (mendixlabs#1388)
AI Code ReviewReview SummaryThis PR syncs three independent changes from a fork: navigation list item addressing (#1388), Studio Pro document name updates (#1395), and a test--local hang fix (#1396). While each change is well-implemented and tested, the PR violates scope guidelines by combining unrelated features. Critical IssuesNone found. Moderate IssuesScope & Atomicity Violation
Automated review via OpenRouter (Nemotron Super 120B) — workflow source |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Syncs
ako/mxcli:mainintomendixlabs/mxcli:main: 6 commits since #1397, landed in the fork through PRs ako#1130, ako#1132 and ako#1133.Navigation lists (#1388)
insert into navList1 { item … }) and address widgets inside existing items. Before, it failed with "item must be a direct child of navigationlist", and replacing the whole list was the only workaround.nav item(t1)(the item holding widget t1),nav item('Home')(the item showing that text, in any language),nav item@2, ornav item('Home')@2. An ambiguous address is refused unless@npicks one, and a miss lists every item's addresses.ButtonStyle: nav-orders, and create wrote an empty appearance.Studio Pro document names (#1395)
mxcli describe --help, the "Unknown type" hint and auto-detect lead with Studio Pro's names:consumedrestservice,consumedodataservice,publishedodataservice,taskqueue,aimodelandappsecurity. Every old spelling stays accepted.consumed_rest_services,consumed_odata_services,published_odata_services,task_queues, …), and the old view names stay as alias views.objects.ObjectTypereportsCONSUMED_REST_SERVICE,CONSUMED_ODATA_SERVICE,PUBLISHED_ODATA_SERVICEandTASK_QUEUE.Testing
mxcli test --localno longer hangs after the tests finish when mxbuild starts a new Gradle daemon (mxcli test --local hangs forever on Windows after the tests when mxbuild started a new Gradle daemon (inherited stdout pipe; results and JUnit lost) #1396). The daemon inherited the output pipe, soWaitnever returned.WaitDelaystarts only after the process exits, so it cannot cut a live build short