Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
38 commits
Select commit Hold shift + click to select a range
4cd9592
⬆️ chore: upgrade Node.js from 22.17.0 to 24.14.1
cteyton Mar 25, 2026
f3f1423
🐛 fix(ci): add --no-experimental-strip-types to NODE_OPTIONS in build…
cteyton Mar 25, 2026
25f5feb
🐛 fix: downgrade Node.js version from 24.14.1 to 24.14.0
cteyton Mar 25, 2026
dd8f0bf
🐛 fix(docker): remove non-existent openssl version pin for Alpine 3.23
cteyton Mar 25, 2026
078c4cb
🔧 chore(ci): enable Docker build+scan on PRs without pushing
cteyton Mar 25, 2026
bd737e0
Re-generate packmind-lock.json
cteyton Mar 25, 2026
e6e5988
Re-generate packmind-lock.json
cteyton Mar 25, 2026
98d6c56
Re-generate packmind-lock.json
cteyton Mar 25, 2026
1383eea
🐛 fix: regenerate package-lock.json for npm 11.9.0 compatibility
cteyton Mar 25, 2026
db0d6ce
🐛 fix: resolve typecheck errors from dependency upgrades
cteyton Mar 25, 2026
521e47b
Fix prettier issue
cteyton Mar 25, 2026
e994ae8
Merge from main
cteyton Mar 31, 2026
f54726d
🔒️ security(docker): pin apk package versions in Dockerfiles
cteyton Mar 31, 2026
d205fac
Update package-lock.json
cteyton Mar 31, 2026
ac4b1a7
📦 deps(nx): upgrade Nx to 22.6.0, deduplicate workspace deps, and res…
cteyton Mar 31, 2026
69de220
Upgrade esbuild-loader dep
cteyton Apr 1, 2026
d6b9ac5
📦 deps(vite): upgrade Vite 6 → 8.0.3 (#272)
cteyton Apr 2, 2026
4405c4a
Merge from main
cteyton Apr 2, 2026
f5c984a
📦 deps(docker): align Node image to 24.14.1-alpine3.23
cteyton Apr 2, 2026
ada64db
Update package-lock.json
cteyton Apr 2, 2026
e306bfb
Merge
cteyton Apr 3, 2026
ea56481
Update package.json
cteyton Apr 3, 2026
caa172b
Cleanup packmind artefacts installed accidentally
cteyton Apr 3, 2026
452ad0e
Consolidate workspace cleanup in migration script
cteyton Apr 3, 2026
8c0d038
Align node to 24.14.1
cteyton Apr 3, 2026
68a2111
Merge branch 'main' into migration-node-24-14
cteyton Apr 3, 2026
31dcb10
✅ fix(deployments): use numeric epoch in jest.setSystemTime for Node …
cteyton Apr 3, 2026
9ca3b1e
🔧 chore(migration): use docker compose down instead of stop
cteyton Apr 3, 2026
c5881cf
📌 fix(deps): pin @playwright/test to exact 1.58.2
cteyton Apr 3, 2026
3d71a47
⬇️ chore: revert Node.js version from 24.14.1 to 24.14.0
cteyton Apr 3, 2026
71e5013
Setup engines.npm to 11.9.0
cteyton Apr 3, 2026
c987194
🐛 fix(e2e): wait for toast overlay to disappear before clicking menu
cteyton Apr 3, 2026
36f1359
🐛 fix(e2e): use exact text match for toast to avoid strict mode viola…
cteyton Apr 3, 2026
ac1ea49
🐛 fix(frontend): always render InviteUsersDialog to prevent backdrop …
cteyton Apr 3, 2026
e424b89
Add downgrade_node22.sh
cteyton Apr 3, 2026
72182c3
Multiple optimizations in docker compose to boost app start
cteyton Apr 3, 2026
bd343d1
🐛 fix(docker): fix invalid shell syntax for NX_DAEMON in exec
cteyton Apr 3, 2026
21126ab
Commit merge
cteyton Apr 14, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
22 changes: 11 additions & 11 deletions .github/workflows/build.yml
Original file line number Diff line number Diff line change
Expand Up @@ -66,12 +66,12 @@ jobs:
env:
NODE_ENV: production
PACKMIND_EDITION: ${{ vars.PACKMIND_EDITION }}
NODE_OPTIONS: '--max-old-space-size=16384'
NODE_OPTIONS: '--max-old-space-size=16384 --no-experimental-strip-types'
run: ./node_modules/.bin/nx build api
- name: Test API
env:
PACKMIND_EDITION: ${{ vars.PACKMIND_EDITION }}
NODE_OPTIONS: '--max-old-space-size=16384'
NODE_OPTIONS: '--max-old-space-size=16384 --no-experimental-strip-types'
run: ./node_modules/.bin/nx test api
- run: cp apps/api/docker-package.json dist/apps/api/.
- run: cp package.json dist/apps/api/.
Expand Down Expand Up @@ -114,13 +114,13 @@ jobs:
- name: Test Frontend
env:
PACKMIND_EDITION: ${{ vars.PACKMIND_EDITION }}
NODE_OPTIONS: '--max-old-space-size=16384'
NODE_OPTIONS: '--max-old-space-size=16384 --no-experimental-strip-types'
run: ./node_modules/.bin/nx test frontend
- name: Build frontend
env:
NODE_ENV: production
PACKMIND_EDITION: ${{ vars.PACKMIND_EDITION }}
NODE_OPTIONS: '--max-old-space-size=16384'
NODE_OPTIONS: '--max-old-space-size=16384 --no-experimental-strip-types'
VITE_SENTRY_FRONTEND_DSN: ${{ vars.PACKMIND_EDITION == 'proprietary' && !startsWith(github.ref, 'refs/tags/release/') && secrets.VITE_SENTRY_FRONTEND_DSN || '' }}
VITE_SENTRY_ENVIRONMENT: ${{ vars.PACKMIND_EDITION == 'proprietary' && !startsWith(github.ref, 'refs/tags/release/') && 'production' || '' }}
VITE_CRISP_WEBSITE_ID: ${{ vars.PACKMIND_EDITION == 'proprietary' && !startsWith(github.ref, 'refs/tags/release/') && secrets.VITE_CRISP_WEBSITE_ID || '' }}
Expand Down Expand Up @@ -157,12 +157,12 @@ jobs:
- name: Build MCP Server
env:
PACKMIND_EDITION: ${{ vars.PACKMIND_EDITION }}
NODE_OPTIONS: '--max-old-space-size=16384'
NODE_OPTIONS: '--max-old-space-size=16384 --no-experimental-strip-types'
run: ./node_modules/.bin/nx build mcp-server
- name: Test MCP Server
env:
PACKMIND_EDITION: ${{ vars.PACKMIND_EDITION }}
NODE_OPTIONS: '--max-old-space-size=16384'
NODE_OPTIONS: '--max-old-space-size=16384 --no-experimental-strip-types'
run: ./node_modules/.bin/nx test mcp-server
- run: cp tsconfig.base.effective.json dist/apps/mcp-server/.

Expand Down Expand Up @@ -196,12 +196,12 @@ jobs:
- name: Build packages
env:
PACKMIND_EDITION: ${{ vars.PACKMIND_EDITION }}
NODE_OPTIONS: '--max-old-space-size=16384'
NODE_OPTIONS: '--max-old-space-size=16384 --no-experimental-strip-types'
run: ./node_modules/.bin/nx run-many -t build -p packages/*
- name: Test packages
env:
PACKMIND_EDITION: ${{ vars.PACKMIND_EDITION }}
NODE_OPTIONS: '--max-old-space-size=16384'
NODE_OPTIONS: '--max-old-space-size=16384 --no-experimental-strip-types'
run: ./node_modules/.bin/nx run-many -t test -p packages/* --passWithNoTests

- name: Upload standard samples artifacts
Expand Down Expand Up @@ -247,12 +247,12 @@ jobs:
- name: Build CLI
env:
PACKMIND_EDITION: ${{ vars.PACKMIND_EDITION }}
NODE_OPTIONS: '--max-old-space-size=16384'
NODE_OPTIONS: '--max-old-space-size=16384 --no-experimental-strip-types'
run: ./node_modules/.bin/nx build-publish packmind-cli
- name: Test CLI
env:
PACKMIND_EDITION: ${{ vars.PACKMIND_EDITION }}
NODE_OPTIONS: '--max-old-space-size=16384'
NODE_OPTIONS: '--max-old-space-size=16384 --no-experimental-strip-types'
run: ./node_modules/.bin/nx test packmind-cli

- name: Upload CLI build artifacts
Expand Down Expand Up @@ -355,7 +355,7 @@ jobs:
- name: Run CLI E2E tests
env:
PACKMIND_EDITION: ${{ vars.PACKMIND_EDITION }}
NODE_OPTIONS: '--max-old-space-size=16384'
NODE_OPTIONS: '--max-old-space-size=16384 --no-experimental-strip-types'
run: ./node_modules/.bin/nx test cli-e2e-tests

- name: Install latest production CLI from npm
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/docker.yml
Original file line number Diff line number Diff line change
Expand Up @@ -73,7 +73,7 @@ jobs:
build-scan-push:
runs-on: ${{ vars.ACTION_RUNNER_TAG || 'self-hosted' }}
timeout-minutes: 30
# Both editions: main branch and release tags
# Build+scan+push only on main and release branches
if: |
github.ref == 'refs/heads/main' ||
startsWith(github.ref, 'refs/tags/release/')
Expand Down
12 changes: 5 additions & 7 deletions .github/workflows/main.yml
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ name: Main CI/CD Pipeline
# ┌─────────────────────────────────────────────────────────────────┐
# │ GLOBAL CONFIGURATION │
# │ To update Node.js version, change all occurrences below │
# │ Current version: 22.17.0 │
# │ Current version: 24.14.0 │
# │ │
# │ Repository Variables Required: │
# │ - PACKMIND_EDITION: 'oss' or 'proprietary' │
Expand All @@ -17,14 +17,13 @@ on:
- 'release/*'
- 'release-cli/*'
pull_request:
branches: ['main']

jobs:
# Stage 1: Build and Test
build:
uses: ./.github/workflows/build.yml
with:
node-version: 22.17.0
node-version: 24.14.0
secrets:
VITE_SENTRY_FRONTEND_DSN: ${{ secrets.VITE_SENTRY_FRONTEND_DSN }}
VITE_CRISP_WEBSITE_ID: ${{ secrets.VITE_CRISP_WEBSITE_ID }}
Expand All @@ -34,7 +33,7 @@ jobs:
needs: [build]
uses: ./.github/workflows/quality.yml
with:
node-version: 22.17.0
node-version: 24.14.0
cli-executables-artifact: ${{ needs.build.outputs.cli-executables-artifact }}
secrets:
GITGUARDIAN_API_KEY: ${{ secrets.GITGUARDIAN_API_KEY }}
Expand All @@ -45,14 +44,13 @@ jobs:
# Note: The docker workflow handles branch conditions internally based on edition
docker:
needs: [build, quality]
if: github.ref == 'refs/heads/main' || startsWith(github.ref, 'refs/tags/release/')
uses: ./.github/workflows/docker.yml
with:
api-artifact: ${{ needs.build.outputs.api-artifact }}
frontend-artifact: ${{ needs.build.outputs.frontend-artifact }}
mcp-server-artifact: ${{ needs.build.outputs.mcp-server-artifact }}
standard-samples-artifact: ${{ needs.build.outputs.standard-samples-artifact }}
node-version: 22.17.0
node-version: 24.14.0
secrets:
DOCKERHUB_USERNAME: ${{ secrets.DOCKERHUB_USERNAME }}
DOCKERHUB_TOKEN: ${{ secrets.DOCKERHUB_TOKEN }}
Expand Down Expand Up @@ -83,7 +81,7 @@ jobs:
if: github.ref == 'refs/heads/main' || startsWith(github.ref, 'refs/tags/release/')
uses: ./.github/workflows/deploy-staging-and-release.yml
with:
node-version: 22.17.0
node-version: 24.14.0
helm-charts-repository: ${{ vars.HELM_CHARTS_REPOSITORY || 'PackmindHub/packmind-ai-helm-charts' }}
secrets:
DOCKERHUB_USERNAME: ${{ secrets.DOCKERHUB_USERNAME }}
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/publish-cli-release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@ on:
required: true

env:
NODE_VERSION: '22.17.0'
NODE_VERSION: '24.14.0'

jobs:
sign-macos-cli:
Expand Down
4 changes: 2 additions & 2 deletions .github/workflows/tmp-cli-lint-windows.yml
Original file line number Diff line number Diff line change
Expand Up @@ -18,10 +18,10 @@ jobs:
- name: Checkout
uses: actions/checkout@v4

- name: Use Node.js 22.17.0
- name: Use Node.js 24.14.0
uses: actions/setup-node@v4
with:
node-version: '22.17.0'
node-version: '24.14.0'
cache: 'npm'

- name: Install dependencies
Expand Down
3 changes: 3 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -43,6 +43,9 @@ apps/mcp-server/key.pem
# Git worktrees
.worktrees/

.claude/worktrees
.claude/settings.local.json

# GitLab Duo skills (managed locally)
.gitlab/

Expand Down
2 changes: 1 addition & 1 deletion .nvmrc
Original file line number Diff line number Diff line change
@@ -1 +1 @@
22.17.0
24.14.0
2 changes: 1 addition & 1 deletion CONTRIBUTING.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@

## Starting the stack:

You will need node 22.17 and docker to start the development stack:
You will need node 24.14.0 and docker to start the development stack:

```shell
nvm use
Expand Down
4 changes: 2 additions & 2 deletions apps/api/docker-package.json
Original file line number Diff line number Diff line change
Expand Up @@ -5,8 +5,8 @@
"type": "commonjs",
"main": "main.js",
"engines": {
"node": "22.17.0",
"npm": "10.9.2"
"node": "24.14.0",
"npm": "11.11.0"
},
"dependencies": {
"@amplitude/analytics-node": "^1.5.18",
Expand Down
11 changes: 5 additions & 6 deletions apps/api/jest.config.ts
Original file line number Diff line number Diff line change
@@ -1,14 +1,13 @@
// eslint-disable-next-line @nx/enforce-module-boundaries
import { compilerOptions } from '../../tsconfig.base.effective.json';
// eslint-disable-next-line @nx/enforce-module-boundaries
import {
const { compilerOptions } = require('../../tsconfig.base.effective.json');

const {
pathsToModuleNameMapper,
swcTransformWithDecorators,
standardTransformIgnorePatterns,
standardModuleFileExtensions,
} from '../../jest-utils';
} = require('../../jest-utils.ts');

export default {
module.exports = {
displayName: 'api',
preset: '../../jest.preset.ts',
testEnvironment: 'node',
Expand Down
7 changes: 3 additions & 4 deletions apps/cli-e2e-tests/jest.config.ts
Original file line number Diff line number Diff line change
@@ -1,10 +1,9 @@
// eslint-disable-next-line @nx/enforce-module-boundaries
import {
const {
swcTransformWithDefineFields,
standardModuleFileExtensions,
} from '../../jest-utils';
} = require('../../jest-utils.ts');

export default {
module.exports = {
displayName: 'cli-e2e-tests',
preset: '../../jest.preset.js',
testEnvironment: 'node',
Expand Down
7 changes: 3 additions & 4 deletions apps/cli/jest.config.ts
Original file line number Diff line number Diff line change
@@ -1,10 +1,9 @@
// eslint-disable-next-line @nx/enforce-module-boundaries
import {
const {
swcTransformWithDefineFields,
standardModuleFileExtensions,
} from '../../jest-utils';
} = require('../../jest-utils.ts');

export default {
module.exports = {
displayName: 'packmind-cli',
preset: '../../jest.preset.js',
testEnvironment: 'node',
Expand Down
1 change: 0 additions & 1 deletion apps/cli/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,6 @@
},
"dependencies": {
"@types/inquirer": "^9.0.9",
"diff": "^8.0.3",
"inquirer": "^13.0.2",
"zod": "^4.3.5",
"semver": "^7.7.4"
Expand Down
7 changes: 3 additions & 4 deletions apps/frontend/jest.config.ts
Original file line number Diff line number Diff line change
@@ -1,10 +1,10 @@
import { pathsToModuleNameMapper } from 'ts-jest';
const { pathsToModuleNameMapper } = require('ts-jest');

// Use require instead of import to avoid TypeScript compilation issues
// eslint-disable-next-line @typescript-eslint/no-require-imports

const { compilerOptions } = require('../../tsconfig.base.effective.json');

export default {
module.exports = {
preset: '../../jest.preset.ts',
displayName: 'frontend',
rootDir: '.',
Expand All @@ -16,7 +16,6 @@ export default {
{
tsconfig: '<rootDir>/tsconfig.spec.json',
useESM: true,
isolatedModules: true, // Faster compilation, less type checking
},
],
},
Expand Down
9 changes: 1 addition & 8 deletions apps/frontend/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -3,14 +3,7 @@
"version": "0.0.0",
"private": true,
"dependencies": {
"@react-router/dev": "^7.12.0",
"@react-router/fs-routes": "^7.12.0",
"@react-router/node": "^7.12.0",
"@react-router/serve": "^7.12.0",
"@types/nprogress": "0.2.3",
"nprogress": "0.2.0",
"react-router": "^7.12.0",
"react-router-dom": "^7.12.0",
"validator": "^13.15.15"
"nprogress": "0.2.0"
}
}
1 change: 1 addition & 0 deletions apps/frontend/react-router.config.ts
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@ import type { Config } from '@react-router/dev/config';
export default {
ssr: false,
future: {
unstable_optimizeDeps: true,
v8_middleware: true,
},
} satisfies Config;
10 changes: 4 additions & 6 deletions apps/frontend/src/domain/accounts/components/UsersList.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -138,12 +138,10 @@ export const UsersList: React.FC<UsersListProps> = ({ organizationId }) => {
/>
</>
)}
{inviteUserOpened && (
<InviteUsersDialog
open={inviteUserOpened}
setOpen={setInviteUserOpened}
/>
)}
<InviteUsersDialog
open={inviteUserOpened}
setOpen={setInviteUserOpened}
/>
{changeRoleUserStatus && (
<ChangeUserRoleDialog
open={!!changeRoleUserStatus}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@ import {
import {
createDeploymentOverview,
createStandardDeploymentOverview,
} from '@packmind/deployments/test';
} from '@packmind/test-utils';

// Mock react-router
const mockSetSearchParams = jest.fn();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,9 +6,9 @@ import { RecipeCentricView } from './RecipeCentricView';
import {
createRecipeDeploymentStatus,
createRepositoryDeploymentInfo,
} from '@packmind/deployments/test/deploymentOverviewFactory';
import { gitRepoFactory } from '@packmind/git/test/gitRepoFactory';
import { recipeFactory } from '@packmind/recipes/test/recipeFactory';
gitRepoFactory,
recipeFactory,
} from '@packmind/test-utils';

const renderWithProvider = (ui: React.ReactElement) => {
return render(<UIProvider>{ui}</UIProvider>);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,8 +11,8 @@ import {
createTargetStandardDeploymentStatus,
createDeployedRecipeInfo,
targetFactory,
} from '@packmind/deployments/test';
import { gitRepoFactory } from '@packmind/git/test/gitRepoFactory';
gitRepoFactory,
} from '@packmind/test-utils';
import { RepositoryDeploymentStatus, createTargetId } from '@packmind/types';

const renderWithProvider = (ui: React.ReactElement) => {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,9 +6,9 @@ import { StandardCentricView } from './StandardCentricView';
import {
createStandardDeploymentStatus,
createRepositoryStandardDeploymentInfo,
} from '@packmind/deployments/test';
import { standardFactory } from '@packmind/standards/test';
import { gitRepoFactory } from '@packmind/git/test/gitRepoFactory';
standardFactory,
gitRepoFactory,
} from '@packmind/test-utils';

const renderWithProvider = (ui: React.ReactElement) => {
return render(<UIProvider>{ui}</UIProvider>);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ import React from 'react';
import { render, screen, within, waitFor } from '@testing-library/react';
import userEvent from '@testing-library/user-event';
import '@testing-library/jest-dom';
import { MemoryRouter } from 'react-router-dom';
import { MemoryRouter } from 'react-router';
import { UIProvider } from '@packmind/ui';
import {
ProgrammingLanguage,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@ import {
SiMeteor,
SiNestjs,
SiNextdotjs,
SiNuxtdotjs,
SiNuxt,
SiPhp,
SiPython,
SiReact,
Expand Down Expand Up @@ -72,7 +72,7 @@ const sampleIconMap: Record<string, IconType> = {
svelte: SiSvelte,
symfony: SiSymfony,
nextjs: SiNextdotjs,
nuxtjs: SiNuxtdotjs,
nuxtjs: SiNuxt,
nestjs: SiNestjs,
meteor: SiMeteor,
fastapi: SiFastapi,
Expand Down
Loading
Loading