This is an automated email from the ASF dual-hosted git repository.
aglinxinyuan pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/texera.git
The following commit(s) were added to refs/heads/main by this push:
new 798219386f chore(deps): upgrade frontend Node engine to 24 (#4658)
798219386f is described below
commit 798219386fca8197df4e51789df5f187f861f2bd
Author: Xinyuan Lin <[email protected]>
AuthorDate: Sat May 2 21:47:20 2026 -0700
chore(deps): upgrade frontend Node engine to 24 (#4658)
### What changes were proposed in this PR?
Bump the frontend from Node 20 to Node 24 (current Active LTS) ahead of
the Node 20 end-of-life window (October 2026 maintenance / April 2027
EOL).
- `frontend/package.json`
- `engines.node`: `>=20.19.0` → `>=24.0.0`
- `@types/node`: `20.19.39` → `24.10.1`
- `.github/workflows/build.yml`
- frontend matrix `node-version`: `20.19.0` → `24.10.0`
- fixed stale literal `18` in the frontend job-name format string (now
`24`, matching the matrix)
- `bin/texera-web-application.dockerfile`
- frontend build stage: `node:22-bookworm` → `node:24-bookworm`
- `AGENTS.md` — two doc references to the Node engine bumped to
`>=24.0.0`
- `frontend/yarn.lock` — regenerated; only `@types/node` and its
`undici-types` peer changed
Out of scope:
- The root `Dockerfile` still pins `node:18-alpine` but references the
long-removed `core/gui/` paths. It is stale and should be cleaned up or
removed separately.
- The `frontend/.nvmrc` already says `lts/*`, so no change was needed.
- The Node 24 audit of the GitHub Actions themselves is tracked in
#4647.
### Any related issues, documentation, discussions?
Closes #4657. Related: #4647 (Node 24 inside GitHub Actions runtimes).
### How was this PR tested?
Locally on Windows with Node 24.15.0 + Yarn 4.14.1:
- `yarn --cwd frontend install` — lockfile updated cleanly (only
`@types/node` 20.19.39 → 24.10.1 and `undici-types` 6.21.0 → 7.16.0).
- `yarn --cwd frontend build:ci` — production bundle built (initial
total 13.82 MB raw / 2.87 MB transfer), exit 0.
- `yarn --cwd frontend test:ci` — Karma/Jasmine, 298 of 299 specs passed
(1 pre-existing skip), exit 0 under Chrome Headless 147.
CI will exercise the new `24.10.0` matrix value across `ubuntu-latest`,
`windows-latest`, and `macos-latest`.
### Was this PR authored or co-authored using generative AI tooling?
Generated-by: Claude Code (Opus 4.7)
---------
Signed-off-by: Xinyuan Lin <[email protected]>
Co-authored-by: Copilot Autofix powered by AI
<[email protected]>
---
.github/workflows/build.yml | 5 +----
AGENTS.md | 8 +++++---
bin/texera-web-application.dockerfile | 2 +-
frontend/package.json | 4 ++--
frontend/yarn.lock | 20 ++++++++++----------
5 files changed, 19 insertions(+), 20 deletions(-)
diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml
index 79363ff1d4..c8e0c23e5b 100644
--- a/.github/workflows/build.yml
+++ b/.github/workflows/build.yml
@@ -63,7 +63,6 @@ env:
jobs:
frontend:
if: ${{ inputs.run_frontend }}
- name: ${{ format('frontend{0} ({1}, 18)', inputs.job_name_suffix,
matrix.os) }}
runs-on: ${{ matrix.os }}
strategy:
matrix:
@@ -76,7 +75,7 @@ jobs:
- os: windows-latest
arch: x64
node-version:
- - 20.19.0
+ - 24.10.0
steps:
- name: Checkout Texera
uses: actions/checkout@v5
@@ -132,7 +131,6 @@ jobs:
# and tests for the platform services live in the `platform` matrix
# below. License-binary checks are scoped to the amber dist.
if: ${{ inputs.run_amber }}
- name: ${{ format('amber{0} ({1}, 11)', inputs.job_name_suffix, matrix.os)
}}
strategy:
matrix:
os: [ubuntu-22.04]
@@ -348,7 +346,6 @@ jobs:
python:
if: ${{ inputs.run_python }}
- name: ${{ format('python{0} ({1}, {2})', inputs.job_name_suffix,
matrix.os, matrix.python-version) }}
strategy:
matrix:
os: [ubuntu-latest]
diff --git a/AGENTS.md b/AGENTS.md
index 70e31175d3..adf05218ce 100644
--- a/AGENTS.md
+++ b/AGENTS.md
@@ -17,8 +17,10 @@ Major areas:
- `config-service/`, `access-control-service/`, `file-service/`,
`computing-unit-managing-service/`, `workflow-compiling-service/`: backend
services wired through `build.sbt`.
-- `frontend/`: Angular application. Uses Yarn 4.14.1, Node >= 20.19.0, Nx,
- Prettier, ESLint, Karma/Jasmine, and ng-zorro.
+- `frontend/`: Angular application. Uses Yarn 4.14.1 via Corepack for local
+ development, Node >= 24.0.0, Nx, Prettier, ESLint, Karma/Jasmine, and
+ ng-zorro. Note: `bin/texera-web-application.dockerfile` currently pins
+ Yarn 4.5.1 in its frontend build stage.
- `agent-service/`: TypeScript Elysia service for Texera LLM agents. CI uses
Bun 1.3.3.
- `pyright-language-service/`: TypeScript service for Python language support.
@@ -113,7 +115,7 @@ outside CI.
The Angular frontend lives in `frontend/`.
-- Node engine: `>=20.19.0`.
+- Node engine: `>=24.0.0`.
- Package manager: Yarn 4.14.1 via Corepack.
- Formatting is Prettier plus prettier-eslint. Prettier uses 2 spaces,
semicolons, double quotes, `printWidth: 120`, and LF endings.
diff --git a/bin/texera-web-application.dockerfile
b/bin/texera-web-application.dockerfile
index 20ed6428bc..cb020059d5 100644
--- a/bin/texera-web-application.dockerfile
+++ b/bin/texera-web-application.dockerfile
@@ -15,7 +15,7 @@
# specific language governing permissions and limitations
# under the License.
-FROM node:22-bookworm AS build-frontend
+FROM node:24-bookworm AS build-frontend
RUN apt-get update && apt-get install -y --no-install-recommends \
python3 build-essential git ca-certificates
diff --git a/frontend/package.json b/frontend/package.json
index c9330e88d9..9407f6282e 100644
--- a/frontend/package.json
+++ b/frontend/package.json
@@ -2,7 +2,7 @@
"name": "gui",
"version": "0.0.0",
"engines": {
- "node": ">=20.19.0"
+ "node": ">=24.0.0"
},
"license": "Apache-2.0",
"scripts": {
@@ -113,7 +113,7 @@
"@types/karma-coverage": "^2",
"@types/lodash": "4.14.179",
"@types/lodash-es": "4.17.4",
- "@types/node": "20.19.39",
+ "@types/node": "24.10.1",
"@types/papaparse": "5.3.5",
"@types/plotly.js-basic-dist-min": "2.12.4",
"@types/quill": "2.0.9",
diff --git a/frontend/yarn.lock b/frontend/yarn.lock
index 74a3634a13..e7769419e9 100644
--- a/frontend/yarn.lock
+++ b/frontend/yarn.lock
@@ -6144,12 +6144,12 @@ __metadata:
languageName: node
linkType: hard
-"@types/node@npm:20.19.39":
- version: 20.19.39
- resolution: "@types/node@npm:20.19.39"
+"@types/node@npm:24.10.1":
+ version: 24.10.1
+ resolution: "@types/node@npm:24.10.1"
dependencies:
- undici-types: "npm:~6.21.0"
- checksum:
10c0/1d16da7b5f47a7415b827fcf3b94d279febf4c14671afec74a03e47856b5270023d9beb1b9aeab4d3b622fd97d61a60206cfc2cca588663181331bc592468289
+ undici-types: "npm:~7.16.0"
+ checksum:
10c0/d6bca7a78f550fbb376f236f92b405d676003a8a09a1b411f55920ef34286ee3ee51f566203920e835478784df52662b5b2af89159d9d319352e9ea21801c002
languageName: node
linkType: hard
@@ -10813,7 +10813,7 @@ __metadata:
"@types/karma-coverage": "npm:^2"
"@types/lodash": "npm:4.14.179"
"@types/lodash-es": "npm:4.17.4"
- "@types/node": "npm:20.19.39"
+ "@types/node": "npm:24.10.1"
"@types/papaparse": "npm:5.3.5"
"@types/plotly.js-basic-dist-min": "npm:2.12.4"
"@types/quill": "npm:2.0.9"
@@ -17376,10 +17376,10 @@ __metadata:
languageName: node
linkType: hard
-"undici-types@npm:~6.21.0":
- version: 6.21.0
- resolution: "undici-types@npm:6.21.0"
- checksum:
10c0/c01ed51829b10aa72fc3ce64b747f8e74ae9b60eafa19a7b46ef624403508a54c526ffab06a14a26b3120d055e1104d7abe7c9017e83ced038ea5cf52f8d5e04
+"undici-types@npm:~7.16.0":
+ version: 7.16.0
+ resolution: "undici-types@npm:7.16.0"
+ checksum:
10c0/3033e2f2b5c9f1504bdc5934646cb54e37ecaca0f9249c983f7b1fc2e87c6d18399ebb05dc7fd5419e02b2e915f734d872a65da2e3eeed1813951c427d33cc9a
languageName: node
linkType: hard