Skip to content

fix(deps): clear accumulated security advisories and prepare 0.3.1 - #53

Merged
ThePrismSystem merged 6 commits into
mainfrom
chore/renovate-security-updates
Nov 4, 2026
Merged

ThePrismSystem merged 6 commits into
mainfrom
chore/renovate-security-updates

Conversation

@ThePrismSystem

@ThePrismSystem ThePrismSystem commented Nov 4, 2026 •

Copy link
Copy Markdown
Owner

Summary

Applies the five open Renovate security updates and clears everything else CI's Audit and Image Scan jobs now report against main, then adds the 0.3.1 changelog entry so the release can be tagged from the merge commit. Supersedes #48, #49, #50, #51 and #52.

Main last passed CI on 2026-08-07. Advisories published since then mean pnpm audit found 62 and Trivy found 45 HIGH/CRITICAL on this branch's first run, nearly all in transitive tooling.

Changes

  • Updates hono to 4.13.11, @hono/node-server to 2.1.6, zod to 4.6.6 and dompurify to 3.4.17, the runtime packages
  • Updates vite to 8.2.4, vitest and @vitest/coverage-v8 to 4.1.12 (vitest pins coverage-v8 as an exact peer), and jsdom to 30.1.3, which brings undici 8.12
  • Refreshes vulnerable transitive packages within their dependents' ranges: undici 6, fast-uri, shell-quote (critical), seroval, js-yaml, brace-expansion, @fastify/busboy, smol-toml and the @graphql-tools / @graphql-codegen chain (utils 11 to 12). Codegen output is unchanged
  • Builds the beans binary with Go 1.26.10, x/net 0.60.0 and x/text 0.42.0, clearing all 15 HIGH gobinary findings. x/net 0.60.0 requires x/text 0.42.0, so that is the pin written down
  • Ignores two dev-only advisories in pnpm-workspace.yaml, each with its reason: minimatch 10 under ESLint (the fix in 11 removes makeRe, which eslint-plugin-import-x calls) and zod 3 under @codecov/vite-plugin (no patched 3.x; zod 4 drops the one-argument z.record the plugin uses). The server's zod floor goes to ^4.6.6 so the zod ignore cannot hide a vulnerable copy on the runtime path
  • Adds the 0.3.1 CHANGELOG entry, which also covers the unreleased chore(deps): apply pending renovate updates #46 toolchain upgrades
  • Marks bf-65xl and bf-gm8t completed. Both shipped (feat(web): let the project view create a bean #39/feat(web): make the new-bean form a dialog with relation pickers #40 and chore(deps): apply pending renovate updates #46) but their status changes were never committed

Reachability

None of the runtime advisories reached this server as written. The closest was @hono/node-server's serveStatic decoding the path twice, which lets a request skip path-scoped middleware. Here it is registered after every API route and serves only the public web/dist bundle, and secureHeaders applies to every path, so nothing protected sat behind it. The others cover hono's own serveStatic, parseBody() and hono/jsx, zod's length-constrained collections, and DOMPurify's IN_PLACE mode, none of which this code uses. seroval comes in through TanStack Router but is tree-shaken out of the built bundle.

Test Plan

  • Full gate: format, lint, typecheck, test:coverage, knip, spell, codegen:check, check:pins
  • pnpm audit --audit-level moderate passes (2 ignored, as above)
  • docker build plus trivy image --severity HIGH,CRITICAL --ignore-unfixed with .trivyignore: no findings
  • Server integration tests and E2E (60/60) against a beans binary built by the updated scripts/build-beans.sh
  • pnpm install --frozen-lockfile succeeds; lockfile stays at v9.0

715 unit and integration tests pass, with 98%+ coverage on every workspace. The one unmet peer left (@codecov/vite-plugin wants vite 6 or older) predates this change, and so does the MaxListenersExceededWarning in the server's events.test.ts output, which appears the same number of times against main's lockfile.

Review Checklist

  • Tests pass locally
  • No breaking changes (or documented in summary)
  • Documentation updated if needed
  • Error handling considered
  • Security implications reviewed

Folds the five open Renovate security PRs into one lockfile change so
they land together: hono 4.13.11, zod 4.6.6, dompurify 3.4.17, vite
8.2.4 and vitest 4.1.11. @vitest/coverage-v8 moves to 4.1.11 with
vitest, which pins it as an exact peer. A dedupe drops the zod 4.4.3
copy knip and eslint-plugin-react-hooks still held, so no vulnerable
zod stays in the lockfile.

Adds the 0.3.1 changelog entry.
@codecov

codecov Bot commented Nov 4, 2026

Copy link
Copy Markdown

Bundle Report

Changes will increase total bundle size by 896 bytes (0.05%) ⬆️. This is within the configured threshold ✅

Detailed changes
Bundle name Size Change
beans-web-web-esm 832.29kB 896 bytes (0.11%) ⬆️

Affected Assets, Files, and Routes:

view changes for bundle: beans-web-web-esm

Assets Changed:

Asset Name Size Change Total Size Change (%)
assets/analytics-*.js -194 bytes 378.61kB -0.05%
assets/index-*.js -160 bytes 341.61kB -0.05%
assets/beanDetail-*.js 1.25kB 86.17kB 1.47%

@codecov

codecov Bot commented Nov 4, 2026 •

Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ All tests successful. No failed tests found.

📢 Thoughts on this report? Let us know!

pnpm audit reported 62 advisories, nearly all in transitive tooling the
image ships in node_modules. Refreshing each within its dependents'
ranges clears them, along with @hono/node-server 2.1.6, vitest and
coverage-v8 4.1.12, jsdom 30.1.3 (undici 8.12) and the codegen chain
(@graphql-tools/utils 12).

Two dev-only advisories have no fix reachable from their dependents and
are ignored in pnpm-workspace.yaml with the reasoning: minimatch 10 under
ESLint, whose fix in 11 removes the makeRe that eslint-plugin-import-x
calls, and zod 3 under @codecov/vite-plugin, which has no patched 3.x.
The server's zod is floored at ^4.6.6 so the zod ignore cannot hide a
vulnerable copy on the runtime path.
The image scan reported fifteen HIGH findings in the bundled beans
binary: Go stdlib CVEs fixed in 1.26.10, and x/net and x/text CVEs fixed
in 0.60.0 and 0.41.0. x/net 0.60.0 requires x/text 0.42.0, so that is
the pin written down rather than one go get would silently raise. Both
declare go 1.26.0 or lower, so the pinned toolchain is still the one
that builds them.
@ThePrismSystem ThePrismSystem changed the title chore(deps): apply renovate security updates and prepare 0.3.1 fix(deps): clear accumulated security advisories and prepare 0.3.1 Nov 4, 2026
@ThePrismSystem
ThePrismSystem merged commit 3856346 into main Nov 4, 2026
12 checks passed
@ThePrismSystem
ThePrismSystem deleted the chore/renovate-security-updates branch November 4, 2026 23:29
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