Skip to content

fix(deps): pin patched follow-redirects, hono, and vite - #392

Merged
elkaix merged 4 commits into
mainfrom
fix/deps-audit-pins
Oct 20, 2026
Merged

elkaix merged 4 commits into
mainfrom
fix/deps-audit-pins

Conversation

@elkaix

@elkaix elkaix commented Oct 20, 2026 •

Copy link
Copy Markdown
Contributor

Requirement or Bug

pnpm audit (the required Security audit check) fails on main and on every open PR because of advisories published 2026-10-20 against follow-redirects (GHSA-q3jh-wrc6-jgq8, GHSA-8r9p-f939-6h3c), hono (GHSA-5r4p-p66f-jhc7) and vite (GHSA-698v-4r3x-3vcv).

Bug Reproduction Steps

  1. Check out main.
  2. Run pnpm audit. It reports the four advisories and exits non-zero.

Root Cause

The lockfile resolves follow-redirects 1.16.0, hono 4.13.8 and vite 8.0.16, which are inside the affected ranges.

Code Changes

  package.json  pnpm.overrides
+   "follow-redirects": ">=1.16.1"
+   "hono": ">=4.13.11"
-   "vite": ">=6.4.3"
+   "vite": ">=8.1.6"
  • The vite minimum moves to 8.1.6. The lockfile resolves exactly 8.1.6, and normal upgrades can still move past 8.1.
  • pnpm-lock.yaml regenerated with pnpm: follow-redirects 1.16.1, hono 4.13.13, vite 8.1.6.
  • The lockfile is a web build input, so apps/pythinker-code/dist-web is restaged with pnpm run build:web.
  • flake.nix pnpmDeps hash refreshed.

No new dependencies: the three packages were already in the tree.

Behavior Changes and Affected Users

Behavior Before After Who relies on the old behavior Escape hatch
Resolved versions (build and dev tooling) follow-redirects 1.16.0, hono 4.13.8, vite 8.0.16 follow-redirects 1.16.1, hono 4.13.13, vite 8.1.6 Nobody n/a

Local checks: pnpm audit exits 0, check-web-assets OK, nix build .#pythinker-code passes. [skip changeset] Users cannot see this change: it moves build and dev tooling to patch releases.

Checklist

  • I have read the CONTRIBUTING document.
  • I have linked a related issue (external PRs: issue must have a maintainer's /approve).
  • I have added tests that prove my feature works.
  • The behavior-change table above is complete, and every removed behavior or flipped default is named in the changeset and either has an escape hatch or was explicitly approved by a maintainer in this PR.
  • Ran gen-changesets skill, or this PR needs no changeset.
  • Ran gen-docs skill, or this PR needs no doc update.

Clear the security audit advisories published 2026-10-20 with root pnpm overrides. vite is capped at 8.1.x to avoid a larger build-tool jump. The lockfile is a web build input, so the web bundle is restaged and the Nix dependency hash is refreshed.
@coderabbitai

coderabbitai Bot commented Oct 20, 2026 •

Copy link
Copy Markdown

Important

Review skipped

Too many files!

This PR contains 393 files, which is 293 over the limit of 100.

To get a review, reduce the PR to 100 files or fewer by splitting it into smaller PRs or changing its base branch.

Upgrade to a paid plan to raise the limit.

Usage-priced reviews support at most 300 files.

⚙️ Run configuration
  • Configuration used: Repository: PyModel/pythinker-code/.coderabbit.yaml
  • Review profile: CHILL
  • Plan: Advanced
  • Run ID: a8754493-5c32-4eaf-b137-38f2846a363b
📥 Commits

Reviewing files that changed from the base of the PR and between 6c4598c and 2b92989.

⛔ Files ignored due to path filters: 3
  • apps/pythinker-code/dist-web/assets/index-B1vM8rCf.js is excluded by !**/assets/index-[0-9a-z_-][0-9a-z_-][0-9a-z_-][0-9a-z_-][0-9a-z_-][0-9a-z_-][0-9a-z_-][0-9a-z_-].js
  • apps/pythinker-code/dist-web/assets/index-Pzl2rM45.js is excluded by !**/assets/index-[0-9a-z_-][0-9a-z_-][0-9a-z_-][0-9a-z_-][0-9a-z_-][0-9a-z_-][0-9a-z_-][0-9a-z_-].js
  • pnpm-lock.yaml is excluded by !**/pnpm-lock.yaml, !**/pnpm-lock.yaml
📒 Files selected for processing: 393
  • apps/pythinker-code/dist-web/.web-bundle-manifest.json
  • apps/pythinker-code/dist-web/assets/CodeBlockNode-Dd0t44TT.js
  • apps/pythinker-code/dist-web/assets/CodeBlockNode-Gx3QMVLZ.js
  • apps/pythinker-code/dist-web/assets/DesignSystemView-BAgPEsSe.js
  • apps/pythinker-code/dist-web/assets/Tooltip-5aoyUpF-.js
  • apps/pythinker-code/dist-web/assets/Tooltip-Bzdkbh8U.js
  • apps/pythinker-code/dist-web/assets/abnfDiagram-VCTEODGH-Bj51gbJQ.js
  • apps/pythinker-code/dist-web/assets/abnfDiagram-VCTEODGH-RI6N4S7j.js
  • apps/pythinker-code/dist-web/assets/angular-html-BVBpGdXr.js
  • apps/pythinker-code/dist-web/assets/angular-html-D2jfyENO.js
  • apps/pythinker-code/dist-web/assets/angular-ts-BfdufMKP.js
  • apps/pythinker-code/dist-web/assets/apl-DWBSSoBH.js
  • apps/pythinker-code/dist-web/assets/arc-BjSQqbzd.js
  • apps/pythinker-code/dist-web/assets/arc-Bv6grr_D.js
  • apps/pythinker-code/dist-web/assets/architecture-7GRP2DOG-BFuQ8XLt.js
  • apps/pythinker-code/dist-web/assets/architecture-7GRP2DOG-D_YkE_7W.js
  • apps/pythinker-code/dist-web/assets/architecture-7GRP2DOG-D_jntaTV.js
  • apps/pythinker-code/dist-web/assets/architecture-7GRP2DOG-f5mgC4dF.js
  • apps/pythinker-code/dist-web/assets/architectureDiagram-5GKGNRK7-B4jxjiBW.js
  • apps/pythinker-code/dist-web/assets/architectureDiagram-5GKGNRK7-CoFmUzu_.js
  • apps/pythinker-code/dist-web/assets/architectureDiagram-5GKGNRK7-DeWB9LB4.js
  • apps/pythinker-code/dist-web/assets/architectureDiagram-5GKGNRK7-p-r3C_ZZ.js
  • apps/pythinker-code/dist-web/assets/astro-3LtMP0Sq.js
  • apps/pythinker-code/dist-web/assets/blade-llJRbbtR.js
  • apps/pythinker-code/dist-web/assets/blockDiagram-I7D4REHJ-CWTOe2BT.js
  • apps/pythinker-code/dist-web/assets/blockDiagram-I7D4REHJ-Cq9KLc7o.js
  • apps/pythinker-code/dist-web/assets/c-Wt1voDr2.js
  • apps/pythinker-code/dist-web/assets/c-sH7mZmtb.js
  • apps/pythinker-code/dist-web/assets/c4Diagram-7LVT6UL2-S3ytiVLi.js
  • apps/pythinker-code/dist-web/assets/c4Diagram-7LVT6UL2-yTRqdo-4.js
  • apps/pythinker-code/dist-web/assets/channel-C2_hsdVy.js
  • apps/pythinker-code/dist-web/assets/channel-Drs0UdXj.js
  • apps/pythinker-code/dist-web/assets/channel-eoGJUmIG.js
  • apps/pythinker-code/dist-web/assets/channel-q_xRul7V.js
  • apps/pythinker-code/dist-web/assets/chapel-DoMyKQo9.js
  • apps/pythinker-code/dist-web/assets/chunk-2E4U76K2-C13TmL8F.js
  • apps/pythinker-code/dist-web/assets/chunk-4HAMMTFA-CF_gNeri.js
  • apps/pythinker-code/dist-web/assets/chunk-4HAMMTFA-DsnHr1Wf.js
  • apps/pythinker-code/dist-web/assets/chunk-75Z2AOVW-CkPsS-_5.js
  • apps/pythinker-code/dist-web/assets/chunk-75Z2AOVW-MW3sk0hE.js
  • apps/pythinker-code/dist-web/assets/chunk-CLGD4ZFX-BKS09PJx.js
  • apps/pythinker-code/dist-web/assets/chunk-DU6HZSFF-CKR6Bk9G.js
  • apps/pythinker-code/dist-web/assets/chunk-DU6HZSFF-CQluFUCe.js
  • apps/pythinker-code/dist-web/assets/chunk-DU6HZSFF-rOfNFUfo.js
  • apps/pythinker-code/dist-web/assets/chunk-F27PBJKO-BinL3eLV.js
  • apps/pythinker-code/dist-web/assets/chunk-F27PBJKO-gwWQ3zL4.js
  • apps/pythinker-code/dist-web/assets/chunk-FOHPRMQF-CdD2_EOh.js
  • apps/pythinker-code/dist-web/assets/chunk-FOHPRMQF-D9JSIFeU.js
  • apps/pythinker-code/dist-web/assets/chunk-GMAD6QVW-BnY2icTU.js
  • apps/pythinker-code/dist-web/assets/chunk-GMAD6QVW-ChoQtk4g.js
  • apps/pythinker-code/dist-web/assets/chunk-GVQU2GXP-B-PuVhe0.js
  • apps/pythinker-code/dist-web/assets/chunk-GVQU2GXP-DP6ao_b2.js
  • apps/pythinker-code/dist-web/assets/chunk-IMKFNOWR-B3rsJEpv.js
  • apps/pythinker-code/dist-web/assets/chunk-IMKFNOWR-CYl2peMo.js
  • apps/pythinker-code/dist-web/assets/chunk-L3NEJ4N5-HaoP_cNN.js
  • apps/pythinker-code/dist-web/assets/chunk-LNGE3PJU-DNNNwF8Y.js
  • apps/pythinker-code/dist-web/assets/chunk-OSK3NFVY-CKdbAZg-.js
  • apps/pythinker-code/dist-web/assets/chunk-P2QGCYS3-U0tdZhxO.js
  • apps/pythinker-code/dist-web/assets/chunk-P2QGCYS3-dHvfyrzQ.js
  • apps/pythinker-code/dist-web/assets/chunk-POPQ4Y6H-BcjlJTYE.js
  • apps/pythinker-code/dist-web/assets/chunk-POPQ4Y6H-BkmK8ODi.js
  • apps/pythinker-code/dist-web/assets/chunk-PWAF6VOD-C9DqV3u2.js
  • apps/pythinker-code/dist-web/assets/chunk-PWAF6VOD-hqfkyfhT.js
  • apps/pythinker-code/dist-web/assets/chunk-SHT3W25Y-BLj_AECb.js
  • apps/pythinker-code/dist-web/assets/chunk-SHT3W25Y-BXLh3cbf.js
  • apps/pythinker-code/dist-web/assets/chunk-SHT3W25Y-DEz5bNf0.js
  • apps/pythinker-code/dist-web/assets/chunk-SHT3W25Y-cKKhwVjN.js
  • apps/pythinker-code/dist-web/assets/chunk-SVP7TREG-BsbHZhq7.js
  • apps/pythinker-code/dist-web/assets/chunk-SVP7TREG-CRZy5uxQ.js
  • apps/pythinker-code/dist-web/assets/chunk-TICWLB2K-BoVZhASY.js
  • apps/pythinker-code/dist-web/assets/chunk-TICWLB2K-CrVZ689Y.js
  • apps/pythinker-code/dist-web/assets/chunk-TLUHSLCS-CXntED1L.js
  • apps/pythinker-code/dist-web/assets/chunk-TLUHSLCS-Cp8KyR96.js
  • apps/pythinker-code/dist-web/assets/chunk-XXDRQBXY-BuE3VzE_.js
  • apps/pythinker-code/dist-web/assets/chunk-XXDRQBXY-BuPL8Oku.js
  • apps/pythinker-code/dist-web/assets/classDiagram-ZZMXUADV-Bl7JzMjX.js
  • apps/pythinker-code/dist-web/assets/classDiagram-ZZMXUADV-DWf-n-Lo.js
  • apps/pythinker-code/dist-web/assets/classDiagram-ZZMXUADV-NugQa2qm.js
  • apps/pythinker-code/dist-web/assets/classDiagram-ZZMXUADV-lpXjUISh.js
  • apps/pythinker-code/dist-web/assets/classDiagram-v2-VYDZK3BY-Bl7JzMjX.js
  • apps/pythinker-code/dist-web/assets/classDiagram-v2-VYDZK3BY-DWf-n-Lo.js
  • apps/pythinker-code/dist-web/assets/classDiagram-v2-VYDZK3BY-NugQa2qm.js
  • apps/pythinker-code/dist-web/assets/classDiagram-v2-VYDZK3BY-lpXjUISh.js
  • apps/pythinker-code/dist-web/assets/cobol-x_HIyl2P.js
  • apps/pythinker-code/dist-web/assets/coffee-CThvmt4R.js
  • apps/pythinker-code/dist-web/assets/cose-bilkent-JH36ORCC-B9CIRwzk.js
  • apps/pythinker-code/dist-web/assets/cose-bilkent-JH36ORCC-By5TD5r7.js
  • apps/pythinker-code/dist-web/assets/cose-bilkent-JH36ORCC-Cc_gtNtR.js
  • apps/pythinker-code/dist-web/assets/cose-bilkent-JH36ORCC-DI68EbLH.js
  • apps/pythinker-code/dist-web/assets/cpp-DUy4aua4.js
  • apps/pythinker-code/dist-web/assets/cpp-OW3-dqfU.js
  • apps/pythinker-code/dist-web/assets/crystal-DNu_sX0G.js
  • apps/pythinker-code/dist-web/assets/css-DJp_X0uY.js
  • apps/pythinker-code/dist-web/assets/css-DUCpJyeR.js
  • apps/pythinker-code/dist-web/assets/css.worker-D6s3CQiP.js
  • apps/pythinker-code/dist-web/assets/cssMode-D5Fysbzc.js
  • apps/pythinker-code/dist-web/assets/cynefin-OW5HDTMX-CFa17g1E.js
  • apps/pythinker-code/dist-web/assets/cynefin-OW5HDTMX-CVPxUP3o.js
  • apps/pythinker-code/dist-web/assets/cynefin-OW5HDTMX-CaeZhA9G.js
  • apps/pythinker-code/dist-web/assets/cynefin-OW5HDTMX-DrAoXVPc.js
  • apps/pythinker-code/dist-web/assets/cynefinDiagram-5FMLGOSQ-DGMrBlEJ.js
  • apps/pythinker-code/dist-web/assets/cynefinDiagram-5FMLGOSQ-DRYoJNl8.js
  • apps/pythinker-code/dist-web/assets/cytoscape.esm-CQxt7CaE.js
  • apps/pythinker-code/dist-web/assets/cytoscape.esm-Dc0DhzmI.js
  • apps/pythinker-code/dist-web/assets/cytoscape.esm-DtsSOjvk.js
  • apps/pythinker-code/dist-web/assets/cytoscape.esm-dytuJj4e.js
  • apps/pythinker-code/dist-web/assets/dagre-CNOzUhxk.js
  • apps/pythinker-code/dist-web/assets/dagre-DfBnbeEt.js
  • apps/pythinker-code/dist-web/assets/dagre-GXQ25YYZ-CmqyoKMx.js
  • apps/pythinker-code/dist-web/assets/dagre-GXQ25YYZ-Fbk5pMhm.js
  • apps/pythinker-code/dist-web/assets/diagram-S7CK7UJ4-6WpiShIL.js
  • apps/pythinker-code/dist-web/assets/diagram-S7CK7UJ4-BgXKGCYC.js
  • apps/pythinker-code/dist-web/assets/diagram-UQ7AKVKN-BZVMdjC_.js
  • apps/pythinker-code/dist-web/assets/diagram-UQ7AKVKN-C3MExOxQ.js
  • apps/pythinker-code/dist-web/assets/diagram-VSXAHHWV-CLmkD0qF.js
  • apps/pythinker-code/dist-web/assets/diagram-VSXAHHWV-CUbX0FkO.js
  • apps/pythinker-code/dist-web/assets/diagram-VX7I27RA-7h1TZE9k.js
  • apps/pythinker-code/dist-web/assets/diagram-VX7I27RA-FtfwxeBr.js
  • apps/pythinker-code/dist-web/assets/diagram-Z3DM3KII-Bhhe50ih.js
  • apps/pythinker-code/dist-web/assets/diagram-Z3DM3KII-LoWgK2nf.js
  • apps/pythinker-code/dist-web/assets/dist-6bgIZg2B.js
  • apps/pythinker-code/dist-web/assets/dist-BFGETQ8_.js
  • apps/pythinker-code/dist-web/assets/dist-BW7xySoR.js
  • apps/pythinker-code/dist-web/assets/dist-CfQHzPiu.js
  • apps/pythinker-code/dist-web/assets/dist-D9sYb5Oa.js
  • apps/pythinker-code/dist-web/assets/dist-DXDod8J6.js
  • apps/pythinker-code/dist-web/assets/dist-Hmm53X0p.js
  • apps/pythinker-code/dist-web/assets/dist-tn7yMyXj.js
  • apps/pythinker-code/dist-web/assets/ebnfDiagram-PWID7BFC-BW-nDYJV.js
  • apps/pythinker-code/dist-web/assets/ebnfDiagram-PWID7BFC-CL-9BJhQ.js
  • apps/pythinker-code/dist-web/assets/edge-ozw5tpLl.js
  • apps/pythinker-code/dist-web/assets/editor.api2-OGP5z-MP.js
  • apps/pythinker-code/dist-web/assets/editor.main-DA7Mpuky.js
  • apps/pythinker-code/dist-web/assets/editor.worker-B9tos8Rw.js
  • apps/pythinker-code/dist-web/assets/editor.worker-Cs8mLnor.js
  • apps/pythinker-code/dist-web/assets/editor.worker-DBDBTILD.js
  • apps/pythinker-code/dist-web/assets/editor.worker-DEg3x6iH.js
  • apps/pythinker-code/dist-web/assets/elixir-VhA6FeZt.js
  • apps/pythinker-code/dist-web/assets/elm-dREJmIFz.js
  • apps/pythinker-code/dist-web/assets/erDiagram-RLTQ6QDP-B7rs1EjE.js
  • apps/pythinker-code/dist-web/assets/erDiagram-RLTQ6QDP-CMeVX9er.js
  • apps/pythinker-code/dist-web/assets/erb-C63djbSH.js
  • apps/pythinker-code/dist-web/assets/eventmodeling-NTZA5JFV-B1CPh3nL.js
  • apps/pythinker-code/dist-web/assets/eventmodeling-NTZA5JFV-B43X0APo.js
  • apps/pythinker-code/dist-web/assets/eventmodeling-NTZA5JFV-CsYIGy9X.js
  • apps/pythinker-code/dist-web/assets/eventmodeling-NTZA5JFV-pT9wxxSo.js
  • apps/pythinker-code/dist-web/assets/floating-ui.dom-Bro65ANL.js
  • apps/pythinker-code/dist-web/assets/floating-ui.dom-DpWEmocp.js
  • apps/pythinker-code/dist-web/assets/flowDiagram-HODETNUW-C8chYpFN.js
  • apps/pythinker-code/dist-web/assets/flowDiagram-HODETNUW-Ckz92iy1.js
  • apps/pythinker-code/dist-web/assets/flowDiagram-HODETNUW-DMKIW_Ji.js
  • apps/pythinker-code/dist-web/assets/flowDiagram-HODETNUW-DkFwUHEm.js
  • apps/pythinker-code/dist-web/assets/freemarker2-BOr5kFxa.js
  • apps/pythinker-code/dist-web/assets/ganttDiagram-EL5Y4UJY-CILvJ6HY.js
  • apps/pythinker-code/dist-web/assets/ganttDiagram-EL5Y4UJY-DgoktIpa.js
  • apps/pythinker-code/dist-web/assets/ganttDiagram-EL5Y4UJY-Do0Uqjo0.js
  • apps/pythinker-code/dist-web/assets/git-rebase-B44mJPta.js
  • apps/pythinker-code/dist-web/assets/gitGraph-4MIJSDKK-BkZak-DS.js
  • apps/pythinker-code/dist-web/assets/gitGraph-4MIJSDKK-DiuV6voC.js
  • apps/pythinker-code/dist-web/assets/gitGraph-4MIJSDKK-DnzqjUZ8.js
  • apps/pythinker-code/dist-web/assets/gitGraph-4MIJSDKK-Kg6Ije_r.js
  • apps/pythinker-code/dist-web/assets/gitGraphDiagram-WWUBYQGX-BwxqKPLl.js
  • apps/pythinker-code/dist-web/assets/gitGraphDiagram-WWUBYQGX-omJUM9zC.js
  • apps/pythinker-code/dist-web/assets/glimmer-js-vH_gHG0-.js
  • apps/pythinker-code/dist-web/assets/glimmer-ts--abOzSAQ.js
  • apps/pythinker-code/dist-web/assets/glsl-DC2m4Ulq.js
  • apps/pythinker-code/dist-web/assets/glsl-Dv5r7kPw.js
  • apps/pythinker-code/dist-web/assets/graphlib-DS17s2tU.js
  • apps/pythinker-code/dist-web/assets/graphql-CB4jsw2E.js
  • apps/pythinker-code/dist-web/assets/graphql-DSWT5Arm.js
  • apps/pythinker-code/dist-web/assets/hack-BqvkyHNm.js
  • apps/pythinker-code/dist-web/assets/haml-7jyMtF5K.js
  • apps/pythinker-code/dist-web/assets/haml-zE6W3STP.js
  • apps/pythinker-code/dist-web/assets/handlebars-CzBR2SDs.js
  • apps/pythinker-code/dist-web/assets/handlebars-z2_Bbel0.js
  • apps/pythinker-code/dist-web/assets/html-BpjuBgLo.js
  • apps/pythinker-code/dist-web/assets/html-C8UlPnhE.js
  • apps/pythinker-code/dist-web/assets/html-CooeEnvJ.js
  • apps/pythinker-code/dist-web/assets/html-derivative-CY6NRz-J.js
  • apps/pythinker-code/dist-web/assets/html.worker-CSVeGFC0.js
  • apps/pythinker-code/dist-web/assets/htmlMode-DllSt5x-.js
  • apps/pythinker-code/dist-web/assets/http-Cyd7bS_S.js
  • apps/pythinker-code/dist-web/assets/hurl-CWPsiEpf.js
  • apps/pythinker-code/dist-web/assets/index10-BEf1BvLY.js
  • apps/pythinker-code/dist-web/assets/index10-CsQMiJjJ.js
  • apps/pythinker-code/dist-web/assets/index11-C8Kca8rQ.js
  • apps/pythinker-code/dist-web/assets/index11-Cgl-muL9.js
  • apps/pythinker-code/dist-web/assets/index3-D5701YzC.js
  • apps/pythinker-code/dist-web/assets/index3-tO9M8mPT.js
  • apps/pythinker-code/dist-web/assets/index4-D5SzZYzP.js
  • apps/pythinker-code/dist-web/assets/index4-H86NcwRu.js
  • apps/pythinker-code/dist-web/assets/index5-CkL6EfGK.js
  • apps/pythinker-code/dist-web/assets/index5-wNYpvZgl.js
  • apps/pythinker-code/dist-web/assets/index6-BpYEIP9L.js
  • apps/pythinker-code/dist-web/assets/index6-D_mcnPI-.js
  • apps/pythinker-code/dist-web/assets/index7-BGzZom66.js
  • apps/pythinker-code/dist-web/assets/index7-DAq9XEZe.js
  • apps/pythinker-code/dist-web/assets/index8-DmGwkFxY.js
  • apps/pythinker-code/dist-web/assets/index8-p7WgF67D.js
  • apps/pythinker-code/dist-web/assets/index9-BRFxEEs0.js
  • apps/pythinker-code/dist-web/assets/index9-HN3WEKYN.js
  • apps/pythinker-code/dist-web/assets/info-A6RAGUB7-8ws_8-cK.js
  • apps/pythinker-code/dist-web/assets/info-A6RAGUB7-B4_QYJL9.js
  • apps/pythinker-code/dist-web/assets/info-A6RAGUB7-CsUHndYq.js
  • apps/pythinker-code/dist-web/assets/info-A6RAGUB7-D-Rg6JUN.js
  • apps/pythinker-code/dist-web/assets/infoDiagram-27XIBGKW-Cz50cuwY.js
  • apps/pythinker-code/dist-web/assets/infoDiagram-27XIBGKW-DhSV0bFh.js
  • apps/pythinker-code/dist-web/assets/ishikawaDiagram-5VMMS53U-BI76KcuZ.js
  • apps/pythinker-code/dist-web/assets/ishikawaDiagram-5VMMS53U-CYsVeIuE.js
  • apps/pythinker-code/dist-web/assets/java-CGc3VwQr.js
  • apps/pythinker-code/dist-web/assets/java-CnyMQgUo.js
  • apps/pythinker-code/dist-web/assets/javascript-CUt1pgmJ.js
  • apps/pythinker-code/dist-web/assets/javascript-ZpjycO38.js
  • apps/pythinker-code/dist-web/assets/javascript-gG8pbINO.js
  • apps/pythinker-code/dist-web/assets/jinja-CD-Z-FLd.js
  • apps/pythinker-code/dist-web/assets/jison-imPNup1l.js
  • apps/pythinker-code/dist-web/assets/journeyDiagram-3NMN7TZE-DyXg3_FH.js
  • apps/pythinker-code/dist-web/assets/journeyDiagram-3NMN7TZE-v7OXWII5.js
  • apps/pythinker-code/dist-web/assets/json-Bg9ijW3F.js
  • apps/pythinker-code/dist-web/assets/json-DEOrBxYm.js
  • apps/pythinker-code/dist-web/assets/json.worker-D_wH1GAi.js
  • apps/pythinker-code/dist-web/assets/json.worker-ulnR8HPd.js
  • apps/pythinker-code/dist-web/assets/jsonMode-7THjOo6t.js
  • apps/pythinker-code/dist-web/assets/jsx-CY6oMTks.js
  • apps/pythinker-code/dist-web/assets/jsx-DX5OHa_S.js
  • apps/pythinker-code/dist-web/assets/julia-Dz2liUZ3.js
  • apps/pythinker-code/dist-web/assets/just-DirDInl1.js
  • apps/pythinker-code/dist-web/assets/kanban-definition-UXKFOSKX-C-HBsCCI.js
  • apps/pythinker-code/dist-web/assets/kanban-definition-UXKFOSKX-DC0f-h7k.js
  • apps/pythinker-code/dist-web/assets/latex--nf9j2U0.js
  • apps/pythinker-code/dist-web/assets/line-CWmZkD4P.js
  • apps/pythinker-code/dist-web/assets/line-DiEiz5ve.js
  • apps/pythinker-code/dist-web/assets/linear-6cUdh5TY.js
  • apps/pythinker-code/dist-web/assets/linear-B7l8qgEw.js
  • apps/pythinker-code/dist-web/assets/liquid-CZzrE8C1.js
  • apps/pythinker-code/dist-web/assets/liquid-CvXMrjlQ.js
  • apps/pythinker-code/dist-web/assets/lspLanguageFeatures-LIXx9DgQ.js
  • apps/pythinker-code/dist-web/assets/lua-BjLEUjKY.js
  • apps/pythinker-code/dist-web/assets/lua-DvXL3tHJ.js
  • apps/pythinker-code/dist-web/assets/marko-DvhNOisQ.js
  • apps/pythinker-code/dist-web/assets/mdc-BPenxvst.js
  • apps/pythinker-code/dist-web/assets/mdx-BpaWGNGl.js
  • apps/pythinker-code/dist-web/assets/mermaid-parser.core-CHfO7_QP.js
  • apps/pythinker-code/dist-web/assets/mermaid-parser.core-DszXsz3i.js
  • apps/pythinker-code/dist-web/assets/mermaid.core-CL4kgY7H.js
  • apps/pythinker-code/dist-web/assets/mermaid.core-LwcJ-6Gn.js
  • apps/pythinker-code/dist-web/assets/mermaidParser.worker-WZ32ZGrB.js
  • apps/pythinker-code/dist-web/assets/mindmap-definition-YA3MSWOX-CsF8YAU-.js
  • apps/pythinker-code/dist-web/assets/mindmap-definition-YA3MSWOX-D8gz6pTR.js
  • apps/pythinker-code/dist-web/assets/monaco.contribution-Bf41IVDZ.js
  • apps/pythinker-code/dist-web/assets/monaco.contribution-SbrCD09m.js
  • apps/pythinker-code/dist-web/assets/nginx-Bhc82uuv.js
  • apps/pythinker-code/dist-web/assets/nim-DXTVBFnF.js
  • apps/pythinker-code/dist-web/assets/org-DVAadLTL.js
  • apps/pythinker-code/dist-web/assets/packet-AYTQ26CC-BKYEdiKl.js
  • apps/pythinker-code/dist-web/assets/packet-AYTQ26CC-CB9JBt_3.js
  • apps/pythinker-code/dist-web/assets/packet-AYTQ26CC-CTuDVT1l.js
  • apps/pythinker-code/dist-web/assets/packet-AYTQ26CC-DKZpbK5f.js
  • apps/pythinker-code/dist-web/assets/pegDiagram-XKGWAZYB-DBuVe-9H.js
  • apps/pythinker-code/dist-web/assets/pegDiagram-XKGWAZYB-egpXcL1t.js
  • apps/pythinker-code/dist-web/assets/perl-C7veXV9z.js
  • apps/pythinker-code/dist-web/assets/php-BRiuMnnr.js
  • apps/pythinker-code/dist-web/assets/pie-WAS4IAKB-1CkOyEq0.js
  • apps/pythinker-code/dist-web/assets/pie-WAS4IAKB-BC4927wn.js
  • apps/pythinker-code/dist-web/assets/pie-WAS4IAKB-CGoTGrF2.js
  • apps/pythinker-code/dist-web/assets/pie-WAS4IAKB-hKIvAklj.js
  • apps/pythinker-code/dist-web/assets/pieDiagram-E7YTZNPT-BPOuA2xj.js
  • apps/pythinker-code/dist-web/assets/pieDiagram-E7YTZNPT-BescHEQe.js
  • apps/pythinker-code/dist-web/assets/preload-helper-Czpn1I53.js
  • apps/pythinker-code/dist-web/assets/preload-helper-zJ_50EbN.js
  • apps/pythinker-code/dist-web/assets/pug-C5hz5LQ7.js
  • apps/pythinker-code/dist-web/assets/purify.es-DaBa283-.js
  • apps/pythinker-code/dist-web/assets/python-CpWsX7wV.js
  • apps/pythinker-code/dist-web/assets/qml-BdUV3aTS.js
  • apps/pythinker-code/dist-web/assets/quadrantDiagram-AXDQQJYC-DENjYxO9.js
  • apps/pythinker-code/dist-web/assets/quadrantDiagram-AXDQQJYC-Dr4C3d2i.js
  • apps/pythinker-code/dist-web/assets/r-DUSWWpJH.js
  • apps/pythinker-code/dist-web/assets/r-S-Of-kyo.js
  • apps/pythinker-code/dist-web/assets/radar-RG4KPBEZ-BdC9_TaZ.js
  • apps/pythinker-code/dist-web/assets/radar-RG4KPBEZ-D2melVga.js
  • apps/pythinker-code/dist-web/assets/radar-RG4KPBEZ-e9apK7rT.js
  • apps/pythinker-code/dist-web/assets/radar-RG4KPBEZ-znNmLflQ.js
  • apps/pythinker-code/dist-web/assets/railroad-74A4TZTK-B2H0d1tH.js
  • apps/pythinker-code/dist-web/assets/railroad-74A4TZTK-B4mnaNAW.js
  • apps/pythinker-code/dist-web/assets/railroad-74A4TZTK-CSTSDMLI.js
  • apps/pythinker-code/dist-web/assets/railroad-74A4TZTK-Cy80Wfst.js
  • apps/pythinker-code/dist-web/assets/railroad-abnf-HS5TGJTU-Bb4B2Hkf.js
  • apps/pythinker-code/dist-web/assets/railroad-abnf-HS5TGJTU-CIacdY7R.js
  • apps/pythinker-code/dist-web/assets/railroad-abnf-HS5TGJTU-CfsGG-fR.js
  • apps/pythinker-code/dist-web/assets/railroad-abnf-HS5TGJTU-nTLCETGn.js
  • apps/pythinker-code/dist-web/assets/railroad-ebnf-LZEXJU2U-BGZ5cckd.js
  • apps/pythinker-code/dist-web/assets/railroad-ebnf-LZEXJU2U-BmUL54vf.js
  • apps/pythinker-code/dist-web/assets/railroad-ebnf-LZEXJU2U-CZSvlP3B.js
  • apps/pythinker-code/dist-web/assets/railroad-ebnf-LZEXJU2U-N99lt1dl.js
  • apps/pythinker-code/dist-web/assets/railroad-peg-WCYAUIDC-BNoPIdtK.js
  • apps/pythinker-code/dist-web/assets/railroad-peg-WCYAUIDC-DFQgBXFU.js
  • apps/pythinker-code/dist-web/assets/railroad-peg-WCYAUIDC-DFg0WXBb.js
  • apps/pythinker-code/dist-web/assets/railroad-peg-WCYAUIDC-DZ9DPrz2.js
  • apps/pythinker-code/dist-web/assets/railroadDiagram-O6MQD6OU-DqxXUjIf.js
  • apps/pythinker-code/dist-web/assets/railroadDiagram-O6MQD6OU-vPrZBrB0.js
  • apps/pythinker-code/dist-web/assets/razor-DRL52XO2.js
  • apps/pythinker-code/dist-web/assets/razor-_hL6pW3d.js
  • apps/pythinker-code/dist-web/assets/regexp-BtfBZLeD.js
  • apps/pythinker-code/dist-web/assets/regexp-Omp9DhTb.js
  • apps/pythinker-code/dist-web/assets/requirementDiagram-BXWQKSXE-BJKueo1t.js
  • apps/pythinker-code/dist-web/assets/requirementDiagram-BXWQKSXE-CTEZwOfx.js
  • apps/pythinker-code/dist-web/assets/rolldown-runtime-QTnfLwEv.js
  • apps/pythinker-code/dist-web/assets/rst-BCbgttAJ.js
  • apps/pythinker-code/dist-web/assets/ruby-wJWzEYLc.js
  • apps/pythinker-code/dist-web/assets/safeRaf-BDp3SJMs.js
  • apps/pythinker-code/dist-web/assets/sankeyDiagram-P5KCCOFB-Cdj6KX9l.js
  • apps/pythinker-code/dist-web/assets/sankeyDiagram-P5KCCOFB-Cm7cZS8f.js
  • apps/pythinker-code/dist-web/assets/sas-DrLaYOK_.js
  • apps/pythinker-code/dist-web/assets/scss-DI3EtvnV.js
  • apps/pythinker-code/dist-web/assets/scss-DdSxiZKl.js
  • apps/pythinker-code/dist-web/assets/sequenceDiagram-WJ2MYXX4-BH5UdiaM.js
  • apps/pythinker-code/dist-web/assets/sequenceDiagram-WJ2MYXX4-Dm_h5x-z.js
  • apps/pythinker-code/dist-web/assets/shellscript-Dvesa9PY.js
  • apps/pythinker-code/dist-web/assets/shellscript-DwcUjJBL.js
  • apps/pythinker-code/dist-web/assets/shellsession-CPZkydE6.js
  • apps/pythinker-code/dist-web/assets/soy-Br5FhD7c.js
  • apps/pythinker-code/dist-web/assets/sql-DNssxck8.js
  • apps/pythinker-code/dist-web/assets/sql-DctZOuxo.js
  • apps/pythinker-code/dist-web/assets/src-CEzDLKmc.js
  • apps/pythinker-code/dist-web/assets/src-_wZywoZs.js
  • apps/pythinker-code/dist-web/assets/src-sQ4B6VcI.js
  • apps/pythinker-code/dist-web/assets/stata-DXn1tqOr.js
  • apps/pythinker-code/dist-web/assets/stateDiagram-D77RDMKH-CUEPo_bW.js
  • apps/pythinker-code/dist-web/assets/stateDiagram-D77RDMKH-ofuY4Gkf.js
  • apps/pythinker-code/dist-web/assets/stateDiagram-v2-MP3YSRHH-9OwRjTs6.js
  • apps/pythinker-code/dist-web/assets/stateDiagram-v2-MP3YSRHH-BVlbJsMn.js
  • apps/pythinker-code/dist-web/assets/stateDiagram-v2-MP3YSRHH-CkUESEpA.js
  • apps/pythinker-code/dist-web/assets/stateDiagram-v2-MP3YSRHH-Cog7182z.js
  • apps/pythinker-code/dist-web/assets/surrealql-BQeetSul.js
  • apps/pythinker-code/dist-web/assets/svelte-DOdLCIlh.js
  • apps/pythinker-code/dist-web/assets/swimlanes-42K2YHIH-B3pJ-57f.js
  • apps/pythinker-code/dist-web/assets/swimlanes-42K2YHIH-BhUmaIER.js
  • apps/pythinker-code/dist-web/assets/swimlanes-42K2YHIH-CaxJRiuh.js
  • apps/pythinker-code/dist-web/assets/swimlanes-42K2YHIH-mWNZVrwy.js
  • apps/pythinker-code/dist-web/assets/swimlanesDiagram-VR7AAH4N-B-P7N0xY.js
  • apps/pythinker-code/dist-web/assets/swimlanesDiagram-VR7AAH4N-BAz9o-B8.js
  • apps/pythinker-code/dist-web/assets/swimlanesDiagram-VR7AAH4N-CbcBlRJU.js
  • apps/pythinker-code/dist-web/assets/swimlanesDiagram-VR7AAH4N-EPuBQ7dT.js
  • apps/pythinker-code/dist-web/assets/templ-CIwIngms.js
  • apps/pythinker-code/dist-web/assets/tex-C-omBgW9.js
  • apps/pythinker-code/dist-web/assets/tex-DTNJHsQ-.js
  • apps/pythinker-code/dist-web/assets/timeline-definition-24CTP7MA-B5JapGyL.js
  • apps/pythinker-code/dist-web/assets/timeline-definition-24CTP7MA-CNskyAKT.js
  • apps/pythinker-code/dist-web/assets/treeView-Q6P3EWNA-BWIPDCZv.js
  • apps/pythinker-code/dist-web/assets/treeView-Q6P3EWNA-C3hpo7qx.js
  • apps/pythinker-code/dist-web/assets/treeView-Q6P3EWNA-CCOQsdrE.js
  • apps/pythinker-code/dist-web/assets/treeView-Q6P3EWNA-IT4ELC2L.js
  • apps/pythinker-code/dist-web/assets/treemap-WGGIJYW6-B5J2X5bV.js
  • apps/pythinker-code/dist-web/assets/treemap-WGGIJYW6-BZ8aoWIt.js
  • apps/pythinker-code/dist-web/assets/treemap-WGGIJYW6-BZH3CUA5.js
  • apps/pythinker-code/dist-web/assets/treemap-WGGIJYW6-BcfuZ8Jf.js
  • apps/pythinker-code/dist-web/assets/ts-tags-BMVY4q-l.js
  • apps/pythinker-code/dist-web/assets/ts.worker-CV4Qyelf.js
  • apps/pythinker-code/dist-web/assets/tsMode-_1Vc11g0.js
  • apps/pythinker-code/dist-web/assets/tsx-5Eka4NBX.js
  • apps/pythinker-code/dist-web/assets/tsx-CI52Akdx.js
  • apps/pythinker-code/dist-web/assets/twig-yYWGVzEl.js
  • apps/pythinker-code/dist-web/assets/typescript-BPdqinQO.js
  • apps/pythinker-code/dist-web/assets/typescript-BX0vFCqm.js
  • apps/pythinker-code/dist-web/assets/typescript-DOu2WMV5.js
  • apps/pythinker-code/dist-web/assets/typst-G1h3H4Ji.js
  • apps/pythinker-code/dist-web/assets/vennDiagram-4TSXK5OY-CqXiBJcF.js
  • apps/pythinker-code/dist-web/assets/vennDiagram-4TSXK5OY-DHJL0-CT.js
  • apps/pythinker-code/dist-web/assets/vue-CivsmNX0.js
  • apps/pythinker-code/dist-web/assets/vue-html-BeluIYX0.js
  • apps/pythinker-code/dist-web/assets/vue-vine-DGUAbOCX.js
  • apps/pythinker-code/dist-web/assets/vue.runtime.esm-bundler-CfVMpQsG.js
  • apps/pythinker-code/dist-web/assets/vue.runtime.esm-bundler-CmP67YOP.js
  • apps/pythinker-code/dist-web/assets/vue.runtime.esm-bundler-D2gdn61G.js
  • apps/pythinker-code/dist-web/assets/wardley-WFR3VGLG-DHRdKM61.js
  • apps/pythinker-code/dist-web/assets/wardley-WFR3VGLG-DglLSptq.js
  • apps/pythinker-code/dist-web/assets/wardley-WFR3VGLG-KeD1fAY7.js
  • apps/pythinker-code/dist-web/assets/wardley-WFR3VGLG-M4SNYgeF.js
  • apps/pythinker-code/dist-web/assets/wardleyDiagram-VM6X3IG4-BOhD6CkH.js
  • apps/pythinker-code/dist-web/assets/wardleyDiagram-VM6X3IG4-CATmCVi7.js
  • apps/pythinker-code/dist-web/assets/workers-Dlh03xFx.js
  • apps/pythinker-code/dist-web/assets/xml-0qyxXEXs.js
  • apps/pythinker-code/dist-web/assets/xml-DIqSwXR3.js
  • apps/pythinker-code/dist-web/assets/xml-dTpFUmlQ.js
  • apps/pythinker-code/dist-web/assets/xsl-Ct_-YIAy.js
  • apps/pythinker-code/dist-web/assets/xychartDiagram-S5SC5T6Z-CcxXCpb0.js
  • apps/pythinker-code/dist-web/assets/xychartDiagram-S5SC5T6Z-Ddw84LZE.js
  • apps/pythinker-code/dist-web/assets/yaml-Btl2ivEW.js
  • apps/pythinker-code/dist-web/assets/yaml-DTtCYNlS.js
  • apps/pythinker-code/dist-web/assets/yaml-DhLkLudt.js
  • apps/pythinker-code/dist-web/index.html
  • flake.nix
  • package.json

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

  • Autofix · Keep fixing CodeRabbit findings and required CI, and resolving merge conflicts

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@pkg-pr-new

pkg-pr-new Bot commented Oct 20, 2026 •

Copy link
Copy Markdown
pnpm dlx https://pkg.pr.new/@pymodel/pythinker-code@2b92989
npx https://pkg.pr.new/@pymodel/pythinker-code@2b92989

commit: 2b92989

A minimum of 8.1.6 keeps the advisory fix and lets normal upgrades move past 8.1. The lockfile still resolves 8.1.6.
The parser joined every incoming chunk onto the whole buffer, so a 65 MB request copied tens of gigabytes and the oversized-request test timed out on slower CI runners. Chunks now wait in a list until the pending bulk string can complete, then join once.
@elkaix elkaix changed the title fix(deps): pin patched follow-redirects, hono, and vite fix: pin patched dependencies and buffer large minidb requests linearly Oct 20, 2026
@elkaix elkaix changed the title fix: pin patched dependencies and buffer large minidb requests linearly fix(deps): pin patched follow-redirects, hono, and vite Oct 20, 2026
@elkaix
elkaix merged commit 3769e89 into main Oct 20, 2026
26 checks passed
@elkaix
elkaix deleted the fix/deps-audit-pins branch October 20, 2026 21:46
elkaix added a commit that referenced this pull request Oct 20, 2026
## Requirement or Bug

`test-minidb` times out on slower CI runners in `RESP: an oversized
request gets -ERR and the connection recovers` (20 s, 0 bytes back). It
failed twice on #392, which does not touch minidb.

## Bug Reproduction Steps

1. Start the minidb RESP server.
2. Send one `SET` whose bulk value is 65 MB (over the 64 MB request
cap), then `PING`.
3. The `-ERR ... too large` reply takes about 2.4 s on an M5 Max and
more than 20 s on a loaded CI runner.

## Root Cause

`RespParser.feed` joined each incoming socket chunk onto the whole
buffered request (`Buffer.concat([this.buf, chunk])`). A 65 MB request
arrives in about a thousand chunks, so the parser copied tens of
gigabytes before it reached the cap. This is a fix at the root, not a
timeout increase.

## Code Changes

```diff
  RespParser.feed(chunk)
-   buf = concat(buf, chunk)            every chunk
+   pending.push(chunk); size += chunk.length
+   size < need -> return               bulk string still incomplete
+   buf = concat(buf, ...pending)       once
  RespParser.tryParse()
+   bulk string incomplete -> need = bytes required
```

The oversized-request check and its buffer reset do not change; they now
count `size`, which includes the pending chunks.

## Behavior Changes and Affected Users

| Behavior | Before | After | Who relies on the old behavior | Escape
hatch |
|---|---|---|---|---|
| RESP request larger than one chunk | Buffer copied on every chunk |
Chunks joined once the bulk string can complete | Nobody | n/a |

Tests: oversized-request test 2381 ms before, 48 ms after (local). New
test `RESP: a bulk value split across many small writes is reassembled`
covers the split path. minidb suite 554 passed; `tsc` clean; `pnpm run
lint` 0 errors. [skip changeset] Users cannot see this change: it only
changes how fast the RESP server buffers large requests.

## Checklist

- [x] I have read the
[CONTRIBUTING](https://github.com/PyModel/pythinker-code/blob/main/CONTRIBUTING.md)
document.
- [ ] I have linked a related issue (external PRs: issue must have a
maintainer's `/approve`).
- [x] I have added tests that prove my feature works.
- [x] The behavior-change table above is complete, and every removed
behavior or flipped default is named in the changeset and either has an
escape hatch or was explicitly approved by a maintainer in this PR.
- [x] Ran `gen-changesets` skill, or this PR needs no changeset.
- [x] Ran `gen-docs` skill, or this PR needs no doc update.
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