chore(deps): consolidate eight Dependabot bumps into one change - #386
Conversation
Replaces 8 separate Dependabot PRs with one reviewed, resealed branch. Rust (src-tauri/Cargo.lock, via `cargo update --precise`): - uuid 1.26.0 -> 1.26.1 - reqwest 0.13.4 -> 0.13.5 (pulls in base64 0.23.1 alongside the existing 0.22.1, expected) rustls stays at 0.23.45, the patched version for RUSTSEC-2026-0285 (affected range 0.23.13-0.23.44); confirmed unchanged after the update. Frontend (package.json / pnpm-lock.yaml): - react ^19.2.8 -> ^19.3.0 - react-dom ^19.2.8 -> ^19.3.0 - lucide-react ^1.41.0 -> ^1.44.0 (resolves to 1.46.0) - @types/react ^19.2.18 -> ^19.3.0 - @types/react-dom ^19.2.7 -> ^19.3.0 - vite ^8.2.2 -> ^8.3.0 jsdom deliberately left at ^28.1.0. jsdom 30 requires Node `^22.22.2 || ^24.15.0 || >=26.0.0`, which falls outside this repo's declared `"node": ">=22.12 <25"` engines range. Issue #348 holds this pending an owner decision and explicitly says no successor PR should be created for it. GitHub Actions (SHA-pinned, comment corrected where wrong): - taiki-e/install-action -> v2.87.10 (3 occurrences: ci.yml x2, dependency-security.yml x1) - pnpm/action-setup -> v6.1.0 (4 occurrences: ci.yml x2, dependency-security.yml x1, release-mcpb-preview.yml x1) - actions/configure-pages -> v6.0.0 (deploy-install-page.yml) - actions/deploy-pages -> v5.0.1 (deploy-install-page.yml; the prior "# v4.0.5" comment was wrong, SHA decdde0ac... is tag v4.0.4) Regenerated THIRD_PARTY_LICENSES_RUST.txt via scripts/generate-rust-licenses.mjs, and hand-updated the frontend THIRD_PARTY_LICENSES.txt version headers (lucide-react, react/ react-dom/scheduler) to match the new lockfile so check-dependency-inventory.mjs (run through `pnpm run license:all`) is consistent again. Resealed the compatibility surface with bridge-tally-compatibility's rehash-surface / seal-surface / repoint-matrix, all run from tools/: rehash-surface reported 5 changed pinned files (ci.yml, dependency-security.yml, package.json, pnpm-lock.yaml, src-tauri/Cargo.lock, matching exactly what was hand-edited or regenerated as a direct consequence), then confirmed rehash_surface_changed:0 on a second pass. Frontend suite (`pnpm test`: node --test + vitest + playwright) is green: 147 + 113 + 10 tests passing. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
|
You have reached your Codex usage limits for code reviews. You can see your limits in the Codex usage dashboard. |
Node v24 "Krypton" is now Active LTS (latest 24.21.0, confirmed against nodejs.org/dist/index.json); v22 "Jod" is the previous LTS line and v26 is Current, not LTS. This resolves issue #348 by choosing path 2: raise the supported Node floor rather than holding jsdom back. - .node-version: 24.18.0 -> 24.21.0 (latest Active LTS patch) - package.json engines.node: ">=22.12 <25" -> ">=24.15.0 <25". The floor moves to the Node 24 LTS line, and 24.15.0 specifically is jsdom 30's minimum within that line, so the declared contract and the dependency's real requirement agree. Not pinned to the exact latest patch (24.21.0) so contributors on any earlier 24.x aren't rejected for no reason. - jsdom: ^28.1.0 -> ^30.0.1 (permitted by the raised floor; requires ^22.22.2 || ^24.15.0 || >=26.0.0 per its own package metadata) - pnpm-lock.yaml regenerated via `pnpm install` - README.md and docs/release-process.md: updated the "22 or 24" Node contract language to the new 24.x-only floor for consistency with package metadata and CI (workflows already follow via node-version-file: .node-version, no change needed there) - docs/tally/compatibility/compatibility-surface.json and compatibility-matrix.json: resealed via tools/bridge-tally-compatibility (rehash-surface -> seal-surface -> repoint-matrix -> rehash-surface, confirmed rehash_surface_changed:0) since package.json and pnpm-lock.yaml are pinned in the surface Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Extended: Node floor raised to the Active LTS line, jsdom unblockedThis PR now also resolves the decision that #348 was holding.
Verified against The floor is 24.15.0 rather than 24.21.0 deliberately: 24.15.0 is jsdom 30's own minimum within the 24 line, so the declared contract and the dependency's real requirement now agree, without rejecting contributors on any earlier 24.x for no reason.
Verification
Resealed: What was NOT verified — please read before merging#348's acceptance asks for jsdom-backed tests at "the selected minimum and current supported Node versions". Only one Node is installed on the machine this ran on (v24.18.0), and no version manager (nvm/fnm/volta/asdf/n) is available, so:
So the tested point is 24.18.0, which sits inside the new range but is neither boundary. If you want the floor genuinely proven before merge, that needs a version manager run at 24.15.0 and 24.21.0 explicitly. Flagging it rather than letting a declared range imply tested support. Refs #348 |
…dependency-bumps # Conflicts: # docs/tally/compatibility/compatibility-matrix.json # docs/tally/compatibility/compatibility-surface.json
…dependency-bumps # Conflicts: # docs/tally/compatibility/compatibility-matrix.json # docs/tally/compatibility/compatibility-surface.json
Replaces #336, #337, #338, #339, #340, #341, #342 and #343 with a single change, so the license regeneration and compatibility reseal happen once instead of eight times. Each of those PRs would individually have gone stale the moment any other landed.
Rust —
src-tauri/Cargo.lockuuidreqwestreqwestpullsbase640.23.1 alongside the existing 0.21.7/0.22.1 — expected.Security check, done explicitly:
reqwestis howrustlsenters this tree, and #381 just patchedrustlsto 0.23.45 for RUSTSEC-2026-0285 (affected range 0.23.13–0.23.44). Verified before and after:rustlsremains 0.23.45. A routine dependency bump silently walking that back into the vulnerable range was the specific risk here.Frontend —
package.json+pnpm-lock.yamlreactreact-domlucide-react@types/react@types/react-domvitelucide-reactresolves to 1.46.0 rather than 1.44.0 — inside the caret range, noted because the resolved version differs from the requested floor.Deliberately excluded: jsdom
jsdomstays at ^28.1.0. Dependabot #343 proposed 30.0.1, whoseenginesis^22.22.2 || ^24.15.0 || >=26.0.0— this repo declares"node": ">=22.12 <25", so 30.0.1 excludes Node 22.12–22.22.1 and 24.0–24.14.#348 holds this pending an owner decision and says explicitly that no successor PR should be created for it. Bundling it here would have overridden that silently. #348 stays open;
vitefrom the same Dependabot group is carried because itsengines(^20.19.0 || >=22.12.0) satisfies the current floor.Worth noting for that decision:
.node-versionis already24.18.0, so CI has been running well above the declared minimum — the contract and the practice already disagree.GitHub Actions (SHA-pinned; SHA and version comment both updated)
taiki-e/install-actionci.yml×2,dependency-security.yml)pnpm/action-setupci.yml×2,dependency-security.yml,release-mcpb-preview.yml)actions/configure-pagesdeploy-install-page.yml)actions/deploy-pagesdeploy-install-page.yml)Label correction: the existing
actions/deploy-pagespin was commented# v4.0.5, but SHAdecdde0ac…is tag v4.0.4 — verified against the GitHub tags API. Dependabot #340's title said 4.0.4→5.0.1 while its own diff comment said v4.0.5 on both sides; both the version and the label are corrected here.The two
actions/*bumps are majors. They affect only the GitHub Pages install-page deploy, so the blast radius is that page rather than the product build.Verification performed
corepack pnpm run license:all→ "Frontend license inventory matches 5 locked components" / "Rust license inventory matches 384 locked components".corepack pnpm test→ all green: 147node --testcases, 113 vitest cases across 8 files, 10 Playwright cases (chromium + webkit). A React 19.2→19.3 and Vite 8.2→8.3 bump is not free, so this was run rather than assumed.rehash-surfacereported 5 changed entries; all five enumerated and accounted for as files actually edited:ci.yml,dependency-security.yml,package.json,pnpm-lock.yaml,src-tauri/Cargo.lock. Confirming pass reports 0. Neither JSON was hand-edited.One change beyond the brief
THIRD_PARTY_LICENSES.txt(the frontend inventory) needed two header updates —lucide-react 1.41.0→1.46.0andreact/react-dom/scheduler 19.2.8/19.2.8/0.27.0→19.3.0/19.3.0/0.28.0. Unlike the Rust inventory, this file is hand-maintained with no generator, solicense:allcould not pass without it. Flagged rather than absorbed silently.That absence of a frontend generator is itself worth fixing — it is the same manual-regeneration tax that issues #349/#350/#351 describe.
Not run
cargo check/cargo test/clippywere not run locally on the Rust side. CI's native checks are the verification for the two lockfile bumps; please don't read this as locally build-verified.Closes #336, closes #337, closes #338, closes #339, closes #340, closes #341, closes #342, closes #343
🤖 Generated with Claude Code