You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
This commit was created on GitHub.com and signed with GitHub’s verified signature.
Added
Results rows link to the Metadata Management app when it is
installed and the user may open it, falling back to Maintenance
otherwise. Metadata Management is installable from the App Hub on
2.41 and 2.42, and bundled from 2.43, so which app to use is resolved
at runtime from apps/menu, which lists only apps the user may open
and reports each app's launch URL. When the user has neither app the
link is omitted rather than offering a dead end.
Unused program rule variables link out for editing too; previously
only invalid expressions did. The link button is labelled "Edit", with
the app it opens named in its tooltip.
Fixed
Transient server failures are no longer reported as invalid expressions.
A 5xx, a rate-limit response or a dropped connection used to produce a
generic "Condition validation error" row, indistinguishable from a real
problem with the rule. Such requests are now retried with a short
backoff, and anything still unanswered is counted and surfaced as a
run-level warning instead of being listed as invalid.
The expression-description requests now send the X-Requested-With and Accept headers that the data engine sends on every other request, so
an expired session can no longer trigger the browser's native
basic-auth dialog.
The expression-description requests now use the same API version as the
rest of the app (the engine defaults it to the server's own version)
rather than always hitting the unversioned /api/ path.
Results from the last completed run stay on screen when a subsequent
run is cancelled or fails, instead of being discarded.
Selection checkboxes in the unused-variables table have accessible
names, and the link-out button shows that it opens a new tab.
The program pickers always offer a search box, matching the original
tool, rather than only above ten programs.
Changed
Migrated to the DHIS2 App Platform. The app is now a React +
TypeScript application built with @dhis2/cli-app-scripts, using @dhis2/app-runtime for data access and @dhis2/ui for all UI
components. The custom webpack setup, materialize-css, choices.js,
the hand-rolled d2api.js fetch layer and the legacy header-bar
loader are all gone; the platform shell now provides the header bar,
login handling and manifest generation.
Program lists and results tables use @dhis2/ui components
(MultiSelectField, DataTable, TabBar, Modal, NoticeBox, LinearLoader), so the app follows the DHIS2 design system.
All user-facing strings go through @dhis2/d2-i18n and are
extractable for translation.
Validation logic (expression validation via the description
endpoints, unused-variable detection incl. d2:hasValue and
string-literal stripping, concurrency limits, cancellation) is ported
unchanged and now covered by unit tests (pnpm test).
Result tabs show counts, the unused-variables filter only offers
validated programs, and selections are pruned when the filter
changes.
CI workflow builds with pnpm + d2-app-scripts and attaches build/bundle/tool-pr-validator-<version>.zip to releases.
minDHIS2Version is 2.40.
Removed
webpack.config.js, d2auth.json handling, manifest.webapp
generation via d2-manifest, src/js/*, Materialize CSS/JS and the
bundled legacy DHIS2 header bar.
The Python Playwright scripts under tests/playwright/ (written for
the old DOM); functional testing is now done against the platform UI.