Found while preparing the tenant-registry enforcement flip: the deployed portal image is from June 10, so the service-token code merged in #21 never shipped — flipping tenant-registry would have broken every portal page. Three independent defects: 1. The image job's job-level hashFiles('Dockerfile') condition evaluates BEFORE checkout against an empty workspace — always false, job silently skipped on every main push. Same bug just fixed in tenant-registry (#16). 2. The test job was red on #21's merge: this repo pins 100% function/branch coverage and my local run skipped --coverage. Closed for real, not lowered: two dead json() arrows removed from mocks the code never reads (it throws on !ok before touching the body), and a new test exercising the expires_in ?? 300 default-lifetime branch. 80 tests, 100/100/100/100. 3. The shared job's trivy gate was red on 14 real findings (3 CRITICAL): @auth/core 0.37.2 -> 0.41.3 (CVE-2026-73420, Unicode-normalization email homoglyph bypass — in the auth library this rollout depends on), next 16.2.6 -> 16.2.11, nanoid + postcss via pnpm overrides. next-auth 5.0.0-beta.25 -> beta.30; typecheck, lint and build clean on the new versions. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
60 lines
1.5 KiB
JSON
60 lines
1.5 KiB
JSON
{
|
|
"name": "@breakpilot/portal",
|
|
"version": "0.0.0",
|
|
"private": true,
|
|
"description": "Customer-facing portal + platform-staff backstage. Next.js + Auth.js v5.",
|
|
"license": "UNLICENSED",
|
|
"engines": {
|
|
"node": ">=20",
|
|
"pnpm": ">=9"
|
|
},
|
|
"scripts": {
|
|
"dev": "next dev --port 3000",
|
|
"build": "next build",
|
|
"start": "next start --port 3000",
|
|
"lint": "eslint . --max-warnings 0",
|
|
"typecheck": "tsc --noEmit",
|
|
"test": "vitest run --coverage",
|
|
"e2e": "playwright test",
|
|
"e2e:install": "playwright install --with-deps chromium"
|
|
},
|
|
"dependencies": {
|
|
"class-variance-authority": "^0.7.1",
|
|
"clsx": "^2.1.1",
|
|
"geist": "^1.7.2",
|
|
"lucide-react": "^1.17.0",
|
|
"next": "16.2.11",
|
|
"next-auth": "5.0.0-beta.30",
|
|
"react": "19.0.0",
|
|
"react-dom": "19.0.0",
|
|
"tailwind-merge": "^3.6.0"
|
|
},
|
|
"devDependencies": {
|
|
"@playwright/test": "^1.60.0",
|
|
"@tailwindcss/postcss": "^4.3.0",
|
|
"@types/node": "20.16.10",
|
|
"@types/react": "19.0.1",
|
|
"@types/react-dom": "19.0.1",
|
|
"@vitest/coverage-v8": "2.1.8",
|
|
"eslint": "9.15.0",
|
|
"eslint-config-next": "16.2.6",
|
|
"msw": "^2.14.6",
|
|
"postcss": "^8.5.15",
|
|
"tailwindcss": "^4.3.0",
|
|
"typescript": "5.7.2",
|
|
"vitest": "2.1.8"
|
|
},
|
|
"msw": {
|
|
"workerDirectory": [
|
|
"public"
|
|
]
|
|
},
|
|
"pnpm": {
|
|
"overrides": {
|
|
"nanoid@<3.3.18": ">=3.3.18",
|
|
"postcss@<8.4.31": ">=8.4.31",
|
|
"@auth/core@<0.41.3": ">=0.41.3"
|
|
}
|
|
}
|
|
}
|