Repository navigation
fix: describe round-trip gaps on pages (gallery sort over association, by-key combo box / filter settings) - #1523
Merged
Merged
Conversation
…ociation (mendixlabs#1599) DESCRIBE PAGE printed a gallery whose "Database" source runs over an association as `$currentObject/Assoc` with no `sort by` and no `where`, and `create page` refused the faithful `database from $currentObject/Assoc/Entity` form for anything but a list view. Studio Pro stores that source as a CustomWidgets$CustomWidgetXPathSource with an IndirectEntityRef, its XPath and sort bar beside it. The reader treated it as an association source (the #941 reading), which drops both and replays as a Forms$AssociationSource — a different retrieve. - Reader: a pluggable XPath source with complete hops reads through parseEntityPathSource, as the list view source already does; a hop without a stored destination keeps the association reading. - Writer: on 10+ buildPluggableDataSourceV3 builds the form and customWidgetDataSourceToGen stores the hops as an IndirectEntityRef with the start parameter in SourceVariable (9.x keeps the #1399 database source). Widgets with their own builder still refuse it in buildDataSourceV3. Measured on 11.12.1: the reporter's shape authored in MDL, mx check 0 errors, describe -> exec "Unchanged page"; with the association byte-patched to a nonexistent name mx check reports CE1613 at Gallery 'g1'. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Hjeuk6NPBWq3QTxCKxsARF
…by key (mendixlabs#1586) DESCRIBE PAGE omitted expression-typed (and other) settings of the widgets with a dedicated describe reader: a combo box's customEditability / customEditabilityExpression / ariaRequired, a text or number filter's defaultValue expression and delay. Exec wrote them; describe -> edit -> exec reset them. The report's own case, a generic pluggable widget's top-level expression with a false MDL-WIDGET06 warning, reproduces only on the binary before mendixlabs#1578 and is already fixed on main. - The combo box and the four data grid filters now run the by-key reader (mendixlabs#1573) beside their keyword reader, skipping the keys it already prints. - Values are compared with what exec writes for an absent key (the embedded template), not the schema DefaultValue: the combo box template stores readOnlyStyle `bordered` against a default of `text`, so Studio Pro's combo boxes (Administration.Account_Edit) lost `text` on an edit-replay. - A combo box's database/static-mode settings, a mode DESCRIBE does not spell, are named in a NOT re-executable note instead of printed. - `check` without -p tops the hand-crafted definitions up from the embedded template, so describe output passes it as it does with -p. Corpus diff against a baseline build over the Blank 11.12.1 app: only the intended lines change, every description replays "Unchanged", mx check 0. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Hjeuk6NPBWq3QTxCKxsARF
…bs#1520) The snippet half of the report: a data view sourced from a snippet parameter described without its DataSource. Already fixed by the snippet-parameter slot read (#721 L3); retested on 11.12.1, describe prints `DataSource: $View` and replays "Unchanged snippet". The page half was fixed by #1416. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Hjeuk6NPBWq3QTxCKxsARF
…ate type A key a widget definition knows but does not map (a combo box's emptyOptionText) was skipped by MDL-WIDGET42 on the assumption that MDL-WIDGET01/06 spoke for it. Neither does once the key is persisted by the explicit-property pass, so `emptyOptionText: 'a' + 'b'` passed `check -p` and failed at exec. With the template enrichment for a check without -p (mendixlabs#1586) the same gap opened there, which TestWidgetExpressionInAPlainProperty_IsAnError caught. The kind now comes from the widget's embedded template, as it already did for a widget with no definition. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Hjeuk6NPBWq3QTxCKxsARF
…$ctx/…` (mendixlabs#1599) TestDatabaseOverAssociationRefusedUnderANamedDatasourceKey asserted the refusal this PR removes, on the premise that the pluggable writer stored the entity alone. It now stores the hops as an IndirectEntityRef with the start parameter in SourceVariable, so the probe asserts the path survives exec -> describe instead. Measured on 11.12.1 with the same combo-box shape: mx check 0 errors, describe -> exec "Unchanged page". WorkflowCommons.WorkflowGroup_Edit now passes every law on TestApp, so it leaves knownFailures, which may only shrink. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Hjeuk6NPBWq3QTxCKxsARF
Ported from #1527 so this PR's build-and-test can go green: govulncheck fails on crypto/x509@go1.27.2 (GO-2026-6809, fixed in 1.27.3), reached through internal/marketplace/client.go. main is red on the same check. Identical change; it no-ops once #1527 lands. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Hjeuk6NPBWq3QTxCKxsARF
Owner
Author
|
I ported the fix from #1527 (Go 1.27.3 in The other failure, Generated by Claude Code |
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.
Works the
describe-round-trip-gaps-pagescluster from the triage board (#1357): #1509, #1491, #1402.Closes #1509
Closes #1491
Closes #1402
#1509 — mendixlabs#1599: gallery sort over an association
Reported:
gallery g1 (DataSource: $currentObject/Probe.Item_Parent, …)with nosort by. Studio Pro stores a gallery's "Database" source over an association as aCustomWidgetXPathSourcewith anIndirectEntityRefand a sort bar. Describe read it as an association source, which drops XPath and sort and replays as aForms$AssociationSource, a different retrieve.database from $ctx/Assoc/Entity [where …] [sort by …], as the list view source already did. A hop with no stored destination keeps the association reading.customWidgetDataSourceToGenstores the hops as anIndirectEntityRef, with the start parameter inSourceVariable. 9.x keeps the [up#1517] create or modify / alter microflow splice refusals (loop body, used return, earlier alter, variable scope in one alter block) #1399 database source. Widgets with their own builder still refuse the form.mx checkwith 0 errors, and describe → exec reportsUnchanged page. Control: with the association name byte-patched to a nonexistent one,mx checkreports CE1613 at Gallery 'g1'.#1491 — mendixlabs#1586: expression-type pluggable properties
editableexpression cannot be written;mx checkfails CE0642 mendixlabs/mxcli#1578, and is already fixed on main.customEditabilityExpressionand a text filter'sdefaultValueanddelaywere written by exec but not described. These widgets now run the by-key reader (Data grid 2 settings written by their widget key are lost on a describe → exec round trip, andcheckwithout a project calls them "silently dropped" mendixlabs/mxcli#1573) beside their own.readOnlyStyle: borderedagainst a default oftext. On main, an edit-replay ofAdministration.Account_Editflips Studio Pro'stexttobordered; with this fix it keepstext.NOT re-executablenote, not printed.checkwithout-ptops up the hand-written definitions from the embedded template, so describe output passes it.emptyOptionText: 'a' + 'b'passedcheck -pbefore and failed only at exec.#1402 — mendixlabs#1520
Already fixed: the page half by #1416, the snippet half by the #721 L3 snippet-parameter slot read. Retested on 11.12.1. A widget-presence audit of all 28 pages and snippets in the Blank app found all 249 named widgets in the describe output. This PR adds a bug-test script only.
Evidence
combobox cb,$currentObject/Probe.Item_Parent, and aDirectEntityRefinstead of anIndirectEntityRef.Unchanged.mx checkreports 0 errors after the replays, after edit-replays of Studio Pro pages, and after the new bug-test scripts.make test,make lint,make check-mdlandmake check-findingspass.mdl-examples/bug-tests/1599-…,1586-…,1520-describe-snippet-root-datasource.mdl. There are two findings, and the round-trip pattern page has one new paragraph.Not done:
datagrid.json's template storescolumnsFilterable=falseagainst a default oftrue. The mendixlabs#1573 data grid reader still compares with the default there.Generated by Claude Code