chore(security): clear all Dependabot alerts and pin Pages actions - #28
Merged
Conversation
This was referenced Jul 28, 2026
…ctions
npm audit went from 5 high to 0. `npm ci && npx next build` — the exact CI
path — verified clean, with index.html and 404.html in the static export.
Dependencies
- next 15.3.3 -> 16.2.12, which carries patched postcss and sharp
- overrides pinning postcss >=8.5.24 and sharp >=0.35.3, because next 15.5.22
(latest 15.x) still bundles postcss 8.4.31 and sharp 0.34.5
`npm audit fix --force` proposed next@9.3.3 — npm falling back to the last
release without an advisory rather than the first release with the fix. Taking
it would have downgraded four majors to resolve a CVE. Bumping forward is the
actual fix.
Removed eslint and eslint-config-next
Every one of the 9 remaining advisories resolved to a single root: brace-expansion,
reached only through eslint's minimatch@3. There is no patched 1.x — 1.1.16 is the
newest and still inside the advisory range — so the only fix is eslint@10, whose
peer ranges eslint-config-next@16's plugins do not satisfy. Both eslint@10 and an
eslint@9 + brace-expansion override were tried; each crashed the linter outright.
That cost is only worth paying for a working linter, and this one never worked:
no eslint config file has ever existed in this repo, so `npm run lint` has always
exited 2 on a missing config. CI runs `next build` only and never invoked it.
Removing a dependency that has never executed is cleanup, not a capability loss.
Reinstating lint is a clean follow-up once eslint-config-next ships eslint@10
support. Worth noting for whoever picks it up: with a config in place the current
page.tsx reports 8 react-hooks/refs errors, which on inspection are false
positives from react-hooks v7 flagging valid `ref={obj.ref}` usage.
Actions
- pages.yml was using mutable @v3/@v4 tags while validate.yml was SHA-pinned per
the convention set in #11; pages.yml is now pinned to match
- checkout v7.0.1, setup-node v7.0.0, upload-pages-artifact v5.0.0, deploy-pages v5.0.0
- every SHA verified against the tag it claims via the GitHub API
- Pages runner node 20 -> 22; node 20 reached EOL in April 2026 and next 16
requires >=20.9.0
tsconfig.json changes are next 16's automatic migration (jsx react-jsx, dev types
path), applied by the build itself.
Supersedes #21, #22, #24, #25, #26.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: 9cb0b232-bb14-47a5-a150-00e71bdddcae
DUBSOpenHub
force-pushed
the
chore/dependency-security-sweep
branch
from
July 28, 2026 21:00
71b26fe to
a82762a
Compare
This was referenced Jul 28, 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.
Closes the Dependabot backlog. 5 high-severity alerts → 0. Verified with the exact CI path (
npm ci && npx next build), which exits 0 and producesindex.html+404.html.Dependencies
next15.3.3 → 16.2.12, which carries patchedpostcssandsharpoverridespinningpostcss >=8.5.24andsharp >=0.35.3— next 15.5.22 (latest 15.x) still bundlespostcss@8.4.31andsharp@0.34.5, so staying on 15 could not clear the alertsRemoved
eslint+eslint-config-next— please sanity-check this callAll 9 remaining advisories traced to one root:
brace-expansion, reachable only through eslint'sminimatch@3.1.1.16is the newest and still inside the advisory rangeeslint@10, whose peer rangeseslint-config-next@16's plugins do not satisfyeslint@10andeslint@9+ abrace-expansionoverride; each crashed the linter outrightThat cost is only worth paying for a working linter, and this one never worked: no eslint config file has ever existed in this repo (verified against
main), sonpm run linthas always exited 2 on a missing config. CI runsnext buildonly and never invoked it. Removing a dependency that has never executed once is cleanup, not a capability loss.Follow-up: reinstating lint is clean once
eslint-config-nextsupportseslint@10. Note for whoever picks it up — with a config in place,page.tsxreports 8react-hooks/refserrors that on inspection are false positives from react-hooks v7 flagging validref={obj.ref}usage.Actions
pages.ymlwas on mutable@v3/@v4tags whilevalidate.ymlwas SHA-pinned per the convention set in #11. Now consistent.actions/checkout@v4v7.0.1(SHA-pinned)actions/setup-node@v4v7.0.0(SHA-pinned)actions/upload-pages-artifact@v3v5.0.0(SHA-pinned)actions/deploy-pages@v4v5.0.0(SHA-pinned)Every SHA was verified against the tag it claims via the GitHub API — a pin that doesn't match its comment is worse than no pin.
validate.ymlmoved to the same checkout/setup-node versions so both workflows stay in lockstep.Pages runner node 20 → 22: node 20 reached EOL in April 2026, and next 16 requires
>=20.9.0.tsconfig.jsonchanges are next 16's automatic migration (jsx: react-jsx, dev types path), applied by the build itself.Supersedes #21, #22, #24, #25, #26.