Skip to content

chore(deps): upgrade Nx to 23.1.0, TypeScript to 6.0.3, and align package versions - #9934

Open
rahul-rocket wants to merge 10 commits into
developfrom
chore/update-packages-v2
Open

chore(deps): upgrade Nx to 23.1.0, TypeScript to 6.0.3, and align package versions#9934
rahul-rocket wants to merge 10 commits into
developfrom
chore/update-packages-v2

Conversation

@rahul-rocket

@rahul-rocket rahul-rocket commented Aug 8, 2026

Copy link
Copy Markdown
Collaborator

Description

Dependency and toolchain refresh across the monorepo: Nx 22.x → 23.1.0, TypeScript 5.9 → 6.0.3, and version alignment for shared dev dependencies across the root, apps, and all sub-packages.

This replaces the earlier chore/update-packages branch, which was based on a develop from 2026-07-19 and had fallen 196 commits behind. The same seven commits have been rebased onto current develop.

Toolchain upgrades

  • Nx 22.5.2 → 23.1.0 — all @nx/* packages pinned to 23.1.0 (previously carets on ^22.5.2)
  • TypeScript 5.9.3 → 6.0.3 at the root, and ~6.0.3 in every sub-package's devDependencies
  • Webpack 5.104.1 → 5.108.4, webpack-cli 6 → 7.2.1, added webpack-dev-server ^5.2.1
  • Jest 30.0.0 → 30.3.0, ts-jest 29.4.6 → 29.4.9
  • Cypress pinned to 15.18.1, eslint-plugin-cypress 2.13.4 → 3.6.0
  • @angular-eslint/* 21.0.0 → 21.4.0
  • Verdaccio pinned to 6.8.0

Nx 23 migration

  • Removed the deprecated setupFile option from the @nx/jest:jest target in apps/gauzy/project.json (the option no longer exists in @nx/jest 23)
  • Added "^default" to @nx/eslint:lint inputs in nx.json
  • Moved defaultConfiguration above options in the gauzy serve target
  • Reformatted the ai-provider-* project.json files to match Prettier's current output

TypeScript 6 compatibility

ignoreDeprecations: "6.0" was added to tsconfig.base.json, the root tsconfig.json, and every package tsconfig.json to acknowledge options deprecated in TS 6.

tsconfig.base.json also pins several options that TS 6 changed the defaults for, so existing code keeps compiling:

"strict": false,
"noUncheckedSideEffectImports": false,
"esModuleInterop": false,
"types": ["*"]

Review notes

Three things reviewers should weigh in on:

  1. "types": ["*"] in tsconfig.base.jsontypes takes @types package names, not globs, so this is unlikely to do what it looks like it does. It also disables automatic inclusion of all @types packages. Most tsconfig.lib.json / tsconfig.spec.json files override types, so the blast radius is limited to configs inheriting base directly, but this should probably just be removed.
  2. strict: false / esModuleInterop: false at the base config — TS 6 turns both on by default. Pinning them off repo-wide is a reasonable migration step, but it's worth agreeing that it's temporary rather than the new baseline.
  3. gauzy unit test setup — dropping setupFile was required by Nx 23, but nothing replaced it, so apps/gauzy/src/test-setup.ts (import 'jest-preset-angular') no longer loads. Separately, the target points at apps/gauzy/jest.config.js while the file on disk is jest.config.ts, which predates this branch. Both probably want fixing together, either here or in a follow-up.

Type of change

  • Chore (dependency / tooling update, no functional change)

Checklist

  • Rebased onto current develop
  • yarn install clean and yarn.lock regenerated
  • Typecheck passes under TypeScript 6
  • Nx builds pass for core packages and apps

Summary by cubic

Upgrade monorepo tooling to nx/@nx/* 23.1.1 and align package versions across apps/packages. Keep typescript at 5.9.3 and remove TS 6-only config; also drop a deprecated Nx dependsOn setting.

  • Dependencies

    • Tooling: nx/@nx/* → 23.1.1, @angular-eslint/* → 21.4.0, keep typescript at ^5.9.3.
    • Testing: jest → 30.3.0, ts-jest → 29.4.9, cypress pinned to 15.18.1, eslint-plugin-cypress → 3.6.0.
    • Bundling: webpack → 5.108.4, webpack-cli → 7.2.1, add webpack-dev-server 5.2.1, verdaccio → 6.8.0.
    • Libraries aligned: @grpc/grpc-js → 1.7.3, mysql2 → 3.17.3, @nestjs/common/@nestjs/core peerDeps → 11.1.26, @nestjs/swagger → 11.4.4, zod → 4.3.6, @types/express → 5.0.3.
  • Migration

    • Nx 23: removed deprecated setupFile from @nx/jest in apps/gauzy, added ^default to @nx/eslint:lint inputs, moved serve.defaultConfiguration above options, reformatted project.json.
    • Nx 23: dropped deprecated dependsOn.projects: "self" in packages/ui-config and packages/ui-core build targets.
    • TS revert: removed "ignoreDeprecations": "6.0" and TS 6-only flags from all tsconfigs.

Written for commit 6e0410b. Summary will update on new commits.

Review in cubic

- Update nx.json eslint lint inputs to include ^default
- Reformat project.json files (ai-provider-*, constants, desktop-activity, desktop-core)
- Update apps/gauzy/project.json serve config and remove deprecated setupFile
- Add ignoreDeprecations: '6.0' to tsconfig.base.json and all sub-package tsconfig.json
- Add TS6 compat flags to tsconfig.base.json: strict: false, noUncheckedSideEffectImports: false, types: ['*']
- Reformat electron tsconfig files to use tabs consistently
- Fix path formatting in root tsconfig.json
- Upgrade @nx/* packages from ^22.5.2 to 23.1.0
- Upgrade nx from ^22.5.2 to 23.1.0
- Upgrade @angular-eslint/* from 21.0.0 to 21.4.0
- Upgrade cypress from ^15.9.0 to 15.18.1
- Upgrade eslint-plugin-cypress from 2.13.4 to 3.6.0
- Upgrade jest from 30.0.0 to 30.3.0
- Upgrade ts-jest from 29.4.6 to 29.4.9
- Upgrade typescript from ^5.9.3 to 6.0.3
- Upgrade webpack from 5.104.1 to 5.108.4
- Upgrade webpack-cli from ^6.0.1 to 7.2.1
- Upgrade verdaccio from ^6.0.5 to 6.8.0
- Add webpack-dev-server ^5.2.1
Align package versions to ensure consistency across the monorepo:

- typescript: ^5.9.3 -> ~6.0.3 (43 sub-packages)
- @nestjs/common: ^11.1.14 -> ^11.1.26 (6 AI plugin peerDeps)
- @nestjs/core: ^11.1.14 -> ^11.1.26 (6 AI plugin peerDeps)
- @nestjs/swagger: ^11.2.6 -> ^11.4.4 (ai-chat)
- @types/express: ^5.0.1 -> ^5.0.3 (7 plugin packages)
- tslib: ^2.3.0 -> ^2.6.2 (integration-plane, scheduler)
- mysql2: ^3.16.3 -> ^3.17.3 (core, agent, desktop-timer)
- ts-jest: 29.4.6 -> 29.4.9 (core)
- jest: 30.0.0 -> 30.3.0 (core)
- zod: ^4.1.13 -> ^4.3.6 (ai-chat)
- @grpc/grpc-js: ^1.6.7 -> ^1.7.3 (desktop, desktop-api, desktop-timer, server, server-api)
- mysql2: ^3.16.3 -> ^3.17.3 (agent, desktop-timer)
- jest: 30.0.0 -> 30.3.0 (gauzy, gauzy-e2e)
- webpack: 5.104.1 -> 5.108.4 (gauzy)
- webpack-cli: ^6.0.1 -> 7.2.1 (gauzy)
- karma-jasmine-html-reporter: ^1.5.4 -> ^1.7.0 (gauzy)
@coderabbitai

coderabbitai Bot commented Aug 8, 2026

Copy link
Copy Markdown
Contributor

Review Change Stack

Summary by CodeRabbit

  • Documentation

    • Added migration guidance for ESLint flat configuration, updated type rules, and post-migration type-check verification.
  • Chores

    • Updated development tooling and runtime libraries, including Jest, Webpack, Nx, NestJS, gRPC, MySQL, and related packages.
    • Improved workspace ignore rules and lint configuration.
    • Simplified select project configuration settings and formatting without changing behavior.

Walkthrough

The pull request refreshes workspace dependencies, updates Nx and project target configuration, adds ignore rules, and documents Nx 23.1.0 ESLint and Jest migration procedures.

Changes

Workspace refresh

Layer / File(s) Summary
Dependency and metadata updates
.gitignore, .prettierignore, apps/*/package.json, package.json, packages/core/package.json, packages/plugins/*/package.json, packages/scheduler/package.json
Updates application, plugin, core, NestJS, gRPC, MySQL, Jest, Webpack, Cypress, and related dependency versions.
Project and target configuration
apps/gauzy/project.json, nx.json, packages/plugins/*/project.json, packages/ui-config/project.json, packages/ui-core/project.json
Adjusts serve and Jest settings, adds dependent default inputs to lint caching, removes self-project restrictions, and normalizes project arrays.
Nx migration guidance
tools/ai-migrations/@nx/eslint/23.1.0/convert-to-flat-config.md, tools/ai-migrations/@nx/eslint/23.1.0/migrate-ban-types-rule.md, tools/ai-migrations/@nx/jest/23.1.0/verify-typecheck.md
Adds procedures for ESLint flat-config migration, replacing ban-types, and verifying typechecks after Nx 23.1 migration.

Estimated code review effort: 3 (Moderate) | ~20 minutes

Possibly related PRs

Suggested reviewers: evereq

Poem

I hop through manifests, tidy and bright,
New tools and versions align just right.
Nx paths are clearer, lint rules agree,
Migration notes wait beneath the tree.
A carrot for each refreshed dependency!

🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check name Status Explanation
Title check ✅ Passed The title clearly identifies the dependency refresh and Nx upgrade, although its TypeScript and Nx patch versions do not match the final changes.
Description check ✅ Passed The description directly covers the monorepo dependency refresh, Nx migration, version alignment, and related configuration changes.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.
✨ Finishing Touches 💡 1
🛠️ Fix failing CI checks 💡
  • Create stacked PR
  • Commit on current branch
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch chore/update-packages-v2

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.

@socket-security

socket-security Bot commented Aug 8, 2026

Copy link
Copy Markdown

@socket-security

socket-security Bot commented Aug 8, 2026

Copy link
Copy Markdown

Warning

Review the following alerts detected in dependencies.

According to your organization's Security Policy, it is recommended to resolve "Warn" alerts. Learn more about Socket for GitHub.

Action Severity Alert  (click "▶" to expand/collapse)
Warn High
Obfuscated code: npm css-minimizer-webpack-plugin is 90.0% likely obfuscated

Confidence: 0.90

Location: Package overview

From: yarn.locknpm/@nx/webpack@23.1.1npm/css-minimizer-webpack-plugin@8.0.0

ℹ Read more on: This package | This alert | What is obfuscated code?

Next steps: Take a moment to review the security alert above. Review the linked package source code to understand the potential risk. Ensure the package is not malicious before proceeding. If you're unsure how to proceed, reach out to your security team or ask the Socket team for help at support@socket.dev.

Suggestion: Packages should not obfuscate their code. Consider not using packages with obfuscated code.

Mark the package as acceptable risk. To ignore this alert only in this pull request, reply with the comment @SocketSecurity ignore npm/css-minimizer-webpack-plugin@8.0.0. You can also ignore all packages with @SocketSecurity ignore-all. To ignore an alert for all future pull requests, use Socket's Dashboard to change the triage state of this alert.

Warn High
Obfuscated code: npm webpack is 90.0% likely obfuscated

Confidence: 0.90

Location: Package overview

From: yarn.locknpm/@nx/angular@23.1.1npm/webpack@5.105.2

ℹ Read more on: This package | This alert | What is obfuscated code?

Next steps: Take a moment to review the security alert above. Review the linked package source code to understand the potential risk. Ensure the package is not malicious before proceeding. If you're unsure how to proceed, reach out to your security team or ask the Socket team for help at support@socket.dev.

Suggestion: Packages should not obfuscate their code. Consider not using packages with obfuscated code.

Mark the package as acceptable risk. To ignore this alert only in this pull request, reply with the comment @SocketSecurity ignore npm/webpack@5.105.2. You can also ignore all packages with @SocketSecurity ignore-all. To ignore an alert for all future pull requests, use Socket's Dashboard to change the triage state of this alert.

Warn High
Obfuscated code: npm webpack is 90.0% likely obfuscated

Confidence: 0.90

Location: Package overview

From: apps/gauzy/package.jsonnpm/webpack@5.108.4

ℹ Read more on: This package | This alert | What is obfuscated code?

Next steps: Take a moment to review the security alert above. Review the linked package source code to understand the potential risk. Ensure the package is not malicious before proceeding. If you're unsure how to proceed, reach out to your security team or ask the Socket team for help at support@socket.dev.

Suggestion: Packages should not obfuscate their code. Consider not using packages with obfuscated code.

Mark the package as acceptable risk. To ignore this alert only in this pull request, reply with the comment @SocketSecurity ignore npm/webpack@5.108.4. You can also ignore all packages with @SocketSecurity ignore-all. To ignore an alert for all future pull requests, use Socket's Dashboard to change the triage state of this alert.

View full report

rahul-rocket and others added 3 commits August 8, 2026 13:10
- Update all @nx/* packages and the nx CLI to 23.1.1
- Regenerate yarn.lock against the updated Nx version

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Pin typescript to ^5.9.3 across the root package.json and all app/package
manifests, and drop the TypeScript 6 only compiler options that came with
the upgrade:

- Remove "ignoreDeprecations": "6.0" from every tsconfig.
- Remove the strict/noUncheckedSideEffectImports/types/esModuleInterop
  overrides added to tsconfig.base.json for the TS 6 trial.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Nx deprecated `projects: "self"` in `dependsOn` entries and will remove it
in v24. Omitting `projects` is the sanctioned way to express a same-project
dependency, so drop the key from ui-config:build and ui-core:build.

`params: "forward"` is kept explicitly: it defaults to "ignore", so
collapsing these to bare target strings would have silently stopped
forwarding params to the dependent target.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
@rahul-rocket
rahul-rocket marked this pull request as ready for review August 8, 2026 08:09
@sonarqubecloud

sonarqubecloud Bot commented Aug 8, 2026

Copy link
Copy Markdown

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 5

🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@apps/gauzy/package.json`:
- Around line 193-194: Remove the stale webpack and webpack-cli entries from the
local resolutions configuration in apps/gauzy/package.json so the declared
dependencies webpack 5.108.4 and webpack-cli 7.2.1 are used. Do not retain
conflicting local overrides; only move the policy to the root manifest if it
uses those same versions.

In `@package.json`:
- Around line 762-764: Update the root package.json dependency for
jest-environment-node from the 29.x range to the compatible 30.x line, matching
the pinned Jest version (30.3.2 or the repository’s established 30.x
convention). Leave the other Jest dependencies and configuration unchanged.
- Around line 707-708: Update eslint.config.js to replace `@nx/eslint-plugin-nx`
imports and usage with the corresponding `@nx/eslint-plugin` API, then remove the
stale `@nx/eslint-plugin-nx` entry from the root dependencies while retaining the
Nx 23.1.1 package.

In `@tools/ai-migrations/`@nx/eslint/23.1.0/convert-to-flat-config.md:
- Around line 155-157: Add the migration-specific terms to Cspell’s workspace
technical-word dictionary (or apply file-local ignore directives): add tseslint
at tools/ai-migrations/@nx/eslint/23.1.0/convert-to-flat-config.md:155-157,
codeframe and checkstyle at :218, rulesdir at :244, and typecheck at
tools/ai-migrations/@nx/jest/23.1.0/verify-typecheck.md:1-13.

In `@tools/ai-migrations/`@nx/eslint/23.1.0/migrate-ban-types-rule.md:
- Around line 24-29: Update the migration guidance for custom
`@typescript-eslint/ban-types` types so every custom banned-type entry is
preserved under `@typescript-eslint/no-restricted-types`, including its
corresponding restriction details where supported. Only drop options without an
equivalent after applying this mapping, while retaining the existing mappings
for {}, Function, and wrapper-object types.
🪄 Autofix

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: ASSERTIVE

Plan: Pro Plus

Run ID: 93faa565-fc16-4477-b07a-c586b29ad457

📥 Commits

Reviewing files that changed from the base of the PR and between 1f01c83 and 6e0410b.

⛔ Files ignored due to path filters (1)
  • yarn.lock is excluded by !**/yarn.lock, !**/*.lock
📒 Files selected for processing (42)
  • .gitignore
  • .prettierignore
  • apps/agent/package.json
  • apps/desktop-api/package.json
  • apps/desktop-timer/package.json
  • apps/desktop/package.json
  • apps/gauzy-e2e/package.json
  • apps/gauzy/package.json
  • apps/gauzy/project.json
  • apps/server-api/package.json
  • apps/server/package.json
  • apps/worker/package.json
  • nx.json
  • package.json
  • packages/core/package.json
  • packages/plugin/package.json
  • packages/plugins/ai-chat/package.json
  • packages/plugins/ai-provider-anthropic/package.json
  • packages/plugins/ai-provider-anthropic/project.json
  • packages/plugins/ai-provider-gauzy-ai/package.json
  • packages/plugins/ai-provider-gauzy-ai/project.json
  • packages/plugins/ai-provider-openai/package.json
  • packages/plugins/ai-provider-openai/project.json
  • packages/plugins/ai-provider-openrouter/package.json
  • packages/plugins/ai-provider-openrouter/project.json
  • packages/plugins/ai-provider-vercel-gateway/package.json
  • packages/plugins/ai-provider-vercel-gateway/project.json
  • packages/plugins/camshot/package.json
  • packages/plugins/integration-activepieces/package.json
  • packages/plugins/integration-github/package.json
  • packages/plugins/integration-hubstaff/package.json
  • packages/plugins/integration-plane/package.json
  • packages/plugins/integration-sim/package.json
  • packages/plugins/integration-upwork/package.json
  • packages/plugins/soundshot/package.json
  • packages/plugins/videos/package.json
  • packages/scheduler/package.json
  • packages/ui-config/project.json
  • packages/ui-core/project.json
  • tools/ai-migrations/@nx/eslint/23.1.0/convert-to-flat-config.md
  • tools/ai-migrations/@nx/eslint/23.1.0/migrate-ban-types-rule.md
  • tools/ai-migrations/@nx/jest/23.1.0/verify-typecheck.md
💤 Files with no reviewable changes (4)
  • packages/plugins/integration-github/package.json
  • packages/plugin/package.json
  • packages/ui-config/project.json
  • packages/ui-core/project.json

Comment thread apps/gauzy/package.json
Comment on lines +193 to +194
"webpack": "5.108.4",
"webpack-cli": "7.2.1",

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🗄️ Data Integrity & Integration | 🔵 Trivial | ⚡ Quick win

🧩 Analysis chain

🏁 Script executed:

#!/bin/bash
set -euo pipefail

python - <<'PY'
import json
from pathlib import Path

manifest = json.loads(Path("apps/gauzy/package.json").read_text())

for name in ("webpack", "webpack-cli"):
    print(
        name,
        "direct=", manifest["devDependencies"].get(name),
        "local_resolution=", manifest.get("resolutions", {}).get(name),
    )
PY

rg -n -C 3 '"resolutions"|"webpack"|"webpack-cli"' package.json apps/gauzy/package.json
rg -n -C 2 '^(webpack|webpack-cli)@' yarn.lock

Repository: ever-co/ever-gauzy

Length of output: 3404


🏁 Script executed:

#!/bin/bash
set -euo pipefail

python3 - <<'PY'
import json
from pathlib import Path

root = json.loads(Path("package.json").read_text())
gauzy = json.loads(Path("apps/gauzy/package.json").read_text())

for name in ("webpack", "webpack-cli"):
    root_res = root.get("resolutions", {}).get(name)
    gauzy_dep = gauzy.get("devDependencies", {}).get(name)
    gauzy_res = gauzy.get("resolutions", {}).get(name)
    gauge_cli_dep = gauzy.get("dependencies", {}).get(name)
    print(f"{name}:")
    print(f"  root manifest resolutions={root_res!r}")
    print(f"  apps/gauzy devDependencies={gauzy_dep!r}")
    print(f"  apps/gauzy dependencies={gauge_cli_dep!r}")
    print(f"  apps/gauzy resolutions={gauzy_res!r}")

lock_text = Path("yarn.lock").read_text()
for name in ("webpack-cli@7.2.1:", "webpack@5.108.4:", "webpack@5.104.1, webpack@^5, webpack@^5.80.0, webpack@^5.88.0:", "webpack-cli@^6.0.1:"):
    idx = lock_text.find(name)
    print(f"\nLock entry {name!r} present={idx != -1}")
PY

Repository: ever-co/ever-gauzy

Length of output: 679


Remove the stale apps/gauzy Webpack resolutions.

apps/gauzy/package.json now declares webpack 5.108.4 and webpack-cli 7.2.1, but its local resolutions still override them to webpack 5.104.1 and webpack-cli ^6.0.1. If resolved, the dependency versions will not match the intended upgrade. Either move the policy to the root manifest with matching versions, or remove these stale local overrides.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@apps/gauzy/package.json` around lines 193 - 194, Remove the stale webpack and
webpack-cli entries from the local resolutions configuration in
apps/gauzy/package.json so the declared dependencies webpack 5.108.4 and
webpack-cli 7.2.1 are used. Do not retain conflicting local overrides; only move
the policy to the root manifest if it uses those same versions.

Comment thread package.json
Comment on lines +707 to 708
"@nx/eslint-plugin": "23.1.1",
"@nx/eslint-plugin-nx": "16.0.0-beta.1",

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🎯 Functional Correctness | 🟡 Minor | ⚡ Quick win

🧩 Analysis chain

🏁 Script executed:

#!/usr/bin/env bash
set -euo pipefail

rg --hidden -n \
  --glob 'eslint.config.*' \
  --glob '.eslintrc*' \
  --glob 'nx.json' \
  '`@nx/eslint-plugin-nx`|`@nx/eslint-plugin`' .

yarn why `@nx/eslint-plugin-nx`
yarn why `@nx/eslint-plugin`

Repository: ever-co/ever-gauzy

Length of output: 2199


🏁 Script executed:

#!/usr/bin/env bash
set -euo pipefail

echo "## package.json relevant deps"
sed -n '680,730p' package.json

echo
echo "## root eslint.config.js"
cat -n eslint.config.js

echo
echo "## package manager lock references"
rg -n '"`@nx/eslint-plugin-nx`"|"`@nx/eslint-plugin`"' package.json yarn.lock || true

echo
echo "## npm metadata for `@nx/eslint-plugin-nx` versions"
npm view `@nx/eslint-plugin-nx` versions --json | sed -n '1,80p'
npm view `@nx/eslint-plugin-nx`@16.0.0-beta.1 --json | sed -n '1,20p'

Repository: ever-co/ever-gauzy

Length of output: 3584


Remove the legacy Nx ESLint package usage from the root config.

eslint.config.js imports @nx/eslint-plugin-nx, but that package only has 16.0.0-beta releases while this workspace uses Nx 23.1.1 packages and @nx/eslint-plugin. Migrate the root ESLint config to @nx/eslint-plugin and delete the stale @nx/eslint-plugin-nx dependency.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@package.json` around lines 707 - 708, Update eslint.config.js to replace
`@nx/eslint-plugin-nx` imports and usage with the corresponding `@nx/eslint-plugin`
API, then remove the stale `@nx/eslint-plugin-nx` entry from the root dependencies
while retaining the Nx 23.1.1 package.

Comment thread package.json
Comment on lines +762 to 764
"jest": "30.3.0",
"jest-environment-jsdom": "30.0.0",
"jest-environment-node": "^29.7.0",

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🎯 Functional Correctness | 🟠 Major | ⚡ Quick win

🧩 Analysis chain

🏁 Script executed:

#!/usr/bin/env bash
set -euo pipefail

rg --hidden -n -C 2 \
  --glob 'package.json' \
  --glob '**/project.json' \
  --glob 'jest.config.*' \
  --glob '**/*.spec.*' \
  'jest-environment-node|jest-environment-jsdom|jest-jasmine2|testEnvironment|`@jest-environment`' .

yarn why jest-environment-node

Repository: ever-co/ever-gauzy

Length of output: 22571


🏁 Script executed:

#!/usr/bin/env bash
set -euo pipefail

echo "Relevant package.json dependency lines:"
python3 - <<'PY'
import json
p=json.load(open('package.json'))
for key in ['jest','jest-environment-jsdom','jest-environment-node','jest-jasmine2','jest-util']:
    print(f"{key}: {p.get('devDependencies',{}).get(key)}")
PY

echo
echo "Lockfile references for jest-environment-node:"
fd '^(yarn.lock|package-lock.json|pnpm-lock.yaml)$' -x sh -c 'echo "--- $1"; rg -n "jest-environment-node" "$1" | head -80' sh {}

Repository: ever-co/ever-gauzy

Length of output: 1087


🏁 Script executed:

#!/usr/bin/env bash
set -euo pipefail

echo "Search for explicit package environment configuration:"
rg --hidden -n \
  --glob 'package.json' \
  --glob 'nx.json' \
  --glob 'jest.preset.js' \
  --glob 'jest.config.*' \
  --glob 'project.json' \
  'jest-environment-node|testEnvironment|preset' .

Repository: ever-co/ever-gauzy

Length of output: 26514


Keep the root Jest environment packages on the same 30.x line.

package.json pins jest to 30.3.2 and several Jest configs use environment strings such as node, while jest-environment-node still specifies ^29.7.0. This introduces a direct root package and yarn hoists jest-environment-node@29.7.0; update this dependency to a compatible 30.3.2/30.x value to avoid mixed Jest runtime expectations.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@package.json` around lines 762 - 764, Update the root package.json dependency
for jest-environment-node from the 29.x range to the compatible 30.x line,
matching the pinned Jest version (30.3.2 or the repository’s established 30.x
convention). Leave the other Jest dependencies and configuration unchanged.

Comment on lines +155 to +157
import tseslint from 'typescript-eslint';

export default [...tseslint.configs.recommended];

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

📐 Maintainability & Code Quality | 🟡 Minor | ⚡ Quick win

Add the migration terms to Cspell's technical-word dictionary.

The new guides contain valid package, formatter, option, and Nx target identifiers that the spelling check does not recognize. Add them to the workspace dictionary or use file-local Cspell ignore directives.

  • tools/ai-migrations/@nx/eslint/23.1.0/convert-to-flat-config.md#L155-L157: add tseslint.
  • tools/ai-migrations/@nx/eslint/23.1.0/convert-to-flat-config.md#L218-L218: add codeframe and checkstyle.
  • tools/ai-migrations/@nx/eslint/23.1.0/convert-to-flat-config.md#L244-L244: add rulesdir.
  • tools/ai-migrations/@nx/jest/23.1.0/verify-typecheck.md#L1-L13: add typecheck.
🧰 Tools
🪛 GitHub Actions: Check Spelling and Typos with cspell / 0_Cspell.txt

[warning] 155-155: cspell: Unknown word (tseslint)


[warning] 157-157: cspell: Unknown word (tseslint)

🪛 GitHub Actions: Check Spelling and Typos with cspell / Cspell

[error] 155-155: cspell: Unknown word (tseslint)


[error] 157-157: cspell: Unknown word (tseslint)

🪛 GitHub Check: Cspell

[warning] 157-157:
Unknown word (tseslint)


[warning] 155-155:
Unknown word (tseslint)

📍 Affects 2 files
  • tools/ai-migrations/@nx/eslint/23.1.0/convert-to-flat-config.md#L155-L157 (this comment)
  • tools/ai-migrations/@nx/eslint/23.1.0/convert-to-flat-config.md#L218-L218
  • tools/ai-migrations/@nx/eslint/23.1.0/convert-to-flat-config.md#L244-L244
  • tools/ai-migrations/@nx/jest/23.1.0/verify-typecheck.md#L1-L13
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@tools/ai-migrations/`@nx/eslint/23.1.0/convert-to-flat-config.md around lines
155 - 157, Add the migration-specific terms to Cspell’s workspace technical-word
dictionary (or apply file-local ignore directives): add tseslint at
tools/ai-migrations/@nx/eslint/23.1.0/convert-to-flat-config.md:155-157,
codeframe and checkstyle at :218, rulesdir at :244, and typecheck at
tools/ai-migrations/@nx/jest/23.1.0/verify-typecheck.md:1-13.

Sources: Linters/SAST tools, Pipeline failures

Comment on lines +24 to +29
In every ESLint flat config (`eslint.config.{mjs,cjs,js,cts,ts,mts}`) that sets
`@typescript-eslint/ban-types`, replace that single entry with the three rules
above. The options do not map 1:1: if the old entry was just `'error'`/`'warn'`,
set all three to that level; if it customized `types`/`extendDefaults`, translate
the intent to whichever successor rule covers each banned type and drop anything
with no equivalent. Then run `nx run-many -t lint` and confirm the configs load.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🎯 Functional Correctness | 🟠 Major | ⚡ Quick win

🧩 Analysis chain

🏁 Script executed:

#!/bin/bash
set -euo pipefail

echo "== candidate file =="
sed -n '1,80p' tools/ai-migrations/@nx/eslint/23.1.0/migrate-ban-types-rule.md

echo "== related files =="
git ls-files 'tools/ai-migrations/@nx/eslint/23.1.0/*' | sed -n '1,120p'

echo "== docs references =="
rg -n "no-restricted-types|ban-types|wrapper-object-types|restrict|types" tools/ai-migrations/@nx/eslint -S || true

Repository: ever-co/ever-gauzy

Length of output: 4890


🌐 Web query:

@typescript-eslint ban-types no-restricted-types successor

💡 Result:

In typescript-eslint v8, the @typescript-eslint/ban-types rule was deprecated and removed [1][2][3]. It has been replaced by several more targeted rules to separate its dual responsibilities: banning configurable types versus banning specific built-in types [4][5][3]. The functionality previously covered by @typescript-eslint/ban-types is now split across the following four rules [1][6][3]: 1. @typescript-eslint/no-restricted-types: This is the direct successor for the configurable aspect of the old rule [1][4]. It allows you to define a custom list of types to ban and provides options for custom error messages, autofixes, and suggestions [7][8]. It does not have any types enabled by default [1][3]. 2. @typescript-eslint/no-empty-object-type: Replaces the portion of ban-types that banned the built-in {} type in confusing locations [1][9]. 3. @typescript-eslint/no-unsafe-function-type: Replaces the portion of ban-types that banned the built-in Function type [1][4]. 4. @typescript-eslint/no-wrapper-object-types: Replaces the portion of ban-types that banned Object and built-in class wrappers like Number, Boolean, and String [1][2]. If you were previously using @typescript-eslint/ban-types, you should migrate to these specific rules, which are typically included in the recommended configurations, or enable them manually in your ESLint configuration [3].

Citations:


🌐 Web query:

typescript-eslint no-restricted-types migrate ban-types types

💡 Result:

The @typescript-eslint/ban-types rule has been deprecated and removed in typescript-eslint v8 [1][2][3]. It has been replaced by more targeted rules to provide better configuration and clarity [1][4]. To migrate from ban-types, you should replace it with the following rules depending on your needs: 1. Use @typescript-eslint/no-restricted-types for custom bans: This is the direct replacement for the user-configurable portion of ban-types [1][2][4]. Unlike the original rule, it has no default options [5][3]. It allows you to define a specific list of types to ban, optionally providing custom error messages, autofixers (fixWith), and suggestions [5][6]. 2. Use specialized rules for common built-in types: The built-in defaults previously covered by ban-types are now handled by three dedicated, recommended rules [1][3][4]: - @typescript-eslint/no-empty-object-type: Bans the built-in {} type in certain confusing locations [1][2]. - @typescript-eslint/no-unsafe-function-type: Bans the use of the built-in Function type [1][2][4]. - @typescript-eslint/no-wrapper-object-types: Bans the use of Object and built-in class wrappers like Number, String, and Boolean [1][2][4]. If you were previously relying on the default behavior of ban-types, you should enable these three new rules in your ESLint configuration (often handled automatically if you use the recommended presets) [3][4]. If you had custom types banned via ban-types, you should migrate those configurations to the types option within @typescript-eslint/no-restricted-types [5][3].

Citations:


Document the no-restricted-types mapping for custom ban-types.types entries.

The replacement list currently covers only {} , Function, and wrapper-object types. @typescript-eslint/ban-types also supports custom banned types; keep those entries and map them to @typescript-eslint/no-restricted-types before dropping unmatched options.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@tools/ai-migrations/`@nx/eslint/23.1.0/migrate-ban-types-rule.md around lines
24 - 29, Update the migration guidance for custom `@typescript-eslint/ban-types`
types so every custom banned-type entry is preserved under
`@typescript-eslint/no-restricted-types`, including its corresponding restriction
details where supported. Only drop options without an equivalent after applying
this mapping, while retaining the existing mappings for {}, Function, and
wrapper-object types.

@cubic-dev-ai cubic-dev-ai Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

5 issues found across 43 files

Prompt for AI agents (unresolved issues)

Check if these issues are valid — if so, understand the root cause of each and fix them. If appropriate, use sub-agents to investigate and fix each issue separately.


<file name=".gitignore">

<violation number="1" location=".gitignore:164">
P3: The new .gitignore entry is missing a trailing newline at end of file. Add one to conform to POSIX text-file convention and avoid the 'No newline at end of file' diff artifact and potential issues with tooling that expects newline-terminated files.</violation>
</file>

<file name="apps/gauzy/project.json">

<violation number="1" location="apps/gauzy/project.json:185">
P1: Removing the `setupFile` from the gauzy `test` target, without adding an equivalent in `apps/gauzy/jest.config.ts`, means `apps/gauzy/src/test-setup.ts` (which does `import 'jest-preset-angular'`) is no longer loaded. Every other Angular app in this monorepo (desktop, desktop-timer, server, server-api) survives the same @nx/jest `setupFile` deprecation by declaring `setupFilesAfterEnv: ['<rootDir>/src/test-setup.ts']` in their jest.config.ts. As-is, gauzy unit tests lose the Angular Zone/TestBed initialization and component tests will break. Recommend adding `setupFilesAfterEnv: ['<rootDir>/src/test-setup.ts']` to `apps/gauzy/jest.config.ts` (and mirroring the jest-preset-angular transform/serializers used by the other apps).</violation>
</file>

<file name="package.json">

<violation number="1" location="package.json:707">
P2: Nx packages were upgraded to 23.1.1 here, but @nx/eslint-plugin-nx remains pinned at the old 16.0.0-beta.1 release and is still referenced from the root ESLint config. Consider migrating the root ESLint config to @nx/eslint-plugin and dropping the stale @nx/eslint-plugin-nx dependency to avoid using an incompatible legacy package alongside Nx 23.</violation>
</file>

<file name="tools/ai-migrations/@nx/eslint/23.1.0/migrate-ban-types-rule.md">

<violation number="1" location="tools/ai-migrations/@nx/eslint/23.1.0/migrate-ban-types-rule.md:8">
P3: This migration guide only documents the mapping for the built-in `{}`s`, `Function`, and wrapper-object cases of the removed `ban-types` rule. It doesn't address custom entries configured via `ban-types`' `types` option, which should be mapped to `no-restricted-types` before those options are dropped, otherwise custom banned-type enforcement silently disappears during migration.</violation>
</file>

<file name="tools/ai-migrations/@nx/eslint/23.1.0/convert-to-flat-config.md">

<violation number="1" location="tools/ai-migrations/@nx/eslint/23.1.0/convert-to-flat-config.md:155">
P3: The new migration guide introduces technical terms (e.g. `tseslint`, `codeframe`, `checkstyle`, `rulesdir`, `typecheck`) that aren't recognized by the CSpell dictionary, causing the spell-check CI job to fail. Add these terms to the workspace CSpell dictionary or use file-local ignore directives.</violation>
</file>

Reply with feedback, questions, or to request a fix.

Re-trigger cubic

Comment thread apps/gauzy/project.json
"executor": "@nx/jest:jest",
"options": {
"jestConfig": "apps/gauzy/jest.config.js",
"setupFile": "apps/gauzy/src/test-setup.ts",

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P1: Removing the setupFile from the gauzy test target, without adding an equivalent in apps/gauzy/jest.config.ts, means apps/gauzy/src/test-setup.ts (which does import 'jest-preset-angular') is no longer loaded. Every other Angular app in this monorepo (desktop, desktop-timer, server, server-api) survives the same @nx/jest setupFile deprecation by declaring setupFilesAfterEnv: ['<rootDir>/src/test-setup.ts'] in their jest.config.ts. As-is, gauzy unit tests lose the Angular Zone/TestBed initialization and component tests will break. Recommend adding setupFilesAfterEnv: ['<rootDir>/src/test-setup.ts'] to apps/gauzy/jest.config.ts (and mirroring the jest-preset-angular transform/serializers used by the other apps).

Prompt for AI agents
Check if this issue is valid — if so, understand the root cause and fix it. At apps/gauzy/project.json, line 185:

<comment>Removing the `setupFile` from the gauzy `test` target, without adding an equivalent in `apps/gauzy/jest.config.ts`, means `apps/gauzy/src/test-setup.ts` (which does `import 'jest-preset-angular'`) is no longer loaded. Every other Angular app in this monorepo (desktop, desktop-timer, server, server-api) survives the same @nx/jest `setupFile` deprecation by declaring `setupFilesAfterEnv: ['<rootDir>/src/test-setup.ts']` in their jest.config.ts. As-is, gauzy unit tests lose the Angular Zone/TestBed initialization and component tests will break. Recommend adding `setupFilesAfterEnv: ['<rootDir>/src/test-setup.ts']` to `apps/gauzy/jest.config.ts` (and mirroring the jest-preset-angular transform/serializers used by the other apps).</comment>

<file context>
@@ -182,7 +182,6 @@
 			"options": {
 				"jestConfig": "apps/gauzy/jest.config.js",
-				"setupFile": "apps/gauzy/src/test-setup.ts",
 				"tsConfig": "apps/gauzy/tsconfig.spec.json"
 			}
 		},
</file context>

Comment thread package.json
"@nx/cypress": "23.1.1",
"@nx/devkit": "23.1.1",
"@nx/eslint": "23.1.1",
"@nx/eslint-plugin": "23.1.1",

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2: Nx packages were upgraded to 23.1.1 here, but @nx/eslint-plugin-nx remains pinned at the old 16.0.0-beta.1 release and is still referenced from the root ESLint config. Consider migrating the root ESLint config to @nx/eslint-plugin and dropping the stale @nx/eslint-plugin-nx dependency to avoid using an incompatible legacy package alongside Nx 23.

Prompt for AI agents
Check if this issue is valid — if so, understand the root cause and fix it. At package.json, line 707:

<comment>Nx packages were upgraded to 23.1.1 here, but @nx/eslint-plugin-nx remains pinned at the old 16.0.0-beta.1 release and is still referenced from the root ESLint config. Consider migrating the root ESLint config to @nx/eslint-plugin and dropping the stale @nx/eslint-plugin-nx dependency to avoid using an incompatible legacy package alongside Nx 23.</comment>

<file context>
@@ -700,20 +700,20 @@
+		"@nx/cypress": "23.1.1",
+		"@nx/devkit": "23.1.1",
+		"@nx/eslint": "23.1.1",
+		"@nx/eslint-plugin": "23.1.1",
 		"@nx/eslint-plugin-nx": "16.0.0-beta.1",
-		"@nx/jest": "^22.5.2",
</file context>

Comment thread .gitignore

/Tempnx-console-tmp**/**

.claude/worktrees No newline at end of file

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P3: The new .gitignore entry is missing a trailing newline at end of file. Add one to conform to POSIX text-file convention and avoid the 'No newline at end of file' diff artifact and potential issues with tooling that expects newline-terminated files.

Prompt for AI agents
Check if this issue is valid — if so, understand the root cause and fix it. At .gitignore, line 164:

<comment>The new .gitignore entry is missing a trailing newline at end of file. Add one to conform to POSIX text-file convention and avoid the 'No newline at end of file' diff artifact and potential issues with tooling that expects newline-terminated files.</comment>

<file context>
@@ -160,3 +160,5 @@ apps/server-api/src/assets/icons/menu
 
 /Tempnx-console-tmp**/**
+
+.claude/worktrees
\ No newline at end of file
</file context>
Suggested change
.claude/worktrees
.claude/worktrees


- `@typescript-eslint/no-empty-object-type` - the `{}` type
- `@typescript-eslint/no-unsafe-function-type` - the `Function` type
- `@typescript-eslint/no-wrapper-object-types` - wrapper types (`String`, `Number`, `Boolean`, `Object`, ...)

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P3: This migration guide only documents the mapping for the built-in {}s, Function, and wrapper-object cases of the removed ban-typesrule. It doesn't address custom entries configured viaban-types' typesoption, which should be mapped tono-restricted-types` before those options are dropped, otherwise custom banned-type enforcement silently disappears during migration.

Prompt for AI agents
Check if this issue is valid — if so, understand the root cause and fix it. At tools/ai-migrations/@nx/eslint/23.1.0/migrate-ban-types-rule.md, line 8:

<comment>This migration guide only documents the mapping for the built-in `{}`s`, `Function`, and wrapper-object cases of the removed `ban-types` rule. It doesn't address custom entries configured via `ban-types`' `types` option, which should be mapped to `no-restricted-types` before those options are dropped, otherwise custom banned-type enforcement silently disappears during migration.</comment>

<file context>
@@ -0,0 +1,29 @@
+
+- `@typescript-eslint/no-empty-object-type` - the `{}` type
+- `@typescript-eslint/no-unsafe-function-type` - the `Function` type
+- `@typescript-eslint/no-wrapper-object-types` - wrapper types (`String`, `Number`, `Boolean`, `Object`, ...)
+
+## First, check whether there is anything to do
</file context>

@@ -0,0 +1,291 @@
# ESLint v9 Flat Config Migration Instructions for LLM

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P3: The new migration guide introduces technical terms (e.g. tseslint, codeframe, checkstyle, rulesdir, typecheck) that aren't recognized by the CSpell dictionary, causing the spell-check CI job to fail. Add these terms to the workspace CSpell dictionary or use file-local ignore directives.

Prompt for AI agents
Check if this issue is valid — if so, understand the root cause and fix it. At tools/ai-migrations/@nx/eslint/23.1.0/convert-to-flat-config.md, line 155:

<comment>The new migration guide introduces technical terms (e.g. `tseslint`, `codeframe`, `checkstyle`, `rulesdir`, `typecheck`) that aren't recognized by the CSpell dictionary, causing the spell-check CI job to fail. Add these terms to the workspace CSpell dictionary or use file-local ignore directives.</comment>

<file context>
@@ -0,0 +1,291 @@
+
+```js
+// AFTER (flat-native, eslint.config.mjs)
+import tseslint from 'typescript-eslint';
+
+export default [...tseslint.configs.recommended];
</file context>

@greptile-apps

greptile-apps Bot commented Aug 8, 2026

Copy link
Copy Markdown
Contributor

Greptile Summary

This update moves the workspace to Nx 23.1.1, aligns related development dependencies and lockfile entries, removes deprecated self-project dependency syntax from UI build targets, and adds Nx migration guidance.

No product defect was confirmed.

T-Rex validation blocked

A completed package installation is missing: node_modules/.bin/nx was not created. The focused configuration check confirmed that ui-config and ui-core retain their prerequisite target names after removing projects: "self", but Nx could not parse or execute those targets until the frozen-lockfile installation completes.

Confidence Score: 5/5

No merge-blocking product defect was identified in the reviewed changes.

No independently actionable findings remain. The focused target-configuration comparison confirmed the deprecated field was removed without removing the prerequisite target declarations; runtime execution remains unavailable until dependencies are installed completely.

Files Needing Attention: Before relying on the upgrade in CI or release workflows, complete the frozen-lockfile installation and run the migrated Nx targets for packages/ui-config/project.json and packages/ui-core/project.json.

T-Rex T-Rex Logs

What T-Rex did

  • The focused Nx validation harness attempted to inspect dependencies and execute targets by running yarn nx show project ui-config, yarn nx show project ui-core, yarn nx run ui-config:setup-env --configuration=development --skip-nx-cache, and yarn nx build ui-core --configuration=development --skip-nx-cache --output-style=static, but all commands halted before target resolution due to the nx binary being missing.
  • Observed that yarn nx commands consistently exited with an error message indicating the nx binary was not found, and documented that a completed dependency installation to generate node_modules/.bin/nx is required before further NX parsing or execution can proceed.

View all artifacts

T-Rex Ran code and verified through T-Rex

Reviews (1): Last reviewed commit: "chore: drop deprecated dependsOn "projec..." | Re-trigger Greptile

@rahul-rocket rahul-rocket self-assigned this Aug 9, 2026
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