SPB Git

deps: pin next 16.4.3 and vitest 5.0.x (pnpm 12 minimumReleaseAge policy); pnpm settings → pnpm-workspace.yaml; fail-hard deploy hooks

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Simon-Pierre Boucher committed (Nov 2, 2026) parent f05ed65 Browse files

4 changed files +154 −71

modified infra/mld/tools-spboucher-ai.json +86 −10
@@ -6,29 +6,105 @@
6 "health_path": "/api/health", 6 "health_path": "/api/health",
7 "dir": "~/apps/tools-spboucher-ai", 7 "dir": "~/apps/tools-spboucher-ai",
8 "extra_paths": [], 8 "extra_paths": [],
9− "sync_excludes": [".git/", ".DS_Store", "node_modules/", ".next/", "backups/", "exports/*.json", "exports/*.csv", ".env", ".env.*", "test-results/", "playwright-report/", "tsconfig.tsbuildinfo", "docs/_a11y-results.json"], 9+ "sync_excludes": [
10− "requires": { "runtimes": ["node", "pnpm", "pm2", "postgresql@17"], "ram_gb": 3, "ports": [8540] }, 10+ ".git/",
11+ ".DS_Store",
12+ "node_modules/",
13+ ".next/",
14+ "backups/",
15+ "exports/*.json",
16+ "exports/*.csv",
17+ ".env",
18+ ".env.*",
19+ "test-results/",
20+ "playwright-report/",
21+ "tsconfig.tsbuildinfo",
22+ "docs/_a11y-results.json"
23+ ],
24+ "requires": {
25+ "runtimes": [
26+ "node",
27+ "pnpm",
28+ "pm2",
29+ "postgresql@17"
30+ ],
31+ "ram_gb": 3,
32+ "ports": [
33+ 8540
34+ ]
35+ },
11 "ram_mb_observed": 600, 36 "ram_mb_observed": 600,
12 "size_mb": 30, 37 "size_mb": 30,
13− "placement": { "pin": "M2M32c", "prefer": "M2M32c", "avoid": ["M1M32"], "reason": "Idle node (0 PM2 processes) with PostgreSQL 17.11 + pgvector 0.8.6 (DB tools_spboucher, roles tools_app/tools_reader), 417 GB SSD, wg1 10.67.0.20" }, 38+ "placement": {
39+ "pin": "M2M32c",
40+ "prefer": "M2M32c",
41+ "avoid": [
42+ "M1M32"
43+ ],
44+ "reason": "Idle node (0 PM2 processes) with PostgreSQL 17.11 + pgvector 0.8.6 (DB tools_spboucher, roles tools_app/tools_reader), 417 GB SSD, wg1 10.67.0.20"
45+ },
14 "processes": [ 46 "processes": [
15− { "name": "tools-web", "manager": "pm2", "script": "/opt/homebrew/bin/node", "args": ["node_modules/next/dist/bin/next", "start", "-p", "8540", "-H", "0.0.0.0"], "interpreter": null, "cwd": "{{HOME}}/apps/tools-spboucher-ai", "env": { "NODE_ENV": "production", "PORT": "8540", "NEXT_TELEMETRY_DISABLED": "1" }, "cron_restart": null, "autorestart": true, "max_memory_restart": "1500M" }, 47+ {
16− { "name": "tools-worker", "manager": "pm2", "script": "/opt/homebrew/bin/node", "args": ["node_modules/tsx/dist/cli.mjs", "src/worker/index.ts"], "interpreter": null, "cwd": "{{HOME}}/apps/tools-spboucher-ai", "env": { "NODE_ENV": "production", "NEXT_TELEMETRY_DISABLED": "1", "PATH": "/opt/homebrew/opt/postgresql@17/bin:/opt/homebrew/bin:/usr/bin:/bin:/usr/sbin:/sbin" }, "cron_restart": null, "autorestart": true, "max_memory_restart": "1G" } 48+ "name": "tools-web",
49+ "manager": "pm2",
50+ "script": "/opt/homebrew/bin/node",
51+ "args": [
52+ "node_modules/next/dist/bin/next",
53+ "start",
54+ "-p",
55+ "8540",
56+ "-H",
57+ "0.0.0.0"
58+ ],
59+ "interpreter": null,
60+ "cwd": "{{HOME}}/apps/tools-spboucher-ai",
61+ "env": {
62+ "NODE_ENV": "production",
63+ "PORT": "8540",
64+ "NEXT_TELEMETRY_DISABLED": "1"
65+ },
66+ "cron_restart": null,
67+ "autorestart": true,
68+ "max_memory_restart": "1500M"
69+ },
70+ {
71+ "name": "tools-worker",
72+ "manager": "pm2",
73+ "script": "/opt/homebrew/bin/node",
74+ "args": [
75+ "node_modules/tsx/dist/cli.mjs",
76+ "src/worker/index.ts"
77+ ],
78+ "interpreter": null,
79+ "cwd": "{{HOME}}/apps/tools-spboucher-ai",
80+ "env": {
81+ "NODE_ENV": "production",
82+ "NEXT_TELEMETRY_DISABLED": "1",
83+ "PATH": "/opt/homebrew/opt/postgresql@17/bin:/opt/homebrew/bin:/usr/bin:/bin:/usr/sbin:/sbin"
84+ },
85+ "cron_restart": null,
86+ "autorestart": true,
87+ "max_memory_restart": "1G"
88+ }
17 ], 89 ],
18 "ngrok": null, 90 "ngrok": null,
19 "launchd": [], 91 "launchd": [],
20 "env_overrides": {}, 92 "env_overrides": {},
21 "hooks": { 93 "hooks": {
22 "post_sync": [ 94 "post_sync": [
23− "export PATH=\"/opt/homebrew/bin:$PATH\"; test -f .env || { echo 'ERREUR: .env absent (secrets) — copier ~/Desktop/Cluster/secrets/tools-spboucher-ai/.env'; exit 1; }; chmod 600 .env", 95+ "set -o pipefail; export PATH=\"/opt/homebrew/bin:$PATH\"; test -f .env || { echo 'ERREUR: .env absent (secrets) — copier ~/Desktop/Cluster/secrets/tools-spboucher-ai/.env'; exit 1; }; chmod 600 .env",
24− "export PATH=\"/opt/homebrew/bin:$PATH\"; pnpm install --frozen-lockfile --silent && echo ' deps ok'", 96+ "set -o pipefail; export PATH=\"/opt/homebrew/bin:$PATH\"; pnpm install --frozen-lockfile --silent && test -d node_modules/next && echo ' deps ok'",
25− "export PATH=\"/opt/homebrew/bin:$PATH\"; set -a; . ./.env; set +a; NEXT_TELEMETRY_DISABLED=1 pnpm build 2>&1 | tail -3 && echo ' build ok'", 97+ "set -o pipefail; export PATH=\"/opt/homebrew/bin:$PATH\"; set -a; . ./.env; set +a; NEXT_TELEMETRY_DISABLED=1 pnpm build 2>&1 | tail -3 && test -f .next/BUILD_ID && echo ' build ok'",
26− "export PATH=\"/opt/homebrew/opt/postgresql@17/bin:/opt/homebrew/bin:$PATH\"; set -a; . ./.env; set +a; pnpm db:migrate && pnpm content:import --publish > /dev/null && pnpm bootstrap && echo ' db ok'", 98+ "set -o pipefail; export PATH=\"/opt/homebrew/opt/postgresql@17/bin:/opt/homebrew/bin:$PATH\"; set -a; . ./.env; set +a; pnpm db:migrate && pnpm content:import --publish > /dev/null && pnpm bootstrap && echo ' db ok'",
27 "mkdir -p ~/backups/tools-spboucher-ai && chmod 700 ~/backups/tools-spboucher-ai && echo ' backup dir ok'" 99 "mkdir -p ~/backups/tools-spboucher-ai && chmod 700 ~/backups/tools-spboucher-ai && echo ' backup dir ok'"
28 ], 100 ],
29 "post_start": [] 101 "post_start": []
30 }, 102 },
31 "ka_repo": false, 103 "ka_repo": false,
32− "tunnel": { "domain": "tools.spboucher.ai", "gateway": "BHS64", "note": "DNS GoDaddy A tools.spboucher.ai → 51.161.112.61 vérifié le 2026-11-02 (enregistrement explicite préexistant) ; route Caddy posée par mld deploy" }, 104+ "tunnel": {
105+ "domain": "tools.spboucher.ai",
106+ "gateway": "BHS64",
107+ "note": "DNS GoDaddy A tools.spboucher.ai → 51.161.112.61 vérifié le 2026-11-02 (enregistrement explicite préexistant) ; route Caddy posée par mld deploy"
108+ },
33 "notes": "Next.js 16 + PostgreSQL 17/pgvector local (DB tools_spboucher ; rôles tools_app lecture/écriture, tools_reader lecture seule sur les vues publiques) + worker tsx (liens, fraîcheur, embeddings optionnels, sauvegardes chiffrées 04:20 → ~/backups + M3U96b). Secrets uniquement dans ~/apps/tools-spboucher-ai/.env (600) ; copie ~/Desktop/Cluster/secrets/tools-spboucher-ai/.env." 109 "notes": "Next.js 16 + PostgreSQL 17/pgvector local (DB tools_spboucher ; rôles tools_app lecture/écriture, tools_reader lecture seule sur les vues publiques) + worker tsx (liens, fraîcheur, embeddings optionnels, sauvegardes chiffrées 04:20 → ~/backups + M3U96b). Secrets uniquement dans ~/apps/tools-spboucher-ai/.env (600) ; copie ~/Desktop/Cluster/secrets/tools-spboucher-ai/.env."
34 } 110 }
modified package.json +2 −2
@@ -46,7 +46,7 @@
46 "drizzle-orm": "^0.45.4", 46 "drizzle-orm": "^0.45.4",
47 "lucide-react": "^1.66.0", 47 "lucide-react": "^1.66.0",
48 "marked": "^18.1.2", 48 "marked": "^18.1.2",
49− "next": "16.4.4", 49+ "next": "16.4.3",
50 "otplib": "^13.5.0", 50 "otplib": "^13.5.0",
51 "papaparse": "^5.5.3", 51 "papaparse": "^5.5.3",
52 "postgres": "^4.0.0", 52 "postgres": "^4.0.0",
@@ -71,7 +71,7 @@
71 "drizzle-kit": "^0.31.11", 71 "drizzle-kit": "^0.31.11",
72 "tsx": "^4.23.15", 72 "tsx": "^4.23.15",
73 "typescript": "^7.0.2", 73 "typescript": "^7.0.2",
74− "vitest": "^5.1.0" 74+ "vitest": "~5.0.0"
75 }, 75 },
76 "pnpm": { 76 "pnpm": {
77 "onlyBuiltDependencies": [ 77 "onlyBuiltDependencies": [
modified pnpm-lock.yaml +59 −59
@@ -66,8 +66,8 @@ importers:
66 specifier: ^18.1.2 66 specifier: ^18.1.2
67 version: 18.1.2 67 version: 18.1.2
68 next: 68 next:
69− specifier: 16.4.4 69+ specifier: 16.4.3
70− version: 16.4.4(@playwright/test@1.64.1)(@types/node@26.6.6)(react-dom@19.3.1(react@19.3.1))(react@19.3.1) 70+ version: 16.4.3(@playwright/test@1.64.1)(@types/node@26.6.6)(react-dom@19.3.1(react@19.3.1))(react@19.3.1)
71 otplib: 71 otplib:
72 specifier: ^13.5.0 72 specifier: ^13.5.0
73 version: 13.6.0 73 version: 13.6.0
@@ -136,8 +136,8 @@ importers:
136 specifier: ^7.0.2 136 specifier: ^7.0.2
137 version: 7.0.2 137 version: 7.0.2
138 vitest: 138 vitest:
139− specifier: ^5.1.0 139+ specifier: ~5.0.0
140− version: 5.1.0(@types/node@26.6.6)(vite@8.3.5(@types/node@26.6.6)(esbuild@0.28.2)(jiti@2.7.0)(tsx@4.23.15)) 140+ version: 5.0.5(@types/node@26.6.6)(vite@8.3.5(@types/node@26.6.6)(esbuild@0.28.2)(jiti@2.7.0)(tsx@4.23.15))
141 141
142 packages: 142 packages:
143 143
@@ -808,57 +808,57 @@ packages:
808 '@levischuck/tiny-cbor@0.2.11': 808 '@levischuck/tiny-cbor@0.2.11':
809 resolution: {integrity: sha512-llBRm4dT4Z89aRsm6u2oEZ8tfwL/2l6BwpZ7JcyieouniDECM5AqNgr/y08zalEIvW3RSK4upYyybDcmjXqAow==} 809 resolution: {integrity: sha512-llBRm4dT4Z89aRsm6u2oEZ8tfwL/2l6BwpZ7JcyieouniDECM5AqNgr/y08zalEIvW3RSK4upYyybDcmjXqAow==}
810 810
811− '@next/env@16.4.4': 811+ '@next/env@16.4.3':
812− resolution: {integrity: sha512-6/3ZuELR0tPLgNigvv8d/LAmfLIo1IpNfvrI/AHCAl9w9D0DNVGQGvo+OLPzAWR+WMW3vVyO7HaW0kfL97huBg==} 812+ resolution: {integrity: sha512-a7tz1QCcWWkwC/rPJcPMJk/UNRu9CFhDd3OHYE5hddbJrs8BqRTalxI6GlKCWEGzRLHN+S/B7a4PAHCtm25aBQ==}
813 813
814− '@next/swc-darwin-arm64@16.4.4': 814+ '@next/swc-darwin-arm64@16.4.3':
815− resolution: {integrity: sha512-1KlZ5IJ7zcLBZvqG1q7nuRWm2LAAN4C3iBqqoBCRRl1UEv0A4k6Rek+x3j23UiWf8Gz+VsN+M/LylAWkxpm2mg==} 815+ resolution: {integrity: sha512-4yq5EXBt+VDtAZwTyfijaFp5D2C5oz3Ikw5a2kiX2K9nw72vrZX2q5UuAlkPtUMO1tQz6JTKpaKWjS7OOefTDQ==}
816 engines: {node: '>= 10'} 816 engines: {node: '>= 10'}
817 cpu: [arm64] 817 cpu: [arm64]
818 os: [darwin] 818 os: [darwin]
819 819
820− '@next/swc-darwin-x64@16.4.4': 820+ '@next/swc-darwin-x64@16.4.3':
821− resolution: {integrity: sha512-Tb7efFdhbS/ph74RS7wob84gXGM58qxoO/WrkiMsTmy/JZktKOKBeiM45W0E/b8JfBzZJdexQqSmvedBwDK0PA==} 821+ resolution: {integrity: sha512-1Rvkn/LUhnEF8WxnRkOrqGhbwXui1bkWFxONKIbN+r7C+9KHDSZ+iUoj4CzymVMWUyZIyx9szcb9+kbKhD500A==}
822 engines: {node: '>= 10'} 822 engines: {node: '>= 10'}
823 cpu: [x64] 823 cpu: [x64]
824 os: [darwin] 824 os: [darwin]
825 825
826− '@next/swc-linux-arm64-gnu@16.4.4': 826+ '@next/swc-linux-arm64-gnu@16.4.3':
827− resolution: {integrity: sha512-wojSfLnH8RRImhtbcn3Dlx9JICh6aQHgDA33XDr+EPua2tt7Q/yjDn0FTAbqfNlLrBmOASAGhLh6NvBk9L3gzw==} 827+ resolution: {integrity: sha512-dCKpXErGg3abUM6t5JTJV/ottVBTStJB5lRJTbgdUdQaQ+jNHiK56Hsc0YAEg/rinSh42hYG3HWiYmEMdilnxg==}
828 engines: {node: '>= 10'} 828 engines: {node: '>= 10'}
829 cpu: [arm64] 829 cpu: [arm64]
830 os: [linux] 830 os: [linux]
831 libc: [glibc] 831 libc: [glibc]
832 832
833− '@next/swc-linux-arm64-musl@16.4.4': 833+ '@next/swc-linux-arm64-musl@16.4.3':
834− resolution: {integrity: sha512-zgxpGOZaR+2O6dOk5ZAUkKgH92ZtqNg3ohzyg2HmWc2N+AZH4dEpTwdpB0e5MR9YRVdVDUkEM5g6c3TWWn8g1g==} 834+ resolution: {integrity: sha512-WwYbhWkhYBvBtib1K4W0kL8MW2snBD2A5b3SN4vPpqalZbZs5+bQ1yzAdepVoOqrFfEW3dmREy4Zs1MrWcrFbw==}
835 engines: {node: '>= 10'} 835 engines: {node: '>= 10'}
836 cpu: [arm64] 836 cpu: [arm64]
837 os: [linux] 837 os: [linux]
838 libc: [musl] 838 libc: [musl]
839 839
840− '@next/swc-linux-x64-gnu@16.4.4': 840+ '@next/swc-linux-x64-gnu@16.4.3':
841− resolution: {integrity: sha512-fg3Wr030Y3BDkCXi6HGsPz0BUPTGZJS8TZSrCO0tS3O/KBsCyx4eP6aeaizCpGmcUKhtb4l7JoMc88QO2qBl2g==} 841+ resolution: {integrity: sha512-QymWvfUwDEC5/lpJOsxX5VAbyoR2D13+2Jsjz4be7gT4LPqEgdpkeLIR/HFfCLgKzoMhpJbp6I/JnogyNZHcaA==}
842 engines: {node: '>= 10'} 842 engines: {node: '>= 10'}
843 cpu: [x64] 843 cpu: [x64]
844 os: [linux] 844 os: [linux]
845 libc: [glibc] 845 libc: [glibc]
846 846
847− '@next/swc-linux-x64-musl@16.4.4': 847+ '@next/swc-linux-x64-musl@16.4.3':
848− resolution: {integrity: sha512-40cr71PSdCV9zU2g0B1XG27af10tYU+9g8F+FtF3qSguQg0jSZDoxn0NrAvgFQ0cy9s0ZBA/00P9g/XL1O43xg==} 848+ resolution: {integrity: sha512-Vmjd9D7DpA4Vv3cUlr82QWgJD/BQZmns801vtC5VWHg6jCIA4a5vMKpQnfrM2pyCrp2eV0ENdUg4PlN3bAc2Yw==}
849 engines: {node: '>= 10'} 849 engines: {node: '>= 10'}
850 cpu: [x64] 850 cpu: [x64]
851 os: [linux] 851 os: [linux]
852 libc: [musl] 852 libc: [musl]
853 853
854− '@next/swc-win32-arm64-msvc@16.4.4': 854+ '@next/swc-win32-arm64-msvc@16.4.3':
855− resolution: {integrity: sha512-vFMiEbRZ+LYNeswslf4LuGuoPHE8JbtqV0GnmzbpnGNMs0uWaR2q98hu8M/UWGycNJERBXIUss+BGd3PIJ8VZg==} 855+ resolution: {integrity: sha512-lG1pPdPLk7gTyGb00n5JIMLdBJgjb+UEhSdZvFbhUMg0DyC6z4B7RnpSKF9VCd4imkLObVbXOFA0kFCpw7yFow==}
856 engines: {node: '>= 10'} 856 engines: {node: '>= 10'}
857 cpu: [arm64] 857 cpu: [arm64]
858 os: [win32] 858 os: [win32]
859 859
860− '@next/swc-win32-x64-msvc@16.4.4': 860+ '@next/swc-win32-x64-msvc@16.4.3':
861− resolution: {integrity: sha512-jy2P4V8BDZ+CFCzYABHYRZ1CmyFhfmYe22i8KA4uEafdYPrUjJ3Ot+lx265mLWLHiZRIfBzCn3V1F17m0vzl9Q==} 861+ resolution: {integrity: sha512-NmQC9RkJdnPXRaMxtkCzobB3teVjqF33oSOnwDfi+XYGWWYpt+xlGK3mtktSKLbdjwaWbJu2OkkMiRFGUUncKg==}
862 engines: {node: '>= 10'} 862 engines: {node: '>= 10'}
863 cpu: [x64] 863 cpu: [x64]
864 os: [win32] 864 os: [win32]
@@ -1751,8 +1751,8 @@ packages:
1751 cpu: [x64] 1751 cpu: [x64]
1752 os: [win32] 1752 os: [win32]
1753 1753
1754− '@vitest/mocker@5.1.0': 1754+ '@vitest/mocker@5.0.5':
1755− resolution: {integrity: sha512-5umB9/jlWcqVS6fsrFmv5Gdnpu6wAUio/lEOwAmvB7v+lFo/IW2B9FhAD0p19GCULTgMzLCdUmuCDCnAzWgppQ==} 1755+ resolution: {integrity: sha512-xLL3lkDegJZw+MGoGaCCsFayDZthGgpAtr3Vziyfc4p7xH89K7KRPcRBBh/kEYm0Aqkt5DtTmkYpBtRV/FrHZg==}
1756 peerDependencies: 1756 peerDependencies:
1757 msw: ^2.4.9 || ^3.0.0 1757 msw: ^2.4.9 || ^3.0.0
1758 vite: ^6.0.0 || ^7.0.0 || ^8.0.0 1758 vite: ^6.0.0 || ^7.0.0 || ^8.0.0
@@ -1762,8 +1762,8 @@ packages:
1762 vite: 1762 vite:
1763 optional: true 1763 optional: true
1764 1764
1765− '@vitest/spy@5.1.0': 1765+ '@vitest/spy@5.0.5':
1766− resolution: {integrity: sha512-2DPO5OMHWKrBngC+fCmTQqemNF0gidRhp3lxbBmRhW+M1XJrfgPpqNqWVevXtn2f2ufD5ZaR1B6B641aAlcX5A==} 1766+ resolution: {integrity: sha512-lwJRExuH417257Q5wv9QYugN9IMJkoxcrKrYxGPQkBzl7wlNpTUxD/5yNX4ESKVUIShKPgkGchYPFMWOOk0wzw==}
1767 1767
1768 ansi-regex@5.0.1: 1768 ansi-regex@5.0.1:
1769 resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} 1769 resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==}
@@ -2245,8 +2245,8 @@ packages:
2245 engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} 2245 engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1}
2246 hasBin: true 2246 hasBin: true
2247 2247
2248− next@16.4.4: 2248+ next@16.4.3:
2249− resolution: {integrity: sha512-Hu4pOw2x0RQ0TQabNWbpsNg/3+SZf+rLQwvfhBLnptv98GS4dcIVMlfEyn9jb2/ZJDSahhnUKEs0YrfarjGX3A==} 2249+ resolution: {integrity: sha512-OqxKTGi9u80FydydsMNYNjnuje9Au+kvHlt2GZ//ftdpDHm1dxKqAaENoOOTX5wKzn+9vaKUNIfZeyZUuLhCnA==}
2250 engines: {node: '>=20.9.0'} 2250 engines: {node: '>=20.9.0'}
2251 hasBin: true 2251 hasBin: true
2252 peerDependencies: 2252 peerDependencies:
@@ -2568,20 +2568,20 @@ packages:
2568 yaml: 2568 yaml:
2569 optional: true 2569 optional: true
2570 2570
2571− vitest@5.1.0: 2571+ vitest@5.0.5:
2572− resolution: {integrity: sha512-MzmNFnrwa8v8lF1bLxw3UJ4EREwVOVb75VqJZmUDRjJ6EluK/x9th7qTbaeDk41WxE1GxWqmTXcdsfobfH5sOA==} 2572+ resolution: {integrity: sha512-cPODOMF8YnkiiYtDdHo6n4wWmBrOBBbOIYH2d33M4l3CdNn72h+qMmO6uXffUN6A5AZFXNND/d+krS9mgkXRfg==}
2573 engines: {node: ^22.12.0 || ^24.0.0 || >=26.0.0} 2573 engines: {node: ^22.12.0 || ^24.0.0 || >=26.0.0}
2574 hasBin: true 2574 hasBin: true
2575 peerDependencies: 2575 peerDependencies:
2576 '@edge-runtime/vm': '*' 2576 '@edge-runtime/vm': '*'
2577 '@opentelemetry/api': ^1.9.0 2577 '@opentelemetry/api': ^1.9.0
2578 '@types/node': ^22.0.0 || >=24.0.0 2578 '@types/node': ^22.0.0 || >=24.0.0
2579− '@vitest/browser-playwright': 5.1.0 2579+ '@vitest/browser-playwright': 5.0.5
2580− '@vitest/browser-preview': 5.1.0 2580+ '@vitest/browser-preview': 5.0.5
2581 '@vitest/browser-webdriverio': ^5.0.0-beta.5 || >=5.0.0 2581 '@vitest/browser-webdriverio': ^5.0.0-beta.5 || >=5.0.0
2582− '@vitest/coverage-istanbul': 5.1.0 2582+ '@vitest/coverage-istanbul': 5.0.5
2583− '@vitest/coverage-v8': 5.1.0 2583+ '@vitest/coverage-v8': 5.0.5
2584− '@vitest/ui': 5.1.0 2584+ '@vitest/ui': 5.0.5
2585 happy-dom: '*' 2585 happy-dom: '*'
2586 jsdom: '*' 2586 jsdom: '*'
2587 vite: ^6.4.0 || ^7.0.0 || ^8.0.0 2587 vite: ^6.4.0 || ^7.0.0 || ^8.0.0
@@ -3030,30 +3030,30 @@ snapshots:
3030 3030
3031 '@levischuck/tiny-cbor@0.2.11': {} 3031 '@levischuck/tiny-cbor@0.2.11': {}
3032 3032
3033− '@next/env@16.4.4': {} 3033+ '@next/env@16.4.3': {}
3034 3034
3035− '@next/swc-darwin-arm64@16.4.4': 3035+ '@next/swc-darwin-arm64@16.4.3':
3036 optional: true 3036 optional: true
3037 3037
3038− '@next/swc-darwin-x64@16.4.4': 3038+ '@next/swc-darwin-x64@16.4.3':
3039 optional: true 3039 optional: true
3040 3040
3041− '@next/swc-linux-arm64-gnu@16.4.4': 3041+ '@next/swc-linux-arm64-gnu@16.4.3':
3042 optional: true 3042 optional: true
3043 3043
3044− '@next/swc-linux-arm64-musl@16.4.4': 3044+ '@next/swc-linux-arm64-musl@16.4.3':
3045 optional: true 3045 optional: true
3046 3046
3047− '@next/swc-linux-x64-gnu@16.4.4': 3047+ '@next/swc-linux-x64-gnu@16.4.3':
3048 optional: true 3048 optional: true
3049 3049
3050− '@next/swc-linux-x64-musl@16.4.4': 3050+ '@next/swc-linux-x64-musl@16.4.3':
3051 optional: true 3051 optional: true
3052 3052
3053− '@next/swc-win32-arm64-msvc@16.4.4': 3053+ '@next/swc-win32-arm64-msvc@16.4.3':
3054 optional: true 3054 optional: true
3055 3055
3056− '@next/swc-win32-x64-msvc@16.4.4': 3056+ '@next/swc-win32-x64-msvc@16.4.3':
3057 optional: true 3057 optional: true
3058 3058
3059 '@noble/hashes@2.4.0': {} 3059 '@noble/hashes@2.4.0': {}
@@ -3874,16 +3874,16 @@ snapshots:
3874 '@typescript/typescript-win32-x64@7.0.2': 3874 '@typescript/typescript-win32-x64@7.0.2':
3875 optional: true 3875 optional: true
3876 3876
3877− '@vitest/mocker@5.1.0(vite@8.3.5(@types/node@26.6.6)(esbuild@0.28.2)(jiti@2.7.0)(tsx@4.23.15))': 3877+ '@vitest/mocker@5.0.5(vite@8.3.5(@types/node@26.6.6)(esbuild@0.28.2)(jiti@2.7.0)(tsx@4.23.15))':
3878 dependencies: 3878 dependencies:
3879 '@jridgewell/trace-mapping': 0.3.31 3879 '@jridgewell/trace-mapping': 0.3.31
3880− '@vitest/spy': 5.1.0 3880+ '@vitest/spy': 5.0.5
3881 estree-walker: 3.0.3 3881 estree-walker: 3.0.3
3882 magic-string: 1.4.5 3882 magic-string: 1.4.5
3883 optionalDependencies: 3883 optionalDependencies:
3884 vite: 8.3.5(@types/node@26.6.6)(esbuild@0.28.2)(jiti@2.7.0)(tsx@4.23.15) 3884 vite: 8.3.5(@types/node@26.6.6)(esbuild@0.28.2)(jiti@2.7.0)(tsx@4.23.15)
3885 3885
3886− '@vitest/spy@5.1.0': {} 3886+ '@vitest/spy@5.0.5': {}
3887 3887
3888 ansi-regex@5.0.1: {} 3888 ansi-regex@5.0.1: {}
3889 3889
@@ -4253,9 +4253,9 @@ snapshots:
4253 4253
4254 nanoid@3.3.20: {} 4254 nanoid@3.3.20: {}
4255 4255
4256− next@16.4.4(@playwright/test@1.64.1)(@types/node@26.6.6)(react-dom@19.3.1(react@19.3.1))(react@19.3.1): 4256+ next@16.4.3(@playwright/test@1.64.1)(@types/node@26.6.6)(react-dom@19.3.1(react@19.3.1))(react@19.3.1):
4257 dependencies: 4257 dependencies:
4258− '@next/env': 16.4.4 4258+ '@next/env': 16.4.3
4259 '@swc/helpers': 0.5.23 4259 '@swc/helpers': 0.5.23
4260 baseline-browser-mapping: 2.11.34 4260 baseline-browser-mapping: 2.11.34
4261 caniuse-lite: 1.0.30001820 4261 caniuse-lite: 1.0.30001820
@@ -4264,14 +4264,14 @@ snapshots:
4264 react-dom: 19.3.1(react@19.3.1) 4264 react-dom: 19.3.1(react@19.3.1)
4265 styled-jsx: 5.1.6(react@19.3.1) 4265 styled-jsx: 5.1.6(react@19.3.1)
4266 optionalDependencies: 4266 optionalDependencies:
4267− '@next/swc-darwin-arm64': 16.4.4 4267+ '@next/swc-darwin-arm64': 16.4.3
4268− '@next/swc-darwin-x64': 16.4.4 4268+ '@next/swc-darwin-x64': 16.4.3
4269− '@next/swc-linux-arm64-gnu': 16.4.4 4269+ '@next/swc-linux-arm64-gnu': 16.4.3
4270− '@next/swc-linux-arm64-musl': 16.4.4 4270+ '@next/swc-linux-arm64-musl': 16.4.3
4271− '@next/swc-linux-x64-gnu': 16.4.4 4271+ '@next/swc-linux-x64-gnu': 16.4.3
4272− '@next/swc-linux-x64-musl': 16.4.4 4272+ '@next/swc-linux-x64-musl': 16.4.3
4273− '@next/swc-win32-arm64-msvc': 16.4.4 4273+ '@next/swc-win32-arm64-msvc': 16.4.3
4274− '@next/swc-win32-x64-msvc': 16.4.4 4274+ '@next/swc-win32-x64-msvc': 16.4.3
4275 '@playwright/test': 1.64.1 4275 '@playwright/test': 1.64.1
4276 sharp: 0.35.5(@types/node@26.6.6) 4276 sharp: 0.35.5(@types/node@26.6.6)
4277 transitivePeerDependencies: 4277 transitivePeerDependencies:
@@ -4568,10 +4568,10 @@ snapshots:
4568 jiti: 2.7.0 4568 jiti: 2.7.0
4569 tsx: 4.23.15 4569 tsx: 4.23.15
4570 4570
4571− vitest@5.1.0(@types/node@26.6.6)(vite@8.3.5(@types/node@26.6.6)(esbuild@0.28.2)(jiti@2.7.0)(tsx@4.23.15)): 4571+ vitest@5.0.5(@types/node@26.6.6)(vite@8.3.5(@types/node@26.6.6)(esbuild@0.28.2)(jiti@2.7.0)(tsx@4.23.15)):
4572 dependencies: 4572 dependencies:
4573 '@types/chai': 5.2.3 4573 '@types/chai': 5.2.3
4574− '@vitest/mocker': 5.1.0(vite@8.3.5(@types/node@26.6.6)(esbuild@0.28.2)(jiti@2.7.0)(tsx@4.23.15)) 4574+ '@vitest/mocker': 5.0.5(vite@8.3.5(@types/node@26.6.6)(esbuild@0.28.2)(jiti@2.7.0)(tsx@4.23.15))
4575 chai: 6.3.0 4575 chai: 6.3.0
4576 es-module-lexer: 2.3.2 4576 es-module-lexer: 2.3.2
4577 expect-type: 1.4.0 4577 expect-type: 1.4.0
added pnpm-workspace.yaml +7 −0
@@ -0,0 +1,7 @@
1+# pnpm ≥ 10 settings (pnpm 12 no longer reads the "pnpm" field in package.json)
2+onlyBuiltDependencies:
3+ - "@node-rs/argon2"
4+ - esbuild
5+ - sharp
6+# Supply-chain policy: refuse packages published less than 24 h ago (pnpm 12 default, made explicit).
7+minimumReleaseAge: 1440
8
Menu

Theme