ROU-12860: Update Wijmo to 2026v1-Hotfix - Build 5.20261.52 - #528
Merged
Conversation
cleanOldFiles piped gulp.src into gulp-clean without returning the stream and called cb() immediately, so gulp started the transpile with the delete still pending. The TypeScript compile is synchronous and blocks the event loop for seconds, starving the glob's readdir; when it finally ran it listed dist/ after the compile had written the bundle and unlinked exactly those fresh files. Effect: npm run build exited 0, reported zero diagnostics, and left dist/ empty. Not intermittent -- the delete was reliably scheduled after the write, so the build looked like it simply produced nothing. Returning the stream makes gulp wait for the delete before transpiling. Verified in the failing case (dist/ populated beforehand): cleanOldFiles now takes 12-21ms instead of under a millisecond, stale files are removed, and dist/GridFramework.js is produced. Repeat runs are idempotent.
Moves the FlexGrid provider from 5.20261.50 to 5.20261.52, and delivers the repeatable upgrade procedure the ticket asked for. Dependency and assets - package.json pins wijmo at 5.20261.52 exactly, replacing the ^5.20261.50 caret. package-lock.json is gitignored, so CI resolved fresh on every install and was already pulling .52 against vendored .50 types. - src/@types/wijmo-5.20261.50 -> src/@types/wijmo-5.20261.52 (47 root .d.ts + 50 cultures), copied from the distribution archive. Note the root set spans three sources: Dist/controls, Dist/interop/meta for wijmo.meta.d.ts, and npm for wijmo.interop.grid.d.ts, which the archive ships in no global-flavour copy at all. - styles/wijmo.css refreshed. styles/Grid.css unchanged: the filter-panel override still matches the refreshed DOM. Source - Constants.ts: WijmoFlexGridVersion bumped, and OSDataGridVersion corrected 2.23.1 -> 2.24.0. That drift was not cosmetic - gulp gtaSetVersion builds its search string from DefaultSpecs and had been silently failing to update this file on every release. - preventCut: true on the FlexGrid provider config, opting out of the new Ctrl+X handling (WJM-37524). The grid has no cut hook, so cut-cleared cells would bypass validation marks, OnCellValueChange and undo/redo. Upgrade automation - .claude/commands/upgrade-wijmo-version.md and .claude/skills/upgrade-wijmo-version/ - the procedure, its guardrails and four reference files. Shape recorded in ADR-0008; vocabulary in CONTEXT.md. - ADR-0007 records the upgrade, the breaking-change assessment, the workaround review (six sites, all kept) and the execution record of the first run. Breaking changes assessed: XLSX no longer writes a default Company of GrapeCity, Inc. (WJM-37633, observable, no code change); InputNumber truncation unified (WJM-22911, no impact - truncate is never set); Angular minimum raised (WJM-37615, not applicable - no Angular wrapper).
OS-giulianasilva
force-pushed
the
ROU-12860
branch
from
August 26, 2026 13:32
9391a9a to
53aeeee
Compare
The automation-shape record was written before the skill had ever run. This notes what the ROU-12860 run confirmed, the three details it changed (a fourth reference file, the phase reorder so the PR exists before the two documentation phases, and delegating Jira enrichment to /enrich-jira-task), and which of its stated risks landed. The risk that landed is the one worth reading: reference data can be wrong on the day it is written, not only drift later. The recipe called the block route verified on a probe that could not distinguish success from destruction.
…ecipe The recipe illustrated the cross-reference key format with a fragment of a real module's eSpace key. The guardrail is that recorded knowledge carries object names and shapes, never keys, so state the shape as <eSpace key>*<object key> instead. Also names both key spaces explicitly: GlobalKey for cross-references, Key for addressing the object.
OS-giulianasilva
marked this pull request as ready for review
August 26, 2026 16:23
joselrio
reviewed
Aug 27, 2026
…nvironment variable for path resolution
|
joselrio
approved these changes
Aug 27, 2026
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.



What was happening
The Data Grid was on Wijmo
2026v1(Build5.20261.50). ROU-12860 adopts2026v1-Hotfix(Build5.20261.52) and asks for a repeatable command so future upgrades stop being hand work.Two things were quietly wrong before this change:
package-lock.jsonis gitignored, so CI resolved dependencies fresh on every install. Under the^5.20261.50caret it was already installing.52against vendored.50types — the declared dependency and the vendored definitions had drifted apart with nothing to detect it.Constants.tshadOSDataGridVersion = '2.23.1'whilepackage.jsonandgulp/DefaultSpecs.jssaid2.24.0.gulp gtaSetVersionbuilds its search string fromDefaultSpecsand callsString.replacewith no match assertion.What was done
Dependency and vendored assets
package.jsonpinswijmoat5.20261.52exactly. The pin is the fix for the drift above, not a style preference.src/@types/wijmo-5.20261.50/→src/@types/wijmo-5.20261.52/— 47 root.d.ts+ 50 cultures, copied from the distribution archive. Worth knowing for next time: that set comes from three sources, not one —Dist/controls(45),Dist/interop/metaforwijmo.meta.d.ts, and npm forwijmo.interop.grid.d.ts, which the archive ships in no global-flavour copy anywhere.styles/wijmo.cssrefreshed.styles/Grid.cssis unchanged.Source
Constants.tsversion strings corrected.preventCut: trueon the FlexGrid provider config, opting out of the release's new Ctrl+X handling (WJM-37524). The grid has no cut hook, so cut-cleared cells would bypass validation marks,OnCellValueChangeand undo/redo. Verified in the browser, since the option bag is untyped at the provider boundary and no build can check it.Build fix (commit 966b102)
cleanOldFilesingulpfile.jspiped its delete stream without returning it and calledcb()immediately. The TypeScript compile that follows is synchronous and blocks the event loop, starving the glob'sreaddir; when it finally ran it listeddist/after the compile had written the bundle and deleted exactly those files.npm run buildwas exiting 0 with an emptydist/. Returning the stream fixes it. This is pre-existing and affects everyone, not just this ticket — it is in scope here only because the upgrade cannot produceGridFramework.jswithout it.Not verified: whether CI loses the same race.
azure-pipelines.ymlpublishesdist/GridFramework.jsas an artifact, so it may have been publishing an empty directory. Worth opening a past build's artifact.Upgrade automation
.claude/commands/upgrade-wijmo-version.mdplus.claude/skills/upgrade-wijmo-version/— the phase sequence, the guardrails, and four reference files (module inventory, changeset recipe, workaround inventory, Confluence/Jira targets). The shape is recorded in ADR-0008; the vocabulary inCONTEXT.md.Documentation
Test Steps
Against
OutSystemsDataGridSample_ROU12860, on the module merged onto the protected one and published:OnCellValueChangefires.OnCellValueChange.5.20261.50wroteGrapeCity, Inc.(WJM-37633). Provable statically too: the.50wijmo.xlsxcarries that fallback once, the.52zero times.1.2345and paste1.2345into a 2-decimal column — both render1.23.<b>or</b>; tooltips display.All of the above passed. The pre-upgrade baseline was the live public sample, which stays on the released build for the length of the upgrade.
Screenshots
N/A — no intended visual change. The filter panel was compared against the public sample and matches.
Checklist
npm run buildpasses with no errors or warningsoutsystems-datagrid-tests) — not run, and its outcome gates taking this PR out of draftFixed Issues,New issues found, RPMs, automated-test runsWhat I Didblock — a comment carries the content; the description template is still to be filled with/enrich-jira-task