DoDiODev opened a new pull request, #9006:
URL: https://github.com/apache/devlake/pull/9006
## Motivation
Modernizes the `config-ui` frontend toolchain and framework stack to current
supported versions. This unblocks security updates, removes end-of-life
runtimes
and keeps the UI buildable on current Node LTS.
## Scope
Coupled framework/runtime upgrade (must land together to keep the build
green):
- **Runtime/tooling:** Node 18 → 24, Yarn 3.4.1 → 4.17.0 (Corepack, vendored
release swap, `.yarnrc.yml`), nginx base image bump in
`config-ui/Dockerfile`.
- **Build/lint chain:** Vite 8, TypeScript config update, migration from
`.eslintrc.js`/`.eslintignore` to ESLint **flat config**
(`eslint.config.mjs`),
Vitest setup (`vitest.config.ts`, `vitest.setup.ts`) replacing the old
`.file-headerrc`.
- **UI frameworks:** React 18 → 19 and antd 5 → 6, including the resulting
component/ref/hook fixes and a small `miller-columns-select` compatibility
patch (`.yarn/patches/...`).
- **Tests:** new `src/__tests__/main-entry.test.ts` and
`src/plugins/components/__tests__/miller-columns-select.test.tsx`.
All changes are limited to `config-ui/`.
## Note on diff size (please read before reviewing)
The raw diff is **42 files, +6,535 / −6,546 lines**, but **~96% of that is
generated or vendored** and requires no line-by-line review:
| Artifact | ~Lines | Nature |
|---|---|---|
| `yarn.lock` | ~10,621 | generated (Yarn 3→4 lockfile migration) |
| `.yarn/releases/yarn-3.4.1.cjs` → `yarn-4.17.0.cjs` | −911 / +944 |
vendored Yarn binary |
The **actual hand-written review surface is ~700–900 lines** across ~40 small
files: `package.json` (dependency bumps), `eslint.config.mjs` (+87, new flat
config), `vite.config.ts`, `vitest.config.ts`/`setup`, `Dockerfile` (+4), the
antd patch (+34), plus ~25 `.tsx`/`.ts` files with 2–37 lines each of
React-19/antd-6 ref/hook/type fixes, and two new test files.
`git diff --check` flags trailing whitespace only in the two
generated/vendored
artifacts above (Yarn binary + patch file); this is expected.
## Note on the q-dev connection-field changes
Three files under `config-ui/src/plugins/register/q-dev/connection-fields/`
are
modified (`aws-credentials.tsx`, `identity-center-config.tsx`,
`s3-config.tsx`).
These are required by the React 19 upgrade: React 19 removed the
zero-argument
`useRef` overload, so `useRef<string>()` must become
`useRef<string>(undefined)`,
otherwise `tsc --noEmit` fails. One file (`aws-credentials.tsx`) additionally
carries two Prettier-only reformatting hunks (parentheses around `??`, JSX
line-wrapping) required for a green `eslint .`. No behavioral changes.
## Automated tests
All run on Node 24.18.0 / Yarn 4.17.0:
- `yarn install --immutable` → clean (lockfile unchanged)
- `yarn exec tsc --noEmit` → pass
- `yarn exec eslint .` → pass (0 errors, 17 pre-existing unused-var warnings)
- `yarn build` (Vite 8) → pass (1879 modules)
- `yarn test` (Vitest) → 4/4 passed
## Manual test
<!-- to be completed after manual gate: login/setup, connections,
projects/blueprints, pipelines, Grafana embedding -->
## Rollback
Revert this single commit; no data migrations or backend coupling involved.
## Known follow-ups
- Chunk-size warning from Vite (bundle > 500 kB) — pre-existing, out of
scope.
- Peer-dependency warnings (React 19 vs. deps still requesting ^18) are
benign
and resolved via the vendored patch / overrides.
--
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]