build: repair the lockfile, clear every npm advisory, and let CI see Node - #212
Merged
Merged
Conversation
…Node Three findings, one cause: no workflow ran Node, so nothing about the asset tree was ever checked. `npm ci` failed on main. The committed package-lock.json disagreed with itself — "Invalid: lock file's emoji-regex@8.0.0 does not satisfy emoji-regex@10.6.0" — so a fresh clone could not install with the one command that installs exactly what the lock says. `composer setup` runs `npm install`, which repairs such a lock silently and reports success, so the breakage was invisible from every path anyone actually walks. With the lock repaired, `npm update` moves axios, vite, postcss, nanoid, esbuild, shell-quote and form-data to patched versions: `npm audit` goes from 7 vulnerabilities (1 critical, 5 high, 1 low) to 0. The declared floor for axios moves to ^1.20.0 — `^1.8.2` still admitted the vulnerable version it named. The README asked for "Node.js 20+", while Vite 7 requires ^20.19.0 || >=22.12.0. The Assets job runs `npm ci` then `npm run build` on both floors. `npm ci` is the point: `npm install` would have papered over the very state this job exists to catch. Verified locally on Node 22.22: `npm ci` from a removed node_modules, then `npm run build` — 60 modules, built in 1.18s. The client bundle grows from 38.57 kB to 51.53 kB, which is axios 1.8.2 to 1.20.0.
This was referenced Sep 22, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Follows #211, which removed the
yarn.lockthat produced 35 of the 56 alerts.This clears the remaining 21 — and explains why they were able to accumulate.
npm cidid not work onmainThe committed
package-lock.jsondisagreed with itself, so a fresh clone couldnot install with the one command that installs exactly what the lock says.
It went unnoticed because nothing exercised it.
composer setuprunsnpm install, which repairs such a lock in silence and reports success, andno workflow ran Node at all. Both paths anyone actually walks were blind to
it.
With the lock repaired, every advisory clears
npm update, within the declared ranges:npm audit: 7 vulnerabilities (1 critical, 5 high, 1 low) → 0.The declared floor for
axiosmoves from^1.8.2to^1.20.0. The old rangestill admitted the vulnerable version it named, which is what Dependabot #166
was asking for — that PR is superseded by this one.
Why CI never caught any of it
No workflow ran Node. The new Assets job runs
npm cithennpm run buildon both Node floors Vite 7 accepts.
npm cirather thannpm installis the whole point:npm installwould haverepaired the broken lock and reported success, which is precisely how the
broken lock reached
main.Testing both floors rather than only the newest keeps the documented minimum
honest — which it was not: the README asked for "Node.js 20+" while Vite 7
requires
^20.19.0 || >=22.12.0, so Node 20.0 through 20.18 would fail thebuild the README implied they could run. Corrected.
Verified locally, Node 22.22
npm cifrom a removednode_modules, thennpm run build: 60 modules, builtin 1.18s, manifest and assets emitted. The client bundle grows from 38.57 kB to
51.53 kB — that is axios 1.8.2 → 1.20.0, and it is the honest cost of the
update.
Dependabot pull requests this settles
With #211, all nine open ones are now dead or superseded:
yarn.lockonlythemes/default/package-lock.jsonthemes/holds only.gitkeeponmain; themes are separate repositories nowapp/Themes/Apiary/…package.jsonaxios floorThey should be closed with a comment rather than merged.