Skip to content

chore(webui): Migrate WebUI to Node.js 24.#2373

Draft
junhaoliao wants to merge 2 commits into
y-scope:mainfrom
junhaoliao:feat/webui-nodejs-24
Draft

chore(webui): Migrate WebUI to Node.js 24.#2373
junhaoliao wants to merge 2 commits into
y-scope:mainfrom
junhaoliao:feat/webui-nodejs-24

Conversation

@junhaoliao

@junhaoliao junhaoliao commented Jul 9, 2026

Copy link
Copy Markdown
Member

Description

Migrates the WebUI and package runtime from Node.js 22 to Node.js 24.

This PR:

  • Updates the WebUI package manifests, lockfile, workspace overrides, and
    server TypeScript base config to target Node.js 24 / ES2024.
  • Updates the vendored Node.js toolchain task to download Node.js v24.18.0.
  • Removes the old version suffix from the Node.js task, build directory,
    variables, and packaged binary path because the repo no longer needs multiple
    Node.js runtimes side by side.
  • Updates package, Docker Compose, Helm, taskfile, and WebUI docs references to
    use the unversioned /opt/clp/bin/node and build/nodejs paths.
  • Bumps the Helm chart version for the deployment template change.

Checklist

  • The PR satisfies the contribution guidelines.
  • This is a breaking change and that has been indicated in the PR title, OR this isn't a
    breaking change.
  • Necessary docs have been updated, OR no docs need to be updated.

Validation performed

Scenario 1: YAML and Helm lint auto-fix commands

Task: Run the relevant auto-fix lint commands for the changed YAML,
Taskfile, Compose, and Helm files.

Commands and output:

$ task lint:fix-yaml
task: Task "lint:venv" is up to date
task: [lint:yaml] . "/home/junhao/workspace/5-clp/build/lint-venv/bin/activate"
yamllint --strict \
  --config-file "tools/yscope-dev-utils/exports/lint-configs/.yamllint.yml" \
  ".github" \
  "components/core/.clang-format" \
  "components/core/config" \
  "components/core/tools/" \
  "components/package-template/src/etc" \
  "docs" \
  "taskfile.yaml" \
  "taskfiles" \
  "tools/deployment/package" \
  "tools/deployment/presto-clp"

$ task lint:fix-helm
task: [lint:toolchains:helm] mkdir -p '/home/junhao/workspace/5-clp/build/toolchains/helm'
task: Task "lint:toolchains:remote:curl-/home/junhao/workspace/5-clp/build/toolchains/helm.tar.gz" is up to date
task: [lint:toolchains:remote:download-and-extract-tar-/home/junhao/workspace/5-clp/build/toolchains/helm] rm -rf "/home/junhao/workspace/5-clp/build/toolchains/helm"
mkdir -p  "/home/junhao/workspace/5-clp/build/toolchains/helm"
task: Task "lint:venv" is up to date
task: [lint:toolchains:remote:download-and-extract-tar-/home/junhao/workspace/5-clp/build/toolchains/helm] tar --extract --strip-components="0" --directory "/home/junhao/workspace/5-clp/build/toolchains/helm" --file "/home/junhao/workspace/5-clp/build/toolchains/helm.tar.gz" --no-anchored --wildcards "ct" "etc/chart_schema.yaml" 2> /dev/null
task: [lint:toolchains:helm] export PATH="/home/junhao/workspace/5-clp/build/toolchains/helm:$PATH"
export HELM_INSTALL_DIR="/home/junhao/workspace/5-clp/build/toolchains/helm"
curl --proto "=https" --tlsv1.2 --silent --show-error --fail \
https://raw.githubusercontent.com/helm/helm/main/scripts/get-helm-4 | bash -s -- --no-sudo
Downloading https://get.helm.sh/helm-v4.2.2-linux-amd64.tar.gz
Verifying checksum... Done.
Preparing to install helm into /home/junhao/workspace/5-clp/build/toolchains/helm
helm installed into /home/junhao/workspace/5-clp/build/toolchains/helm/helm
task: [lint:toolchains:helm] cat <<"EOF" > "/home/junhao/workspace/5-clp/build/toolchains/helm/env"
#!/bin/sh
export PATH="/home/junhao/workspace/5-clp/build/toolchains/helm:$PATH"
EOF
task: [lint:helm] . "/home/junhao/workspace/5-clp/build/lint-venv/bin/activate"
. "/home/junhao/workspace/5-clp/build/toolchains/helm/env"
ct lint \
  --chart-dirs="tools/deployment" \
  --chart-yaml-schema="/home/junhao/workspace/5-clp/build/toolchains/helm/etc/chart_schema.yaml" \
  --lint-conf="tools/yscope-dev-utils/exports/lint-configs/.yamllint.yml"
Linting charts...

------------------------------------------------------------------------------------------------------------------------
 Charts to be processed:
------------------------------------------------------------------------------------------------------------------------
 clp => (version: "0.3.2-dev.20", path: "tools/deployment/package-helm")
------------------------------------------------------------------------------------------------------------------------

Directory "tools/deployment/package" is not a valid chart directory. Skipping...
Linting chart "clp => (version: \"0.3.2-dev.20\", path: \"tools/deployment/package-helm\")"
Checking chart "clp => (version: \"0.3.2-dev.20\", path: \"tools/deployment/package-helm\")" for a version bump...
Old chart version: 0.3.2-dev.19
New chart version: 0.3.2-dev.20
Chart version ok.
Validating tools/deployment/package-helm/Chart.yaml...
Validation success! 👍
Validating maintainers...
==> Linting tools/deployment/package-helm

1 chart(s) linted, 0 chart(s) failed

------------------------------------------------------------------------------------------------------------------------
 ✔︎ clp => (version: "0.3.2-dev.20", path: "tools/deployment/package-helm")
------------------------------------------------------------------------------------------------------------------------
All charts linted successfully

Scenario 2: WebUI lint, build, and server tests

Task: Validate the WebUI package set using the repo-managed Node.js
toolchain.

Commands and output:

$ task lint:fix-js
task: Task "toolchains:remote:curl-/home/junhao/workspace/5-clp/build/nodejs.tar.gz" is up to date
task: Task "toolchains:remote:download-and-extract-tar-/home/junhao/workspace/5-clp/build/nodejs" is up to date
task: [toolchains:nodejs] PATH='/home/junhao/workspace/5-clp/build/nodejs/bin':$PATH corepack enable
task: [toolchains:nodejs] cd '/home/junhao/workspace/5-clp/components/webui' && PATH='/home/junhao/workspace/5-clp/build/nodejs/bin':$PATH corepack install
Adding pnpm@11.5.2 to the cache...
task: [lint:js] PATH='/home/junhao/workspace/5-clp/build/nodejs/bin':$PATH pnpm install --frozen-lockfile
Scope: all 5 workspace projects
Already up to date
Done in 539ms using pnpm v11.5.2
task: [lint:js] PATH='/home/junhao/workspace/5-clp/build/nodejs/bin':$PATH pnpm run lint:fix
$ turbo lint:fix --filter='@webui/*'
• turbo 2.9.16

   • Packages in scope: @webui/client, @webui/common, @webui/server
   • Running lint:fix in 3 packages
   • Remote caching disabled

@webui/common:build: cache hit, suppressing logs a1b5d5709a546a0f
@webui/server:lint:fix: cache miss, executing 2c460e0b6df55799
@webui/common:lint:fix: cache hit, replaying logs 00c7c0fbc5604e59
@webui/client:lint:fix: cache hit, replaying logs 5bee1eea36365370
@webui/common:lint:fix: $ pnpm run lint:check --fix
@webui/common:lint:fix: $ eslint . --max-warnings 0 --fix
@webui/common:lint:fix: [@stylistic/eslint-plugin]: You are using deprecated rule("jsx-sort-props"), please use "sort-jsx-props" in "eslint-plugin-perfectionist" instead.
@webui/client:lint:fix: $ pnpm run lint:check --fix
@webui/client:lint:fix: $ eslint . --max-warnings 0 --fix
@webui/client:lint:fix: [@stylistic/eslint-plugin]: You are using deprecated rule("jsx-sort-props"), please use "sort-jsx-props" in "eslint-plugin-perfectionist" instead.
@webui/server:lint:fix: $ pnpm run lint:check --fix
@webui/server:lint:fix: $ eslint . --max-warnings 0 --fix
@webui/server:lint:fix: [@stylistic/eslint-plugin]: You are using deprecated rule("jsx-sort-props"), please use "sort-jsx-props" in "eslint-plugin-perfectionist" instead.

 Tasks:    4 successful, 4 total
Cached:    3 cached, 4 total
  Time:    22.715s

$ task webui
task: [deps:utils:init] mkdir -p '/home/junhao/workspace/5-clp/build/deps'
task: [deps:utils:init] mkdir -p '/home/junhao/workspace/5-clp/build/deps/cpp'
task: [deps:utils:init] mkdir -p '/home/junhao/workspace/5-clp/build/deps/cpp/checksums'
task: Task "toolchains:remote:curl-/home/junhao/workspace/5-clp/build/nodejs.tar.gz" is up to date
task: [deps:utils:init] mkdir -p '/home/junhao/workspace/5-clp/build/deps/cpp/cmake-settings'
task: Task "deps:yscope-dev-utils:remote:curl-/home/junhao/workspace/5-clp/build/yscope-log-viewer.tar.gz" is up to date
task: Task "deps:yscope-dev-utils:remote:download-and-extract-tar-/home/junhao/workspace/5-clp/components/webui/packages/yscope-log-viewer" is up to date
task: Task "toolchains:remote:download-and-extract-tar-/home/junhao/workspace/5-clp/build/nodejs" is up to date
task: [toolchains:nodejs] PATH='/home/junhao/workspace/5-clp/build/nodejs/bin':$PATH corepack enable
task: [toolchains:nodejs] cd '/home/junhao/workspace/5-clp/components/webui' && PATH='/home/junhao/workspace/5-clp/build/nodejs/bin':$PATH corepack install
Adding pnpm@11.5.2 to the cache...
task: [webui:dist] PATH='/home/junhao/workspace/5-clp/build/nodejs/bin':$PATH pnpm install --frozen-lockfile
Scope: all 5 workspace projects
Already up to date
Done in 499ms using pnpm v11.5.2
task: [webui:dist] PATH='/home/junhao/workspace/5-clp/build/nodejs/bin':$PATH pnpm run build
$ turbo build
• turbo 2.9.16

   • Packages in scope: @webui/client, @webui/common, @webui/server, yscope-log-viewer
   • Running build in 4 packages
   • Remote caching disabled

@webui/common:build: cache hit, suppressing logs a1b5d5709a546a0f
@webui/server:build: cache miss, executing 5528ffdce1dec320
yscope-log-viewer:build: cache hit, suppressing logs bd6a236952ee3a05
@webui/client:build: cache hit, suppressing logs fce758b72e449a73
@webui/server:build: $ tsc

 Tasks:    4 successful, 4 total
Cached:    3 cached, 4 total
  Time:    4.627s

task: [webui] rm -rf '/home/junhao/workspace/5-clp/build/webui'
task: [webui] mkdir -p '/home/junhao/workspace/5-clp/build/webui'
task: [webui] rsync -a 'packages/client/dist/' '/home/junhao/workspace/5-clp/build/webui/client/'
task: [webui] rsync -a 'packages/yscope-log-viewer/dist/' '/home/junhao/workspace/5-clp/build/webui/yscope-log-viewer/'
task: [webui] PATH='/home/junhao/workspace/5-clp/build/nodejs/bin':$PATH pnpm deploy --prod --filter=@webui/server '/home/junhao/workspace/5-clp/build/webui/server'
Packages are copied from the content-addressable store to the virtual store.
  Content-addressable store is at: /home/junhao/.local/share/pnpm/store/v11
  Virtual store is at:             ../../build/webui/server/node_modules/.pnpm
../../build/webui/server                 | Progress: resolved 1, reused 0, downloaded 0, added 0
../../build/webui/server                 | +202 ++++++++++++++++++++
../../build/webui/server                 | Progress: resolved 202, reused 202, downloaded 0, added 202, done
task: [webui] rsync -a 'settings.json' '/home/junhao/workspace/5-clp/build/webui/settings.json'

$ cd components/webui && PATH='/home/junhao/workspace/5-clp/build/nodejs/bin':$PATH pnpm --filter @webui/server test
$ tap --include='**/*test.ts'
TAP version 14
1..1
# Subtest: src/test/example.test.ts
    # Subtest: Tests the example routes
        ok 1 - should be equal
        ok 2 - should match pattern
        ok 3 - should be equal
        ok 4 - should match pattern
        1..4
    ok 1 - Tests the example routes # time=108.915ms

    1..1
ok 1 - src/test/example.test.ts # time=1881.897ms

# { total: 4, pass: 4 }
# time=1988.735ms

Scenario 3: Node.js 24 and unversioned-name checks

Task: Verify the repo-managed runtime is Node.js 24 and old versioned
task/path/binary names are no longer referenced.

Commands and output:

$ build/nodejs/bin/node --version
v24.18.0

$ rg "nodejs-(22|24)|node-(22|24)|G_NODEJS_(22|24)|NODEJS_(22|24)|build/nodejs-|bin/node-"

rg produced no output and exited with status 1 because there were no matches.

@coderabbitai

coderabbitai Bot commented Jul 9, 2026

Copy link
Copy Markdown
Contributor

Important

Review skipped

Draft detected.

Please check the settings in the CodeRabbit UI or the .coderabbit.yaml file in this repository. To trigger a single review, invoke the @coderabbitai review command.

⚙️ Run configuration

Configuration used: Organization UI

Review profile: ASSERTIVE

Plan: Pro

Run ID: a79b3a43-9fae-498a-9467-1df0d7cb5b62

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant