Repository navigation
Sync ako/mxcli: test --reuse-build and --watch recovery (#1783, #1787); Go 1.27.4 for GO-2026-6859; page round-trip fixes - #1816
Merged
Merged
Conversation
…ests and mxcli are unchanged A local test run injects the test microflows, builds with mxbuild and boots. For an unchanged project, unchanged test files and an unchanged mxcli the injected model is the same as last time, so the deployment left in <project>/deployment is already the build this run would produce. The key is a content hash, never a timestamp: every file of the project folder (minus output/cache dirs), the generated endpoint and test microflow text, the mxcli executable and the mxbuild override. The record also pins the identity of deployment/model/model.mdp, so a build made by anything else in that folder (run --local, mxbuild by hand) is never taken for ours. Any doubt means a normal build.
…stale-model refusal Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
#1782) mxbuild rewrites theme-cache/web/theme.compiled.css on every build with a non-deterministic cache-busting query string on each font/asset url(), even with zero theme or model changes. Without this exclusion the hash key never repeats across two separate 'mxcli test' invocations on any app using the Atlas Core theme, so --reuse-build silently rebuilt every time and never paid for itself. Found by running --reuse-build twice in a row against a real app and seeing it rebuild both times; re-verified after the fix (reuse hit: 12.15s vs ~60-67s miss). Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
…m IO_PathNotFound, headless test runs) Rebuild in the test runner's app called serve.Build directly, so the recovery that run --local --watch has never ran for test --watch: the second build of a serve process fails on regenerated pages (mxbuild 11.15 macOS reports IO_PathNotFound_Path, not the English text) and every later change reported 'could not be applied'. Route through serveRecovery, match the key form, and skip the web/dist completeness restart (headless) . Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> (cherry picked from commit 191261bcfa68e22f6915084f0553880d08cecbff) (refs #1786)
…OS/Linux key-form failure Two gaps in existing coverage for the test --watch build-recovery fix: - serveRecovery.headless must skip the prebuilt-bundle restart entirely (only a browser-facing client cares about a lost dist/pages). - missingClientDirs must recognize mxbuild's resource-key form of the same failure (IO_PathNotFound_Path, measured on 11.15.0 macOS) as well as the English-text form, including when the directory exists but the specific file mxbuild wants does not. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
… when nothing changed
…very merges - Drop the dead `reuseKey` variable in runEndpoint, and put the capture comment back above the capture it describes (the abandoned-endpoint removal from #2119 had landed between them). - --reuse-build skips .git and node_modules at any depth, not only at the top: tooling state, never a build input (test added, with a control). - CHANGELOG entries for mendixlabs#1783 and #1787, and a line for --reuse-build in running-tests.md. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01QiMsnXa9crge2qnSk9S7Zn
…show page close count (#2106) None of the three had an MDL spelling, so describe page -> exec of a Studio Pro page wrote the default over the stored value: a check box's label after the control became Default, every radio button group became horizontal (RenderDirection was read by the writer but never set), and a show page button stopped closing the page it came from. mx check stayed green. checkbox takes LabelPosition: Default|BeforeControl|AfterControl, radiobuttons RenderHorizontal: true|false, and show page with (NumberOfPagesToClose: n), which needs a number in actionSettingV3. describe prints each when it differs from the default. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_011oK82ttaGzay5CwiC2V7cf
govulncheck fails every build on 1.27.3: a net/http MaxBytesReader header race (GO-2026-6859), fixed in 1.27.4. The advisory is new, so main fails the same scan; govulncheck on 1.27.4 reports 0 vulnerabilities reached. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01QiMsnXa9crge2qnSk9S7Zn
Integrate mendixlabs#1787 (test --watch recovery) and #1783 (test --reuse-build)
…rip-losses # Conflicts: # CHANGELOG.md
…state (#2106) describe page -> exec rewrote 8 FactoryManagement pages that had not changed. CarryUnexpressed now keeps a stored DynamicClasses or XPathConstraint (as it did an Expression) when only whitespace outside its string literals differs, and an enumeration condition's values in their stored order when each keeps its flag. The writer stores the null SourceVariable key on Forms$AssociationSource, as Studio Pro does on 40 of 40, and a system member a specialization inherits resolves to the entity that stores it. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_011oK82ttaGzay5CwiC2V7cf
fix(pages): keep a check box's label position, radio orientation and show page close count (#2106)
…rip-carry # Conflicts: # CHANGELOG.md
#2106) The TestApp round-trip harness reports these snippets no longer break getput and putget with this branch's carries and writer fixes; the allowlist may only shrink. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_011oK82ttaGzay5CwiC2V7cf
fix(pages): keep stored formatting and keys a page round trip cannot state (#2106)
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:maininto upstream: 10 commits since #1806 — #1783 and #1787 as submitted, a Go toolchain bump for a new advisory, and page round-trip fixes.mxcli test: #1783 and #1787 (by @MendixMau)
Both PRs are included at their submitted heads, so merging this with a merge commit marks them merged.
--reuse-build(feat(test): --reuse-build skips injection and mxbuild when nothing changed #1783) skips injection and mxbuild when the project, the test files and mxcli are unchanged, reusing the deployment the last run left. The key is a content hash, never a timestamp, and the record pinsdeployment/model/model.mdp's identity, so a build made by anything else is never taken for ours.theme-cache/is excluded from the hash, because mxbuild rewritestheme.compiled.csswith a cache-busting query on every build: without that the key never repeated (reuse hit 12 s vs ~60–67 s). Fixes feat: mxcli test --reuse-build — skip injection and mxbuild when nothing changed #1782test --watchrecovers builds on a freshmxbuild --serve(fix: mxcli test --watch never recovers a failed rebuild on a long-lived serve process #1787): its rebuild called the serve process directly, so the recoveryrun --local --watchuses never ran, and every change after the second build reported "could not be applied". It now goes through the same recovery, recognises mxbuild's resource-key form of the failure (IO_PathNotFound_Path, seen on 11.15 macOS), and skips the client-bundle restart a headless test run doesn't need. Refs fix: mxcli test --watch never recovers a failed rebuild on a long-lived serve process (macOS IO_PathNotFound_Path) #1786.gitandnode_modulesskipped at any depth in the hash (with a control test), CHANGELOG entries and a--reuse-buildline in the running-tests docs.Security: Go toolchain 1.27.4
govulncheck fails every build on 1.27.3: GO-2026-6859, a
net/httpMaxBytesReaderheader race, fixed in 1.27.4. The advisory is new, so upstreammainfails the same scan; on 1.27.4 govulncheck reports nothing reached.Pages: an unchanged page's round trip writes nothing
describe → exec rewrote Studio Pro pages that had not changed:
mx checkstayed green. New:checkbox … LabelPosition: Default|BeforeControl|AfterControl,radiobuttons … RenderHorizontal: true|false, andshow page … with (NumberOfPagesToClose: n); describe prints each when it differs from the default.DynamicClassesorXPathConstraintthat differs only in whitespace outside its string literals, an enumeration condition's values in their stored order, and the nullSourceVariablekey onForms$AssociationSource(Studio Pro writes it on 40 of 40). A system member a specialisation inherits resolves to the entity that stores it.8 WorkflowCommons snippets now round-trip exactly and leave the round-trip suite's allowlist