Aman-Mittal opened a new pull request, #863: URL: https://github.com/apache/fineract-backoffice-ui/pull/863
Node 26 "Lithium" became the active LTS line in October, which moved Node 24 to maintenance. Read from `nodejs.org/dist/index.json` rather than assumed — the newest release carrying an `lts` codename is **v26.13.0** (npm 11.20.0). Angular 22 already supports it: every `@angular/*` package in the tree declares ``` engines.node: ^22.22.3 || ^24.15.0 || >=26.0.0 ``` so this moves onto a supported runtime rather than ahead of one. ## What actually needed changing The jobs that ask `setup-node` for `lts/*` needed nothing — they began resolving to 26 the moment the line went LTS. That is precisely the gap this closes: the two places pinned **by digest** could not follow, so the container builds were a full major behind every other job. | | from | to | | --- | --- | --- | | `deploy/Dockerfile` build stage | `node:24-alpine@sha256:d32cdf61…` | `node:26-alpine@sha256:c6ad9e9c…` | | `ci.yml` offline-build (install + build steps) | same digest | same new digest | | `package.json` `engines.node` | `>=22.22.3` | `>=26.0.0` | | `README.md`, `SETUP.md`, `AGENTS.md` | `>=22.22.3` | `>=26.0.0` | | `DOCS/CI_CHECKS.md` prose and snippets | `node:24-alpine` | `node:26-alpine` | The digest is the current `node:26-alpine` manifest-list digest, read from the registry. Pinning by digest is deliberate here and the Dockerfile explains why, so the tag stays in the comment for a human to read. On `engines.node`: npm treats a mismatch as a **warning**, not an error, and there is no `.npmrc` setting `engine-strict`, so a contributor still on 22 or 24 is told rather than blocked. Worth knowing before merge, since it is the one change that touches everyone's console. ## Verification Not inferred from the version string — run in the image this pins, reproducing the `offline-build` job step for step: ``` node --version → v26.13.0 npm --version → 11.20.0 npm ci → 704 packages npm run build -- --configuration production (--network none) → exit 0 ``` Both steps ran inside `node:26-alpine@sha256:c6ad9e9c…` against an isolated worktree, so the install resolved musl-native optional dependencies in the same environment the build then used — the reason `ci.yml` installs inside the container rather than on the runner. The build's only warning is the pre-existing `header.component.ts` style budget, unchanged by this. -- This is an automated message from the Apache Git Service. To respond to the message, please log on to GitHub and use the URL above to go to the specific comment. To unsubscribe, e-mail: [email protected] For queries about this service, please contact Infrastructure at: [email protected]
