📦 deps(nx): upgrade Nx to 22.6.0, deduplicate workspace deps, and restore Docker hardening#271
Conversation
- Bump all @nx/* packages and nx to 22.6.0
- Upgrade storybook from v9 to v10 (10.3.3)
- Add @nx/vitest plugin; move vitest testTargetName from @nx/vite
- Convert all jest.config.ts from ESM to CJS (require/module.exports)
- Fix require('../../jest-utils') → require('../../jest-utils.ts') for Node.js resolution
- Update story files to import from @storybook/react-vite instead of @storybook/react (Storybook v10 rule)
- Allow require() in jest.config.ts via ESLint override
- Fix getAbsolutePath return type any → string in .storybook/main.ts
- Bump @nx/devkit in tools/packmind-plugin/package.json to 22.6.0
- Add .claude/worktrees and .claude/settings.local.json to .gitignore
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Remove external dependencies from child package.json files that are already declared in root, fixing version drift and reducing maintenance burden. Key changes: - Removed ~48 redundant dependency declarations across 21 packages - Fixed version mismatches (uuid, bullmq, slug, codemirror in skills/node-utils/ui) - Standardized @packmind/* internal deps from pinned 0.0.1 to wildcard * - Removed unnecessary devDependencies already provided by root Co-Authored-By: Claude <noreply@anthropic.com> https://claude.ai/code/session_018K74TaQrsXvK3qnvR9t2Ma Co-authored-by: Claude <noreply@anthropic.com>
- Restore rm -rf /sbin/apk in Dockerfile.api and Dockerfile.mcp after apk add to prevent runtime package installation (P1 Greptile fix) - Fix misleading comment in docker.yml: build-scan-push runs on main and release branches only, not all branches (P2 Greptile fix) - Add missing newline at end of .gitignore (P2 Greptile fix) Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Greptile SummaryThis PR upgrades Nx from 21.6.8 to 22.6.0, migrates Storybook from v9 to v10, converts all Key changes:
Confidence Score: 5/5This PR is safe to merge — all changes are well-scoped infrastructure upgrades with no remaining P1 findings. All previously flagged P1 security findings (APK hardening removal) are now addressed. The Nx 22 upgrade, jest CJS conversion, Storybook 10 migration, and dep deduplication are all consistent and internally validated (builds pass, tests pass, 29 lint targets pass). No logic bugs, data integrity issues, or breaking changes were identified during review. No files require special attention. Important Files Changed
Flowchart%%{init: {'theme': 'neutral'}}%%
flowchart TD
A[PR #271 Changes] --> B[Nx 21.6.8 → 22.6.0]
A --> C[jest.config.ts ESM → CJS]
A --> D[Docker Hardening Restored]
A --> E[Dependency Deduplication]
A --> F[Storybook 9 → 10]
B --> B1["All @nx/* pinned to 22.6.0"]
B --> B2["@nx/vitest plugin added to nx.json"]
B --> B3["testTargetName moved from @nx/vite → @nx/vitest"]
C --> C1["import → require()"]
C --> C2["export default → module.exports"]
C --> C3["ESLint override: no-require-imports off for jest.config.ts"]
D --> D1["Dockerfile.api: rm -rf /sbin/apk …"]
D --> D2["Dockerfile.mcp: rm -rf /sbin/apk …"]
E --> E1["Hoisted: react-router, validator, diff, bullmq…"]
E --> E2["~6700 lines removed from package-lock.json"]
F --> F1["Stories: @storybook/react → @storybook/react-vite"]
F --> F2["main.ts: getAbsolutePath(import.meta.resolve)"]
F --> F3["eslint-plugin-storybook@10 added"]
Reviews (1): Last reviewed commit: "🔒️ security(docker): restore apk harden..." | Re-trigger Greptile |
Explanation
Upgrades Nx from 21.6.8 to 22.6.0, deduplicates workspace dependencies across packages, and restores Docker security hardening that was inadvertently dropped.
Relates to #270
Type of Change
Affected Components
Testing
Test Details:
--no-experimental-strip-typesChanges Summary
Nx 22.6.0 upgrade
@nx/*packages from 21.6.8 → 22.6.0@nx/vitestplugin;testTargetName: "test"now owned by vitest plugin innx.jsonjest.config.tsfiles from ESM to CJS for Node 24 compatibilityrequire()in Jest config filesDependency deduplication (#270)
package.jsonpackage-lock.jsonby ~6700 linesDocker hardening fixes (Greptile P1 + P2 from #270)
rm -rf /sbin/apk ...inDockerfile.apiandDockerfile.mcpafterapk addto prevent runtime package installationdocker.yml—build-scan-pushonly runs onmainand release branches.gitignoreStorybook 10 migration
.storybook/main.tseslint-plugin-storybook@10TODO List
Reviewer Notes
/sbin/apkand related dirs after package installation.jest.config.tsfiles are all CJS (require()-based) — this is intentional for Node 24 compatibility, not a regression.