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 6 "health_path": "/api/health",
7 7 "dir": "~/apps/tools-spboucher-ai",
8 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"],
10 − "requires": { "runtimes": ["node", "pnpm", "pm2", "postgresql@17"], "ram_gb": 3, "ports": [8540] },
9 + "sync_excludes": [
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 36 "ram_mb_observed": 600,
12 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 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" },
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" }
47 + {
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 90 "ngrok": null,
19 91 "launchd": [],
20 92 "env_overrides": {},
21 93 "hooks": {
22 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",
24 − "export PATH=\"/opt/homebrew/bin:$PATH\"; pnpm install --frozen-lockfile --silent && 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'",
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'",
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",
96 + "set -o pipefail; export PATH=\"/opt/homebrew/bin:$PATH\"; pnpm install --frozen-lockfile --silent && test -d node_modules/next && echo ' deps 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'",
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 99 "mkdir -p ~/backups/tools-spboucher-ai && chmod 700 ~/backups/tools-spboucher-ai && echo ' backup dir ok'"
28 100 ],
29 101 "post_start": []
30 102 },
31 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 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 46 "drizzle-orm": "^0.45.4",
47 47 "lucide-react": "^1.66.0",
48 48 "marked": "^18.1.2",
49 − "next": "16.4.4",
49 + "next": "16.4.3",
50 50 "otplib": "^13.5.0",
51 51 "papaparse": "^5.5.3",
52 52 "postgres": "^4.0.0",
@@ -71,7 +71,7 @@
71 71 "drizzle-kit": "^0.31.11",
72 72 "tsx": "^4.23.15",
73 73 "typescript": "^7.0.2",
74 − "vitest": "^5.1.0"
74 + "vitest": "~5.0.0"
75 75 },
76 76 "pnpm": {
77 77 "onlyBuiltDependencies": [
modified pnpm-lock.yaml +59 −59
@@ -66,8 +66,8 @@ importers:
66 66 specifier: ^18.1.2
67 67 version: 18.1.2
68 68 next:
69 − specifier: 16.4.4
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)
69 + specifier: 16.4.3
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 71 otplib:
72 72 specifier: ^13.5.0
73 73 version: 13.6.0
@@ -136,8 +136,8 @@ importers:
136 136 specifier: ^7.0.2
137 137 version: 7.0.2
138 138 vitest:
139 − specifier: ^5.1.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))
139 + specifier: ~5.0.0
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 142 packages:
143 143
@@ -808,57 +808,57 @@ packages:
808 808 '@levischuck/tiny-cbor@0.2.11':
809 809 resolution: {integrity: sha512-llBRm4dT4Z89aRsm6u2oEZ8tfwL/2l6BwpZ7JcyieouniDECM5AqNgr/y08zalEIvW3RSK4upYyybDcmjXqAow==}
810 810
811 − '@next/env@16.4.4':
812 − resolution: {integrity: sha512-6/3ZuELR0tPLgNigvv8d/LAmfLIo1IpNfvrI/AHCAl9w9D0DNVGQGvo+OLPzAWR+WMW3vVyO7HaW0kfL97huBg==}
811 + '@next/env@16.4.3':
812 + resolution: {integrity: sha512-a7tz1QCcWWkwC/rPJcPMJk/UNRu9CFhDd3OHYE5hddbJrs8BqRTalxI6GlKCWEGzRLHN+S/B7a4PAHCtm25aBQ==}
813 813
814 − '@next/swc-darwin-arm64@16.4.4':
815 − resolution: {integrity: sha512-1KlZ5IJ7zcLBZvqG1q7nuRWm2LAAN4C3iBqqoBCRRl1UEv0A4k6Rek+x3j23UiWf8Gz+VsN+M/LylAWkxpm2mg==}
814 + '@next/swc-darwin-arm64@16.4.3':
815 + resolution: {integrity: sha512-4yq5EXBt+VDtAZwTyfijaFp5D2C5oz3Ikw5a2kiX2K9nw72vrZX2q5UuAlkPtUMO1tQz6JTKpaKWjS7OOefTDQ==}
816 816 engines: {node: '>= 10'}
817 817 cpu: [arm64]
818 818 os: [darwin]
819 819
820 − '@next/swc-darwin-x64@16.4.4':
821 − resolution: {integrity: sha512-Tb7efFdhbS/ph74RS7wob84gXGM58qxoO/WrkiMsTmy/JZktKOKBeiM45W0E/b8JfBzZJdexQqSmvedBwDK0PA==}
820 + '@next/swc-darwin-x64@16.4.3':
821 + resolution: {integrity: sha512-1Rvkn/LUhnEF8WxnRkOrqGhbwXui1bkWFxONKIbN+r7C+9KHDSZ+iUoj4CzymVMWUyZIyx9szcb9+kbKhD500A==}
822 822 engines: {node: '>= 10'}
823 823 cpu: [x64]
824 824 os: [darwin]
825 825
826 − '@next/swc-linux-arm64-gnu@16.4.4':
827 − resolution: {integrity: sha512-wojSfLnH8RRImhtbcn3Dlx9JICh6aQHgDA33XDr+EPua2tt7Q/yjDn0FTAbqfNlLrBmOASAGhLh6NvBk9L3gzw==}
826 + '@next/swc-linux-arm64-gnu@16.4.3':
827 + resolution: {integrity: sha512-dCKpXErGg3abUM6t5JTJV/ottVBTStJB5lRJTbgdUdQaQ+jNHiK56Hsc0YAEg/rinSh42hYG3HWiYmEMdilnxg==}
828 828 engines: {node: '>= 10'}
829 829 cpu: [arm64]
830 830 os: [linux]
831 831 libc: [glibc]
832 832
833 − '@next/swc-linux-arm64-musl@16.4.4':
834 − resolution: {integrity: sha512-zgxpGOZaR+2O6dOk5ZAUkKgH92ZtqNg3ohzyg2HmWc2N+AZH4dEpTwdpB0e5MR9YRVdVDUkEM5g6c3TWWn8g1g==}
833 + '@next/swc-linux-arm64-musl@16.4.3':
834 + resolution: {integrity: sha512-WwYbhWkhYBvBtib1K4W0kL8MW2snBD2A5b3SN4vPpqalZbZs5+bQ1yzAdepVoOqrFfEW3dmREy4Zs1MrWcrFbw==}
835 835 engines: {node: '>= 10'}
836 836 cpu: [arm64]
837 837 os: [linux]
838 838 libc: [musl]
839 839
840 − '@next/swc-linux-x64-gnu@16.4.4':
841 − resolution: {integrity: sha512-fg3Wr030Y3BDkCXi6HGsPz0BUPTGZJS8TZSrCO0tS3O/KBsCyx4eP6aeaizCpGmcUKhtb4l7JoMc88QO2qBl2g==}
840 + '@next/swc-linux-x64-gnu@16.4.3':
841 + resolution: {integrity: sha512-QymWvfUwDEC5/lpJOsxX5VAbyoR2D13+2Jsjz4be7gT4LPqEgdpkeLIR/HFfCLgKzoMhpJbp6I/JnogyNZHcaA==}
842 842 engines: {node: '>= 10'}
843 843 cpu: [x64]
844 844 os: [linux]
845 845 libc: [glibc]
846 846
847 − '@next/swc-linux-x64-musl@16.4.4':
848 − resolution: {integrity: sha512-40cr71PSdCV9zU2g0B1XG27af10tYU+9g8F+FtF3qSguQg0jSZDoxn0NrAvgFQ0cy9s0ZBA/00P9g/XL1O43xg==}
847 + '@next/swc-linux-x64-musl@16.4.3':
848 + resolution: {integrity: sha512-Vmjd9D7DpA4Vv3cUlr82QWgJD/BQZmns801vtC5VWHg6jCIA4a5vMKpQnfrM2pyCrp2eV0ENdUg4PlN3bAc2Yw==}
849 849 engines: {node: '>= 10'}
850 850 cpu: [x64]
851 851 os: [linux]
852 852 libc: [musl]
853 853
854 − '@next/swc-win32-arm64-msvc@16.4.4':
855 − resolution: {integrity: sha512-vFMiEbRZ+LYNeswslf4LuGuoPHE8JbtqV0GnmzbpnGNMs0uWaR2q98hu8M/UWGycNJERBXIUss+BGd3PIJ8VZg==}
854 + '@next/swc-win32-arm64-msvc@16.4.3':
855 + resolution: {integrity: sha512-lG1pPdPLk7gTyGb00n5JIMLdBJgjb+UEhSdZvFbhUMg0DyC6z4B7RnpSKF9VCd4imkLObVbXOFA0kFCpw7yFow==}
856 856 engines: {node: '>= 10'}
857 857 cpu: [arm64]
858 858 os: [win32]
859 859
860 − '@next/swc-win32-x64-msvc@16.4.4':
861 − resolution: {integrity: sha512-jy2P4V8BDZ+CFCzYABHYRZ1CmyFhfmYe22i8KA4uEafdYPrUjJ3Ot+lx265mLWLHiZRIfBzCn3V1F17m0vzl9Q==}
860 + '@next/swc-win32-x64-msvc@16.4.3':
861 + resolution: {integrity: sha512-NmQC9RkJdnPXRaMxtkCzobB3teVjqF33oSOnwDfi+XYGWWYpt+xlGK3mtktSKLbdjwaWbJu2OkkMiRFGUUncKg==}
862 862 engines: {node: '>= 10'}
863 863 cpu: [x64]
864 864 os: [win32]
@@ -1751,8 +1751,8 @@ packages:
1751 1751 cpu: [x64]
1752 1752 os: [win32]
1753 1753
1754 − '@vitest/mocker@5.1.0':
1755 − resolution: {integrity: sha512-5umB9/jlWcqVS6fsrFmv5Gdnpu6wAUio/lEOwAmvB7v+lFo/IW2B9FhAD0p19GCULTgMzLCdUmuCDCnAzWgppQ==}
1754 + '@vitest/mocker@5.0.5':
1755 + resolution: {integrity: sha512-xLL3lkDegJZw+MGoGaCCsFayDZthGgpAtr3Vziyfc4p7xH89K7KRPcRBBh/kEYm0Aqkt5DtTmkYpBtRV/FrHZg==}
1756 1756 peerDependencies:
1757 1757 msw: ^2.4.9 || ^3.0.0
1758 1758 vite: ^6.0.0 || ^7.0.0 || ^8.0.0
@@ -1762,8 +1762,8 @@ packages:
1762 1762 vite:
1763 1763 optional: true
1764 1764
1765 − '@vitest/spy@5.1.0':
1766 − resolution: {integrity: sha512-2DPO5OMHWKrBngC+fCmTQqemNF0gidRhp3lxbBmRhW+M1XJrfgPpqNqWVevXtn2f2ufD5ZaR1B6B641aAlcX5A==}
1765 + '@vitest/spy@5.0.5':
1766 + resolution: {integrity: sha512-lwJRExuH417257Q5wv9QYugN9IMJkoxcrKrYxGPQkBzl7wlNpTUxD/5yNX4ESKVUIShKPgkGchYPFMWOOk0wzw==}
1767 1767
1768 1768 ansi-regex@5.0.1:
1769 1769 resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==}
@@ -2245,8 +2245,8 @@ packages:
2245 2245 engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1}
2246 2246 hasBin: true
2247 2247
2248 − next@16.4.4:
2249 − resolution: {integrity: sha512-Hu4pOw2x0RQ0TQabNWbpsNg/3+SZf+rLQwvfhBLnptv98GS4dcIVMlfEyn9jb2/ZJDSahhnUKEs0YrfarjGX3A==}
2248 + next@16.4.3:
2249 + resolution: {integrity: sha512-OqxKTGi9u80FydydsMNYNjnuje9Au+kvHlt2GZ//ftdpDHm1dxKqAaENoOOTX5wKzn+9vaKUNIfZeyZUuLhCnA==}
2250 2250 engines: {node: '>=20.9.0'}
2251 2251 hasBin: true
2252 2252 peerDependencies:
@@ -2568,20 +2568,20 @@ packages:
2568 2568 yaml:
2569 2569 optional: true
2570 2570
2571 − vitest@5.1.0:
2572 − resolution: {integrity: sha512-MzmNFnrwa8v8lF1bLxw3UJ4EREwVOVb75VqJZmUDRjJ6EluK/x9th7qTbaeDk41WxE1GxWqmTXcdsfobfH5sOA==}
2571 + vitest@5.0.5:
2572 + resolution: {integrity: sha512-cPODOMF8YnkiiYtDdHo6n4wWmBrOBBbOIYH2d33M4l3CdNn72h+qMmO6uXffUN6A5AZFXNND/d+krS9mgkXRfg==}
2573 2573 engines: {node: ^22.12.0 || ^24.0.0 || >=26.0.0}
2574 2574 hasBin: true
2575 2575 peerDependencies:
2576 2576 '@edge-runtime/vm': '*'
2577 2577 '@opentelemetry/api': ^1.9.0
2578 2578 '@types/node': ^22.0.0 || >=24.0.0
2579 − '@vitest/browser-playwright': 5.1.0
2580 − '@vitest/browser-preview': 5.1.0
2579 + '@vitest/browser-playwright': 5.0.5
2580 + '@vitest/browser-preview': 5.0.5
2581 2581 '@vitest/browser-webdriverio': ^5.0.0-beta.5 || >=5.0.0
2582 − '@vitest/coverage-istanbul': 5.1.0
2583 − '@vitest/coverage-v8': 5.1.0
2584 − '@vitest/ui': 5.1.0
2582 + '@vitest/coverage-istanbul': 5.0.5
2583 + '@vitest/coverage-v8': 5.0.5
2584 + '@vitest/ui': 5.0.5
2585 2585 happy-dom: '*'
2586 2586 jsdom: '*'
2587 2587 vite: ^6.4.0 || ^7.0.0 || ^8.0.0
@@ -3030,30 +3030,30 @@ snapshots:
3030 3030
3031 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 3036 optional: true
3037 3037
3038 − '@next/swc-darwin-x64@16.4.4':
3038 + '@next/swc-darwin-x64@16.4.3':
3039 3039 optional: true
3040 3040
3041 − '@next/swc-linux-arm64-gnu@16.4.4':
3041 + '@next/swc-linux-arm64-gnu@16.4.3':
3042 3042 optional: true
3043 3043
3044 − '@next/swc-linux-arm64-musl@16.4.4':
3044 + '@next/swc-linux-arm64-musl@16.4.3':
3045 3045 optional: true
3046 3046
3047 − '@next/swc-linux-x64-gnu@16.4.4':
3047 + '@next/swc-linux-x64-gnu@16.4.3':
3048 3048 optional: true
3049 3049
3050 − '@next/swc-linux-x64-musl@16.4.4':
3050 + '@next/swc-linux-x64-musl@16.4.3':
3051 3051 optional: true
3052 3052
3053 − '@next/swc-win32-arm64-msvc@16.4.4':
3053 + '@next/swc-win32-arm64-msvc@16.4.3':
3054 3054 optional: true
3055 3055
3056 − '@next/swc-win32-x64-msvc@16.4.4':
3056 + '@next/swc-win32-x64-msvc@16.4.3':
3057 3057 optional: true
3058 3058
3059 3059 '@noble/hashes@2.4.0': {}
@@ -3874,16 +3874,16 @@ snapshots:
3874 3874 '@typescript/typescript-win32-x64@7.0.2':
3875 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 3878 dependencies:
3879 3879 '@jridgewell/trace-mapping': 0.3.31
3880 − '@vitest/spy': 5.1.0
3880 + '@vitest/spy': 5.0.5
3881 3881 estree-walker: 3.0.3
3882 3882 magic-string: 1.4.5
3883 3883 optionalDependencies:
3884 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 3888 ansi-regex@5.0.1: {}
3889 3889
@@ -4253,9 +4253,9 @@ snapshots:
4253 4253
4254 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 4257 dependencies:
4258 − '@next/env': 16.4.4
4258 + '@next/env': 16.4.3
4259 4259 '@swc/helpers': 0.5.23
4260 4260 baseline-browser-mapping: 2.11.34
4261 4261 caniuse-lite: 1.0.30001820
@@ -4264,14 +4264,14 @@ snapshots:
4264 4264 react-dom: 19.3.1(react@19.3.1)
4265 4265 styled-jsx: 5.1.6(react@19.3.1)
4266 4266 optionalDependencies:
4267 − '@next/swc-darwin-arm64': 16.4.4
4268 − '@next/swc-darwin-x64': 16.4.4
4269 − '@next/swc-linux-arm64-gnu': 16.4.4
4270 − '@next/swc-linux-arm64-musl': 16.4.4
4271 − '@next/swc-linux-x64-gnu': 16.4.4
4272 − '@next/swc-linux-x64-musl': 16.4.4
4273 − '@next/swc-win32-arm64-msvc': 16.4.4
4274 − '@next/swc-win32-x64-msvc': 16.4.4
4267 + '@next/swc-darwin-arm64': 16.4.3
4268 + '@next/swc-darwin-x64': 16.4.3
4269 + '@next/swc-linux-arm64-gnu': 16.4.3
4270 + '@next/swc-linux-arm64-musl': 16.4.3
4271 + '@next/swc-linux-x64-gnu': 16.4.3
4272 + '@next/swc-linux-x64-musl': 16.4.3
4273 + '@next/swc-win32-arm64-msvc': 16.4.3
4274 + '@next/swc-win32-x64-msvc': 16.4.3
4275 4275 '@playwright/test': 1.64.1
4276 4276 sharp: 0.35.5(@types/node@26.6.6)
4277 4277 transitivePeerDependencies:
@@ -4568,10 +4568,10 @@ snapshots:
4568 4568 jiti: 2.7.0
4569 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 4572 dependencies:
4573 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 4575 chai: 6.3.0
4576 4576 es-module-lexer: 2.3.2
4577 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