Conversation
dockerode 4.0.12 adds a top-level protobufjs 7.6.6, so the 7.3.0 patch no longer applies and `yarn install` fails. Pin protobufjs to 7.6.6 and regenerate the patch against it.
uuid@10 (via dockerode 4.0.12) requires `node:crypto`, which Jest 26 cannot resolve, so every suite importing dockerode fails to load.
@types/node 18.19 no longer accepts the deprecated `NodeJS.Timer` in `clearInterval`, so switch the auto-miner timers to `NodeJS.Timeout`.
easy-peasy 6.1 moves to redux 5, which conflicts with connected-react-router's redux 4 types.
antd 4.24.16 re-rejects the promise when a Modal.confirm onOk fails, which fails the tests that assert the error is displayed.
The new types depend on redux 5, so annotate the middleware array with redux 4's `Middleware` type to keep it assignable.
Codecov Report✅ All modified and coverable lines are covered by tests. Additional details and impacted files@@ Coverage Diff @@
## master #1397 +/- ##
=========================================
Coverage 100.00% 100.00%
=========================================
Files 213 214 +1
Lines 7383 7384 +1
Branches 1505 1504 -1
=========================================
+ Hits 7383 7384 +1 ☔ View full report in Codecov by Harness. 🚀 New features to boost your workflow:
|
dockerode 4.0.12 ships `?.` syntax that webpack 4 cannot parse. CRA only transpiles node_modules to the browserslist targets, and the development targets already support it. Using the production targets in development transpiles it, along with class fields and numeric separators.
Jem256
force-pushed
the
fix/dependency-upgrade-failures
branch
from
September 22, 2026 20:35
4cb08cb to
6e06a06
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Description
Fixes the CI failures blocking the Renovate "all non-major dependencies" PR (#1352). Each commit fixes one failure, so they can be reviewed and reverted separately. Two packages are held back instead of fixed, because fixing them properly requires larger changes. The bigger upgrades are discussed in #1398.
The failures
1.
yarn installexits 1: the protobufjs patch no longer appliesdockerode 4.0.12 depends on
protobufjs ^7.3.2, which installs protobufjs 7.6.6 at the top level, next to the 7.3.0 copy used by@grpc/proto-loader.patches/protobufjs+7.3.0.patchtargetsnode_modules/protobufjs, so patch-packagefails and the install exits 1 in CI. Locally, patch-package only prints a warning, which makes this easy to miss. Reproduce it with
CI=true yarn install --frozen-lockfile.The patch is still needed: protobufjs 7.6.6 decodes 64-bit map keys (LND/tapd custom records, e.g.
map<uint64, bytes> custom_records) into 8-byte hash strings rather than decimal strings. Upstream fixed this in protobufjs 8.2.0 (protobufjs/protobuf.js#2186), which converts these keys to decimal strings intoObject. But@grpc/proto-loader,including the current 0.8.1, still requires protobufjs
^7, so we can't use that fix yet.Fix: pin protobufjs to 7.6.6 in
resolutionsso only one copy is installed, and regenerate the patch for that version.2. 145 test suites fail to load with
ENOENT: open 'node:crypto'dockerode 4.0.12 pulls in uuid@10, whose
dist/rng.jsdoesrequire("node:crypto"). Jest 26 (pinned by react-scripts 4) can't resolve thenode:prefix. The app itself is not affected: webpack uses uuid'sbrowserbuild, and the built bundle contains nonode:requires.Fix: a test-only
moduleNameMapperentry that pointsnode:cryptoat a small shim. Mapping straight to"crypto"doesn't work, because Jest 26 then treats it as a file path.3. 4 × TS2769:
NodeJS.Timeris not accepted byclearInterval@types/node 18.19 removed
NodeJS.Timerfrom theclearIntervaloverloads.Fix: use
NodeJS.Timeout.4. 4 × TS2345:
CallHistoryMethodActionis not assignable toUnknownActioneasy-peasy 6.1 moves to redux 5, while
connected-react-router(which providespush()and the router middleware) only supports redux^3 || ^4. The store and the router actions end up typed by two different redux versions. easy-peasy 6.1 also requires React 18, and Polar is on React 17.Fix: add easy-peasy to
ignoreDeps. Taking the upgrade properly needs React 18 and a replacement forconnected-react-router(last released in July 2022). See #1398.5. 11 tests fail on re-thrown
Modal.confirmonOkerrorsantd 4.24.16 changed
ActionButtonto returnPromise.reject(e)whenonOkrejects. 4.24.12 logged the error and swallowed it. Six components (RemoveNode, RestartNode, NetworkView, CloseChannelButton, CustomImagesTable, SimulationDesignerTab) reject fromonOkso the dialog stays open, and each of those rejections is now unhandled, which Jest counts as a test failure. The app behaves the same apart from an "Uncaught (in promise)" console message. The rejections can't be suppressed from test code, because jest-circus registers its handler on the real process, outside the test sandbox.Fix: add antd to
ignoreDeps. 4.24.16 is the last antd 4 release, so nothing else is missed. Changing the six dialogs needs a UX decision (close on error, or stay open for a retry) and belongs in its own PR.6. 1 × TS2322: the middleware array is not assignable
@types/redux-logger 3.0.13 changed its dependency from
redux ^4toredux ^5, socreateLogger()androuterMiddleware()now come from different redux versions.Fix: type the array as redux 4's
Middleware[]and cast the logger into it. Types only; redux-logger returns the same function either way.7.
yarn devfails: webpack can't parse dockerodedockerode 4.0.12 uses optional chaining (
?.) inlib/docker.js. webpack 4 (from react-scripts 4) can't parse it unless Babel rewrites it first. Babel only rewrites syntax the target browsers don't support. Theproductionbrowser list targets older browsers, soyarn buildandyarn packagepass. Thedevelopmentlist targetslast 1 chrome version, which supports?., so Babel leaves it alone andyarn devfails.Fix: use the same browser list for
developmentas forproduction, so Babel rewrites?.in both.Steps to Test
On Node 20 (matching CI), at the tip of this branch:
rm -rf node_modules && CI=true yarn install --frozen-lockfile: passes,protobufjs@7.6.6 ✔yarn lint:all: passesyarn test:ci: 161 suites, 2027 tests, 100% coverageyarn buildandyarn package: pass (all four Linux artifacts;rpmbuildrequired locally)yarn dev: starts, and a network can be created and started