Skip to content

chore(deps): clear all 16 advisories — bump undici, drop the unused puppeteer chain - #235

Merged
mastermanas805 merged 1 commit into
mainfrom
chore/bump-undici
Aug 13, 2026
Merged

chore(deps): clear all 16 advisories — bump undici, drop the unused puppeteer chain#235
mastermanas805 merged 1 commit into
mainfrom
chore/bump-undici

Conversation

@mastermanas805

Copy link
Copy Markdown
Member

Why this is urgent rather than housekeeping

scan / osv-scan is a required check on main and has been failing since at least
2026-08-10. Every PR is BLOCKED on it regardless of contents — including #234 (retire the
maintenance banner), which is otherwise 8/9 green. This unblocks the queue.

npm audit: 16 vulnerabilities (2 moderate, 14 high) → 0.

Two independent chains, both dev-only

Neither reaches users — the prod artifact is static HTML/CSS/JS on GitHub Pages, no Node runtime.

1. undici 7.26.0 → 7.29.0 — via jsdom, vitest's DOM environment. Clears 8 advisories:
Set-Cookie SameSite downgrade, shared-cache whitespace bypass, retry-interceptor desync,
degenerate private-cache directives, CRLF via blob body type, Cache-Control whitespace, cookie
attribute injection, keep-alive queue poisoning. Plain npm audit fix, no major bump.

2. @size-limit/preset-app@size-limit/file — clears the other 8.

The preset pulls @size-limit/timeestimopuppeteer-core / extract-zip /
find-chrome-bin / nanoid. estimo is stale upstream, so neither npm audit fix nor bumping
the preset to 13.x clears it — I tried both.

The interesting part: we were carrying a headless browser to measure nothing. The size-limit
config sets "running": false on both entries, which explicitly disables the execution-time
measurement @size-limit/time exists to provide. Only file size was ever checked. So the fix is
removal, not suppression.

The "running": false keys go with it — size-limit rejects the option when the plugin is absent
(Config option running needs @size-limit/time plugin) even when set to false.

Deliberately not suppressed

I did not add these to osv-scanner.toml. Its existing vite/esbuild entries are legitimate —
genuinely unfixable without a major bump, documented, with a lift plan. But suppressing something
removable is how a scanner quietly stops meaning anything, and this one was already the only
thing standing between the repo and a mergeable queue.

Verified

npm audit 0 vulnerabilities
npm exec size-limit (exact CI invocation) js 167.64 kB / 350 kB · css 6.29 kB / 60 kB — unchanged
npm run gate green — 87 test files, 1285 passed, 3 skipped

The size budgets are measured identically before and after; only the plugin providing the
measurement changed.

🤖 Generated with Claude Code

…uppeteer chain

`scan / osv-scan` is a REQUIRED check on main and has been failing since at
least 2026-08-10, so every PR sits BLOCKED regardless of its contents. This
unblocks the queue.

Two independent chains, both dev-only, neither shipped to users (the prod
artifact is static HTML/CSS/JS on GitHub Pages — no Node runtime):

1. undici 7.26.0 → 7.29.0, via jsdom (vitest's DOM environment). Clears 8
   advisories: Set-Cookie SameSite downgrade, shared-cache whitespace bypass,
   retry-interceptor desync, degenerate private-cache directives, CRLF via
   blob body type, Cache-Control whitespace, cookie attribute injection, and
   keep-alive queue poisoning. Plain `npm audit fix`, no major bump.

2. `@size-limit/preset-app` → `@size-limit/file`. The preset pulls
   `@size-limit/time` → estimo → puppeteer-core / extract-zip / find-chrome-bin
   / nanoid — 8 more advisories, and estimo is stale upstream so neither
   `npm audit fix` nor bumping the preset to 13.x clears them.

   We were carrying a headless browser to measure nothing: the size-limit
   config set `"running": false` on BOTH entries, which explicitly disables the
   execution-time measurement that plugin exists for. Only file size was ever
   checked. Swapping to `@size-limit/file` removes the whole chain rather than
   suppressing it.

   The `"running": false` keys are removed with it — size-limit rejects that
   option when the time plugin is absent ("Config option running needs
   @size-limit/time plugin"), even set to false.

`npm audit`: 16 vulnerabilities (2 moderate, 14 high) → **0**.

Deliberately NOT added to osv-scanner.toml. That file's existing vite/esbuild
entries are legitimate — those are genuinely unfixable without a major bump —
but suppressing something removable is how a scanner quietly stops meaning
anything.

Verified: `npm exec size-limit` (the exact CI invocation) still measures both
budgets — index js 167.64 kB / 350 kB, css 6.29 kB / 60 kB, unchanged from
before. `npm run gate` green: 87 test files, 1285 passed, 3 skipped.

🤖 Generated with [Claude Code](https://claude.com/claude-code)
@github-actions

Copy link
Copy Markdown

size-limit report 📦

Path Size
dist/assets/index-GUEcPTYW.js 0 B (-100% 🔽)
dist/assets/index-DhCc6Wh3.css 6.14 KB (0%)
dist/assets/index-fcDMOSgE.js 163.87 KB (+100% 🔺)

@mastermanas805
mastermanas805 merged commit e5ed491 into main Aug 13, 2026
18 of 19 checks passed
@mastermanas805
mastermanas805 deleted the chore/bump-undici branch August 13, 2026 05:56
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant