Repository navigation
chore(deps): October dependency refresh (#2557) - #2710
Conversation
Moves every "wanted" bump from the October sweep: - root, web, tui, cli, mcpdo: targeted `npm update <pkg>` of each outdated direct dependency (a whole-tree `npm update` re-resolved transitives and hoisted ajv 6, typescript 6 and commander 4 into client installs, so it was reverted in favour of naming each package). - peer/transitive shadows aligned for verify:dep-lockstep: eslint, react and zod in tui; eslint and zod in web. - web: pin the transitive @types/node with an overrides entry, as cli already does — @types/express takes `*`, so web's copy floated to 26. - ink-form 2.0.2 fixes the "competed" typo upstream (lukasbach/ink-form#14), so the build-time label patch's guard fired as designed. Remove the patch, its tests and its README section, and raise the floor to ^2.0.2 so no install can resolve the misspelled release. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Signed-off-by: cliffhall <cliff@futurescale.com>
keyring 2 rejects on a locked or inaccessible store instead of resolving null/false, which is the contract secret-store.ts's getStrict, probe and delete paths were already written against; v1 silently erased it. commander also moves mcpdo's sucrase override, which pins sucrase's copy to the root's major so mcpdo's own import resolves the same commander. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Signed-off-by: cliffhall <cliff@futurescale.com>
There was a problem hiding this comment.
🔵 Needs a closer look
Broad lockfile churn and two runtime major upgrades, including a native dependency, warrant final human review.
0 open findings
What changed in this PR
Refreshes October dependencies while preserving lockstep across Inspector clients.
Changes:
- Applies targeted in-range dependency updates.
- Upgrades keyring and Commander majors.
- Removes the obsolete
ink-formtypo patch.
| File | Description |
|---|---|
package.json |
Raises keyring and Commander ranges. |
package-lock.json |
Resolves root dependency updates. |
clients/web/package.json |
Pins Node types to major 24. |
clients/tui/tsup.config.ts |
Removes the obsolete label patch. |
clients/tui/README.md |
Removes patch documentation. |
clients/tui/package.json |
Raises the ink-form floor. |
clients/tui/package-lock.json |
Resolves TUI updates. |
clients/tui/__tests__/tsupConfig.test.ts |
Removes patch-specific tests. |
clients/mcpdo/package.json |
Aligns Commander override. |
clients/mcpdo/package-lock.json |
Resolves mcpdo updates. |
clients/cli/package-lock.json |
Aligns Node type packages. |
Files not reviewed (4)
- clients/cli/package-lock.json: Generated file
- clients/mcpdo/package-lock.json: Generated file
- clients/tui/package-lock.json: Generated file
- clients/web/package-lock.json: Generated file
🧠 Review effort: Balanced
💡 Add a code-review agent skill for context-aware, tailored reviews. Learn more in the docs.
|
Copilot review loop closed after round 1: clean (0 findings, no inline comments, no suppressed comments). The round's headline flags the broad lockfile churn and the two runtime majors, including the native |
✅ Verdict: mergeableSmoke tested at SetupI made a fresh worktree and ran a root Smoke suites (host: macOS 27, Node 26.10)
Targeted checks on what the PR changescommander 13 → 15 (cli, mcpdo, launcher)
Dependency hygiene
Note (not blocking)This branch was cut before #2711 merged, so its CI never ran the new |
Closes #2557
The October dependency refresh, trimmed to what earns its place. The full reasoning — including everything deliberately not taken and when to revisit each — is in the analysis on #2557, written so next month's sweep can reuse it.
npm auditshowed zero advisories on the previous versions, so nothing here is a security fix.Commit 1: in-range refresh
npm update <pkg …>. A barenpm updatere-resolved transitives and hoisted ajv 6 / typescript 6 / commander 4 into client installs, so it was reverted. Peer and transitive copies (eslint, react, zod) were then aligned soverify:dep-locksteppasses.overrides["@types/node"]: "^24.12.4":@types/expressdepends on@types/node: *, so web's copy floated to 26.x. This is the same pinclients/clialready carries.ink-form2.0.2 fixes the "competed" typo upstream (Typo in the incomplete-form hint: "competed" should be "completed" lukasbach/ink-form#14). The TUI's build-time label patch is designed to fail once the typo is gone, and it did. This removes the patch, its tests and its README section, and raises the floor to^2.0.2so no install resolves the misspelled release.Commit 2: two majors
@napi-rs/keyring1 → 2. v1 resolved a locked, inaccessible or permission-denied keychain asnull/false, the same result as "nothing stored".core/auth/node/secret-store.tswas written assuming those failures throw (getStrict,probeKeyringAvailable,delete), and v2 makes that true. The API surface is unchanged. The tests mock the binding, so I also ran a real set/get/find/delete round trip against the macOS keychain on 2.1.1.commander13 → 15 (14 is now maintenance-only). It is ESM-only and needs Node ≥22.12, both fine for us. Its--no-*default change only affects paired options, and our one--no-revokeis unpaired. This also moves mcpdo'soverrides.sucrase.commander, which keeps sucrase's copy on the root's major.Not in this PR
prettier 3.9, pino 10, jest-dom 7, happy-dom 21,
@dnd-kit/sortable10, vitest 5, Mantine 9, ink 7/8, chokidar 5, open 11, TypeScript 7,@types/node26, and the claude-code-action pin. Each one's reason is in the #2557 analysis. Vitest 5 is the notable one: it silently cut web coverage from 418 files to 11 while the gate stayed green, which is now #2709.Verification
npm run local:gateis green on this exact HEAD: all suites, coverage, smokes (chromium + firefox), Storybook 123/123,verify:dep-lockstepOK. Coverage file counts were checked against the expected scope: web 419, cli 20, tui 41, mcpdo 31, launcher 1.🤖 Generated with Claude Code