Skip to content

fix: make hdwallet great again#751

Merged
gomesalexandre merged 3 commits intomasterfrom
fix_make_hdwallet_great_again
Nov 28, 2025
Merged

fix: make hdwallet great again#751
gomesalexandre merged 3 commits intomasterfrom
fix_make_hdwallet_great_again

Conversation

@gomesalexandre
Copy link
Contributor

@gomesalexandre gomesalexandre commented Nov 28, 2025

Clause PR body below, as a result of a few hours of hellish debugging, ~20% weekly Claude tokens spent, and full sanity lost. tl;dr this fixes non-determinstic builds (hence, checksums) following #741.

TODO:

  • revert version publish commit, publish an alpha on npm and test this in web, removing the current hdwallet-gridplus pin there, confirm this works ✅ feat: make web ci great again  web#11227
  • redo the actual publish commit and get this in

Issue

Starting with version 1.62.12, @shapeshiftoss/hdwallet-gridplus (and initially other packages) began failing with The remote archive doesn't match the expected checksum errors during yarn install --frozen-lockfile in CI (example failure). Version 1.62.11 (web commit fb25b01) worked fine. Web was temporarily fixed by pinning hdwallet-gridplus to 1.62.11 in package.json resolutions (web commit 7e2046a).

Initially suspected PR #749 (BCH bech32 fix) since that's when 1.62.12 was published, but investigation revealed the actual culprit was PR #741 (gridplus cleanup) which introduced non-deterministic builds.

Investigation

Tested by cloning the hdwallet repo to /tmp multiple times and comparing published npm tarballs between versions. Downloaded actual published packages from npm registry for versions 1.62.11, 1.62.12, 1.62.13, and 1.62.14 using npm pack @shapeshiftoss/hdwallet-gridplus@<version>.

Found that PR #741 made three problematic changes to all 24 packages:

  1. Added "tsBuildInfoFile": "./dist/tsconfig.tsbuildinfo" to tsconfig.json
  2. Changed clean script from "rm -rf dist tsconfig.tsbuildinfo" to "rm -rf dist node_modules"
  3. Changed prepublishOnly from "yarn clean && yarn build" to "rm -rf dist && yarn build"

TypeScript's tsconfig.tsbuildinfo files contain timestamps, absolute paths, and build metadata that vary between builds. The modified scripts no longer cleaned up these files before publishing, causing them to be included in the published packages with different checksums on each build. Confirmed by running yarn clean && yarn build && yarn pack twice - produced different SHA256 checksums each time.

Fix

Revert the three changes from PR #741 for all 24 packages:

  • Remove "tsBuildInfoFile": "./dist/tsconfig.tsbuildinfo" from all package tsconfig.json files
  • Restore clean script to "rm -rf dist tsconfig.tsbuildinfo"
  • Restore prepublishOnly to "yarn clean && yarn build"

This ensures tsconfig.tsbuildinfo is cleaned before every build and publish, producing deterministic package tarballs that match the checksums expected by yarn's lockfile.

Summary by CodeRabbit

  • Chores
    • Bumped package version to 1.62.15 across all modules and examples.
    • Updated all hdwallet-related dependencies to 1.62.15 for consistency across wallet integrations (Coinbase, Ledger, Trezor, Phantom, Keplr, and others).
    • Refined build configuration for improved build optimization.

✏️ Tip: You can customize this high-level summary in your review settings.

@coderabbitai
Copy link

coderabbitai bot commented Nov 28, 2025

📝 Walkthrough

Walkthrough

This PR performs a coordinated version bump of the hdwallet monorepo from 1.62.14 to 1.62.15, updating package versions, dependencies, build scripts, and TypeScript configurations across all related packages consistently.

Changes

Cohort / File(s) Change Summary
Root-level version and dependencies
lerna.json, examples/sandbox/package.json, integration/package.json
Version bump to 1.62.15; all @shapeshiftoss/hdwallet-* dependencies updated from 1.62.14 to 1.62.15
hdwallet package versions and build scripts
packages/hdwallet-*/package.json (30+ files including: core, coinbase, gridplus, keepkey, keepkey-, keplr, ledger, ledger-, native, native-vault, phantom, portis, trezor, trezor-connect, vultisig, walletconnect, walletconnectV2)
Version bumped to 1.62.15; clean script changed from "rm -rf dist node_modules" to "rm -rf dist tsconfig.tsbuildinfo"; prepublishOnly script changed from "rm -rf dist && yarn build" to "yarn clean && yarn build"; internal @shapeshiftoss/hdwallet-* dependencies updated to 1.62.15
TypeScript build configuration
packages/hdwallet-*/tsconfig.json (30+ files across all hdwallet packages)
Removed tsBuildInfoFile option from compilerOptions; outDir remains unchanged as "dist"

Estimated code review effort

🎯 2 (Simple) | ⏱️ ~10 minutes

Areas for attention:

  • Verify all version pins across packages align to 1.62.15 (no accidental mismatches)
  • Confirm the script changes are applied consistently across all 30+ packages
  • Ensure tsconfig.json changes don't introduce build cache issues or require downstream adjustments

Possibly related PRs

  • fix: hdwallet-trezor mergefix #742: Performs coordinated version bumps and dependency updates across @shapeshiftoss/hdwallet packages in package.json files
  • fix: hdwallet ci #738: Coordinates version bumps of the same @shapeshiftoss/hdwallet packages across the monorepo
  • feat: gridplus cleanup #741: Modifies the same package manifests and tsconfig compilerOptions (version, scripts, tsBuildInfoFile entries) across multiple packages

Suggested reviewers

  • NeOMakinG
  • kaladinlight

Poem

🐰 Hop along, version's on the way!
From .14 to .15, hip-hooray!
Scripts cleaned up, configs made neat,
Build info gone—the refactor's complete!
Every package in sync, what a treat! 🐇

Pre-merge checks and finishing touches

❌ Failed checks (1 inconclusive)
Check name Status Explanation Resolution
Title check ❓ Inconclusive The title is vague and generic, using non-descriptive phrasing ('make hdwallet great again') that doesn't convey meaningful information about the changeset. Revise the title to clearly describe the main fix, such as: 'fix: revert tsBuildInfoFile changes to ensure deterministic npm package builds'
✅ Passed checks (2 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
✨ Finishing touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Post copyable unit tests in a comment
  • Commit unit tests in branch fix_make_hdwallet_great_again

📜 Recent review details

Configuration used: CodeRabbit UI

Review profile: CHILL

Plan: Pro

Disabled knowledge base sources:

  • Linear integration is disabled by default for public repositories

You can enable these sources in your CodeRabbit configuration.

📥 Commits

Reviewing files that changed from the base of the PR and between 238db82 and aee13a4.

📒 Files selected for processing (51)
  • examples/sandbox/package.json (2 hunks)
  • integration/package.json (2 hunks)
  • lerna.json (1 hunks)
  • packages/hdwallet-coinbase/package.json (2 hunks)
  • packages/hdwallet-coinbase/tsconfig.json (1 hunks)
  • packages/hdwallet-core/package.json (2 hunks)
  • packages/hdwallet-core/tsconfig.json (1 hunks)
  • packages/hdwallet-gridplus/package.json (2 hunks)
  • packages/hdwallet-gridplus/tsconfig.json (1 hunks)
  • packages/hdwallet-keepkey-chromeusb/package.json (2 hunks)
  • packages/hdwallet-keepkey-chromeusb/tsconfig.json (1 hunks)
  • packages/hdwallet-keepkey-electron/package.json (2 hunks)
  • packages/hdwallet-keepkey-electron/tsconfig.json (1 hunks)
  • packages/hdwallet-keepkey-nodehid/package.json (2 hunks)
  • packages/hdwallet-keepkey-nodehid/tsconfig.json (1 hunks)
  • packages/hdwallet-keepkey-nodewebusb/package.json (2 hunks)
  • packages/hdwallet-keepkey-nodewebusb/tsconfig.json (1 hunks)
  • packages/hdwallet-keepkey-tcp/package.json (2 hunks)
  • packages/hdwallet-keepkey-tcp/tsconfig.json (1 hunks)
  • packages/hdwallet-keepkey-webusb/package.json (2 hunks)
  • packages/hdwallet-keepkey-webusb/tsconfig.json (1 hunks)
  • packages/hdwallet-keepkey/package.json (3 hunks)
  • packages/hdwallet-keepkey/tsconfig.json (1 hunks)
  • packages/hdwallet-keplr/package.json (2 hunks)
  • packages/hdwallet-keplr/tsconfig.json (1 hunks)
  • packages/hdwallet-ledger-webhid/package.json (2 hunks)
  • packages/hdwallet-ledger-webhid/tsconfig.json (1 hunks)
  • packages/hdwallet-ledger-webusb/package.json (3 hunks)
  • packages/hdwallet-ledger-webusb/tsconfig.json (1 hunks)
  • packages/hdwallet-ledger/package.json (3 hunks)
  • packages/hdwallet-ledger/tsconfig.json (1 hunks)
  • packages/hdwallet-metamask-multichain/package.json (2 hunks)
  • packages/hdwallet-metamask-multichain/tsconfig.json (1 hunks)
  • packages/hdwallet-native-vault/package.json (2 hunks)
  • packages/hdwallet-native-vault/tsconfig.json (1 hunks)
  • packages/hdwallet-native/package.json (2 hunks)
  • packages/hdwallet-native/tsconfig.json (1 hunks)
  • packages/hdwallet-phantom/package.json (2 hunks)
  • packages/hdwallet-phantom/tsconfig.json (1 hunks)
  • packages/hdwallet-portis/package.json (2 hunks)
  • packages/hdwallet-portis/tsconfig.json (1 hunks)
  • packages/hdwallet-trezor-connect/package.json (2 hunks)
  • packages/hdwallet-trezor-connect/tsconfig.json (1 hunks)
  • packages/hdwallet-trezor/package.json (2 hunks)
  • packages/hdwallet-trezor/tsconfig.json (1 hunks)
  • packages/hdwallet-vultisig/package.json (2 hunks)
  • packages/hdwallet-vultisig/tsconfig.json (1 hunks)
  • packages/hdwallet-walletconnect/package.json (2 hunks)
  • packages/hdwallet-walletconnect/tsconfig.json (1 hunks)
  • packages/hdwallet-walletconnectV2/package.json (2 hunks)
  • packages/hdwallet-walletconnectV2/tsconfig.json (0 hunks)
💤 Files with no reviewable changes (1)
  • packages/hdwallet-walletconnectV2/tsconfig.json
🧰 Additional context used
🧠 Learnings (8)
📓 Common learnings
Learnt from: gomesalexandre
Repo: shapeshift/hdwallet PR: 726
File: packages/hdwallet-coinbase/package.json:18-18
Timestamp: 2025-08-07T15:23:54.858Z
Learning: In the shapeshiftoss/hdwallet monorepo, package version bumps are done in PRs before publishing. The packages are published after the PR is merged, so dependency versions may reference unpublished versions during the PR review phase. This is expected behavior in their release workflow.
Learnt from: gomesalexandre
Repo: shapeshift/hdwallet PR: 726
File: packages/hdwallet-ledger/package.json:36-36
Timestamp: 2025-08-07T15:27:03.179Z
Learning: In the shapeshiftoss/hdwallet monorepo, the ledgerhq/hw-transport dependency in packages/hdwallet-ledger/package.json is pinned to an exact version (without caret) due to type mismatches that occur with newer versions. Other Ledger dependencies can safely use caret ranges.
Learnt from: gomesalexandre
Repo: shapeshift/hdwallet PR: 726
File: packages/hdwallet-ledger-webusb/package.json:3-3
Timestamp: 2025-08-07T15:24:19.530Z
Learning: In the shapeshiftoss/hdwallet monorepo, the team runs `yarn build` before bumping versions and also before publishing packages. This ensures that dist/ artifacts (including UMD bundles) are properly regenerated after dependency updates.
📚 Learning: 2025-08-07T15:24:19.530Z
Learnt from: gomesalexandre
Repo: shapeshift/hdwallet PR: 726
File: packages/hdwallet-ledger-webusb/package.json:3-3
Timestamp: 2025-08-07T15:24:19.530Z
Learning: In the shapeshiftoss/hdwallet monorepo, the team runs `yarn build` before bumping versions and also before publishing packages. This ensures that dist/ artifacts (including UMD bundles) are properly regenerated after dependency updates.

Applied to files:

  • packages/hdwallet-keepkey-nodewebusb/package.json
  • packages/hdwallet-core/tsconfig.json
  • packages/hdwallet-keepkey-chromeusb/package.json
  • packages/hdwallet-keepkey-webusb/package.json
  • packages/hdwallet-core/package.json
  • packages/hdwallet-portis/package.json
  • packages/hdwallet-ledger-webusb/package.json
  • packages/hdwallet-phantom/package.json
  • integration/package.json
  • packages/hdwallet-ledger-webhid/package.json
  • packages/hdwallet-metamask-multichain/package.json
  • packages/hdwallet-coinbase/package.json
  • packages/hdwallet-keepkey-tcp/package.json
  • packages/hdwallet-native-vault/package.json
  • packages/hdwallet-trezor/package.json
  • packages/hdwallet-ledger/package.json
  • examples/sandbox/package.json
  • packages/hdwallet-metamask-multichain/tsconfig.json
  • packages/hdwallet-vultisig/package.json
  • packages/hdwallet-keepkey/package.json
  • packages/hdwallet-walletconnectV2/package.json
  • packages/hdwallet-walletconnect/package.json
  • packages/hdwallet-trezor-connect/package.json
  • packages/hdwallet-keplr/tsconfig.json
  • packages/hdwallet-gridplus/package.json
  • packages/hdwallet-native/package.json
  • packages/hdwallet-keepkey-nodehid/package.json
  • packages/hdwallet-native/tsconfig.json
  • packages/hdwallet-keplr/package.json
  • packages/hdwallet-keepkey-electron/package.json
📚 Learning: 2025-08-07T15:27:03.179Z
Learnt from: gomesalexandre
Repo: shapeshift/hdwallet PR: 726
File: packages/hdwallet-ledger/package.json:36-36
Timestamp: 2025-08-07T15:27:03.179Z
Learning: In the shapeshiftoss/hdwallet monorepo, the ledgerhq/hw-transport dependency in packages/hdwallet-ledger/package.json is pinned to an exact version (without caret) due to type mismatches that occur with newer versions. Other Ledger dependencies can safely use caret ranges.

Applied to files:

  • packages/hdwallet-keepkey-nodewebusb/package.json
  • packages/hdwallet-ledger/tsconfig.json
  • packages/hdwallet-keepkey-chromeusb/package.json
  • packages/hdwallet-keepkey-webusb/package.json
  • packages/hdwallet-ledger-webhid/tsconfig.json
  • packages/hdwallet-core/package.json
  • packages/hdwallet-portis/package.json
  • packages/hdwallet-ledger-webusb/package.json
  • packages/hdwallet-phantom/package.json
  • integration/package.json
  • packages/hdwallet-ledger-webhid/package.json
  • packages/hdwallet-metamask-multichain/package.json
  • packages/hdwallet-coinbase/package.json
  • packages/hdwallet-keepkey-tcp/package.json
  • packages/hdwallet-native-vault/package.json
  • packages/hdwallet-trezor/package.json
  • packages/hdwallet-ledger/package.json
  • examples/sandbox/package.json
  • packages/hdwallet-vultisig/package.json
  • packages/hdwallet-keepkey/package.json
  • packages/hdwallet-walletconnectV2/package.json
  • packages/hdwallet-walletconnect/package.json
  • packages/hdwallet-trezor-connect/package.json
  • packages/hdwallet-gridplus/package.json
  • packages/hdwallet-native/package.json
  • packages/hdwallet-keepkey-nodehid/package.json
  • packages/hdwallet-keplr/package.json
  • packages/hdwallet-keepkey-electron/package.json
📚 Learning: 2025-08-07T15:23:54.858Z
Learnt from: gomesalexandre
Repo: shapeshift/hdwallet PR: 726
File: packages/hdwallet-coinbase/package.json:18-18
Timestamp: 2025-08-07T15:23:54.858Z
Learning: In the shapeshiftoss/hdwallet monorepo, package version bumps are done in PRs before publishing. The packages are published after the PR is merged, so dependency versions may reference unpublished versions during the PR review phase. This is expected behavior in their release workflow.

Applied to files:

  • packages/hdwallet-keepkey-nodewebusb/package.json
  • packages/hdwallet-keepkey-chromeusb/package.json
  • packages/hdwallet-keepkey-webusb/package.json
  • packages/hdwallet-core/package.json
  • packages/hdwallet-portis/package.json
  • packages/hdwallet-ledger-webusb/package.json
  • packages/hdwallet-phantom/package.json
  • integration/package.json
  • packages/hdwallet-ledger-webhid/package.json
  • packages/hdwallet-metamask-multichain/package.json
  • packages/hdwallet-coinbase/package.json
  • packages/hdwallet-keepkey-tcp/package.json
  • packages/hdwallet-native-vault/package.json
  • packages/hdwallet-trezor/package.json
  • packages/hdwallet-ledger/package.json
  • examples/sandbox/package.json
  • packages/hdwallet-vultisig/package.json
  • packages/hdwallet-keepkey/package.json
  • packages/hdwallet-walletconnectV2/package.json
  • packages/hdwallet-walletconnect/package.json
  • packages/hdwallet-trezor-connect/package.json
  • packages/hdwallet-gridplus/package.json
  • packages/hdwallet-native/package.json
  • packages/hdwallet-keepkey-nodehid/package.json
  • packages/hdwallet-keplr/package.json
  • packages/hdwallet-keepkey-electron/package.json
📚 Learning: 2025-08-07T15:47:29.207Z
Learnt from: gomesalexandre
Repo: shapeshift/hdwallet PR: 726
File: packages/hdwallet-ledger/src/transport.ts:10-10
Timestamp: 2025-08-07T15:47:29.207Z
Learning: In the shapeshiftoss/hdwallet monorepo, ts-ignore is used instead of ts-expect-error for Ledger transport imports because the code works locally without TypeScript errors but has issues in CI environment. Using ts-expect-error would fail locally since there are no actual errors to suppress.

Applied to files:

  • packages/hdwallet-keepkey-nodewebusb/package.json
  • packages/hdwallet-ledger/tsconfig.json
  • packages/hdwallet-core/tsconfig.json
  • packages/hdwallet-keepkey-chromeusb/package.json
  • packages/hdwallet-keepkey-webusb/tsconfig.json
  • packages/hdwallet-vultisig/tsconfig.json
  • packages/hdwallet-walletconnect/tsconfig.json
  • packages/hdwallet-ledger-webusb/tsconfig.json
  • packages/hdwallet-keepkey-webusb/package.json
  • packages/hdwallet-ledger-webhid/tsconfig.json
  • packages/hdwallet-core/package.json
  • packages/hdwallet-keepkey/tsconfig.json
  • packages/hdwallet-portis/package.json
  • packages/hdwallet-ledger-webusb/package.json
  • packages/hdwallet-phantom/package.json
  • packages/hdwallet-keepkey-tcp/tsconfig.json
  • integration/package.json
  • packages/hdwallet-ledger-webhid/package.json
  • packages/hdwallet-metamask-multichain/package.json
  • packages/hdwallet-keepkey-nodehid/tsconfig.json
  • packages/hdwallet-coinbase/package.json
  • packages/hdwallet-phantom/tsconfig.json
  • packages/hdwallet-keepkey-tcp/package.json
  • packages/hdwallet-native-vault/package.json
  • packages/hdwallet-trezor-connect/tsconfig.json
  • packages/hdwallet-trezor/tsconfig.json
  • packages/hdwallet-trezor/package.json
  • packages/hdwallet-native-vault/tsconfig.json
  • packages/hdwallet-ledger/package.json
  • examples/sandbox/package.json
  • packages/hdwallet-metamask-multichain/tsconfig.json
  • packages/hdwallet-vultisig/package.json
  • packages/hdwallet-keepkey/package.json
  • packages/hdwallet-walletconnectV2/package.json
  • packages/hdwallet-walletconnect/package.json
  • packages/hdwallet-trezor-connect/package.json
  • packages/hdwallet-gridplus/tsconfig.json
  • packages/hdwallet-keepkey-chromeusb/tsconfig.json
  • packages/hdwallet-coinbase/tsconfig.json
  • packages/hdwallet-keplr/tsconfig.json
  • packages/hdwallet-gridplus/package.json
  • packages/hdwallet-native/package.json
  • packages/hdwallet-keepkey-nodehid/package.json
  • packages/hdwallet-keepkey-electron/tsconfig.json
  • packages/hdwallet-portis/tsconfig.json
  • packages/hdwallet-native/tsconfig.json
  • packages/hdwallet-keplr/package.json
  • packages/hdwallet-keepkey-electron/package.json
  • packages/hdwallet-keepkey-nodewebusb/tsconfig.json
📚 Learning: 2025-08-07T15:47:26.835Z
Learnt from: gomesalexandre
Repo: shapeshift/hdwallet PR: 726
File: packages/hdwallet-ledger-webusb/src/transport.ts:12-12
Timestamp: 2025-08-07T15:47:26.835Z
Learning: In the shapeshiftoss/hdwallet monorepo, ts-ignore is used instead of ts-expect-error for Ledger transport imports because the CI environment has different type checking behavior than local development. The code works locally without errors, but CI reports type issues, so ts-ignore is necessary to suppress the inconsistent type checking across environments.

Applied to files:

  • packages/hdwallet-keepkey-nodewebusb/package.json
  • packages/hdwallet-ledger/tsconfig.json
  • packages/hdwallet-core/tsconfig.json
  • packages/hdwallet-keepkey-chromeusb/package.json
  • packages/hdwallet-keepkey-webusb/tsconfig.json
  • packages/hdwallet-vultisig/tsconfig.json
  • packages/hdwallet-walletconnect/tsconfig.json
  • packages/hdwallet-ledger-webusb/tsconfig.json
  • packages/hdwallet-keepkey-webusb/package.json
  • packages/hdwallet-ledger-webhid/tsconfig.json
  • packages/hdwallet-keepkey/tsconfig.json
  • packages/hdwallet-portis/package.json
  • packages/hdwallet-ledger-webusb/package.json
  • packages/hdwallet-phantom/package.json
  • packages/hdwallet-keepkey-tcp/tsconfig.json
  • integration/package.json
  • packages/hdwallet-ledger-webhid/package.json
  • packages/hdwallet-metamask-multichain/package.json
  • packages/hdwallet-keepkey-nodehid/tsconfig.json
  • packages/hdwallet-coinbase/package.json
  • packages/hdwallet-phantom/tsconfig.json
  • packages/hdwallet-keepkey-tcp/package.json
  • packages/hdwallet-native-vault/package.json
  • packages/hdwallet-trezor-connect/tsconfig.json
  • packages/hdwallet-trezor/tsconfig.json
  • packages/hdwallet-trezor/package.json
  • packages/hdwallet-native-vault/tsconfig.json
  • packages/hdwallet-ledger/package.json
  • examples/sandbox/package.json
  • packages/hdwallet-metamask-multichain/tsconfig.json
  • packages/hdwallet-vultisig/package.json
  • packages/hdwallet-keepkey/package.json
  • packages/hdwallet-walletconnectV2/package.json
  • packages/hdwallet-walletconnect/package.json
  • packages/hdwallet-trezor-connect/package.json
  • packages/hdwallet-gridplus/tsconfig.json
  • packages/hdwallet-keepkey-chromeusb/tsconfig.json
  • packages/hdwallet-coinbase/tsconfig.json
  • packages/hdwallet-keplr/tsconfig.json
  • packages/hdwallet-gridplus/package.json
  • packages/hdwallet-native/package.json
  • packages/hdwallet-keepkey-nodehid/package.json
  • packages/hdwallet-keepkey-electron/tsconfig.json
  • packages/hdwallet-portis/tsconfig.json
  • packages/hdwallet-native/tsconfig.json
  • packages/hdwallet-keplr/package.json
  • packages/hdwallet-keepkey-electron/package.json
  • packages/hdwallet-keepkey-nodewebusb/tsconfig.json
📚 Learning: 2025-11-20T11:04:44.808Z
Learnt from: gomesalexandre
Repo: shapeshift/hdwallet PR: 737
File: packages/hdwallet-trezor/src/ethereum.ts:122-138
Timestamp: 2025-11-20T11:04:44.808Z
Learning: In packages/hdwallet-trezor/src/ethereum.ts, the ethSignTypedData function correctly returns the signature from res.payload.signature without adding a "0x" prefix. This works correctly in practice and has been tested, despite appearing inconsistent with ethSignMessage which does add the prefix. The Trezor Connect ethereumSignTypedData response already provides the signature in the correct format for consumption.

Applied to files:

  • packages/hdwallet-vultisig/tsconfig.json
  • packages/hdwallet-keepkey-nodehid/tsconfig.json
  • packages/hdwallet-trezor-connect/tsconfig.json
  • packages/hdwallet-trezor/tsconfig.json
📚 Learning: 2025-08-07T15:24:34.076Z
Learnt from: gomesalexandre
Repo: shapeshift/hdwallet PR: 726
File: examples/sandbox/package.json:15-31
Timestamp: 2025-08-07T15:24:34.076Z
Learning: Lerna v6+ supports workspace protocol syntax (workspace:*) but does not automatically convert exact versions to workspace protocol during version bumps. It only preserves existing workspace protocol syntax. Teams using Lerna for automated version bumps would need manual conversion to use workspace protocol, which negates automation benefits.

Applied to files:

  • lerna.json
🔇 Additional comments (53)
packages/hdwallet-keepkey-chromeusb/tsconfig.json (1)

5-5: Revert correctly removes tsBuildInfoFile to restore deterministic builds.

This change removes the tsBuildInfoFile setting that was introduced in PR #741, which caused non-deterministic .tsbuildinfo files (containing timestamps and absolute paths) to be generated during builds. Removing this setting restores consistent, reproducible package checksums across build runs.

packages/hdwallet-metamask-multichain/tsconfig.json (1)

3-6: Correct fix for non-deterministic builds.

The removal of tsBuildInfoFile prevents TypeScript from emitting incremental build metadata files containing timestamps and absolute paths that vary between builds. This is the root cause of non-deterministic .tsbuildinfo output, which was causing checksum mismatches in published packages.

packages/hdwallet-coinbase/tsconfig.json (1)

3-6: Consistent with coordinated build fix across monorepo.

Removal of tsBuildInfoFile aligns with the broader revert of PR #741 changes across all 24 packages to restore deterministic builds.

packages/hdwallet-ledger-webusb/tsconfig.json (1)

3-6: Correct tsBuildInfoFile removal.

Consistent with the monorepo-wide fix. Other compiler configuration remains unchanged.

packages/hdwallet-walletconnect/tsconfig.json (1)

3-6: Correct tsBuildInfoFile removal.

This follows the same pattern as other packages in the monorepo fix.

packages/hdwallet-keplr/tsconfig.json (1)

3-6: Correct tsBuildInfoFile removal.

Maintains consistency with the broader monorepo revert.

packages/hdwallet-keepkey-nodewebusb/tsconfig.json (1)

3-6: Correct tsBuildInfoFile removal.

Other configuration and references remain intact.

packages/hdwallet-phantom/tsconfig.json (1)

3-6: Correct tsBuildInfoFile removal.

Maintains the coordinated fix pattern.

packages/hdwallet-trezor-connect/tsconfig.json (1)

3-6: Correct tsBuildInfoFile removal.

All 8 provided tsconfig.json files consistently apply this fix to prevent non-deterministic build outputs.

lerna.json (1)

3-3: Version alignment looks good.

The Lerna workspace version has been correctly bumped to 1.62.15 to coordinate with the package version updates across the monorepo.

packages/hdwallet-native-vault/tsconfig.json (1)

1-10: Correct removal of tsBuildInfoFile.

The tsBuildInfoFile setting has been removed from compilerOptions, which eliminates the generation of .tsbuildinfo files that contained timestamps and absolute paths—the root cause of non-deterministic builds. The output directory and all other configuration remains intact.

packages/hdwallet-keepkey-electron/tsconfig.json (1)

1-10: Consistent tsBuildInfoFile removal.

Aligns with the pattern across other package tsconfigs in this PR—removing the problematic tsBuildInfoFile setting.

packages/hdwallet-keepkey-webusb/tsconfig.json (1)

1-10: Consistent tsBuildInfoFile removal.

packages/hdwallet-native/tsconfig.json (1)

1-11: Consistent tsBuildInfoFile removal.

packages/hdwallet-keepkey-nodehid/tsconfig.json (1)

1-10: Consistent tsBuildInfoFile removal.

packages/hdwallet-keepkey-tcp/tsconfig.json (1)

1-10: Consistent tsBuildInfoFile removal.

packages/hdwallet-trezor/tsconfig.json (1)

1-10: Consistent tsBuildInfoFile removal.

packages/hdwallet-ledger-webhid/tsconfig.json (1)

5-5: LGTM — tsBuildInfoFile removal addresses root cause of non-deterministic builds.

Removing the tsBuildInfoFile configuration prevents TypeScript from generating .tsbuildinfo files with timestamps and build metadata that vary between builds, directly addressing the checksum failures described in the PR objectives.

packages/hdwallet-core/tsconfig.json (1)

5-5: LGTM — Core package tsBuildInfoFile removal ensures consistent behavior across monorepo.

Since packages/hdwallet-core is a foundational package, removing tsBuildInfoFile here ensures all dependent packages benefit from deterministic builds.

packages/hdwallet-portis/tsconfig.json (1)

5-5: LGTM.

Consistent with the tsBuildInfoFile removal pattern across all packages.

packages/hdwallet-ledger/tsconfig.json (1)

5-5: LGTM.

Consistent tsBuildInfoFile removal across the monorepo.

packages/hdwallet-keepkey-chromeusb/package.json (1)

3-3: LGTM — Clean/prepublishOnly changes correctly revert problematic build behavior.

The clean script now targets only tsconfig.tsbuildinfo (instead of node_modules), and prepublishOnly now calls yarn clean before yarn build to ensure tsbuildinfo files don't persist in the published tarball. This directly addresses the non-deterministic checksum failures. Version and dependency updates are consistent with the coordinated 1.62.15 bump across the monorepo.

Also applies to: 13-14, 17-18

packages/hdwallet-keepkey/tsconfig.json (1)

5-5: LGTM.

Consistent tsBuildInfoFile removal across the monorepo.

packages/hdwallet-keepkey-nodewebusb/package.json (1)

3-3: LGTM — Script and dependency changes mirror the fix across related packages.

Clean and prepublishOnly scripts are correctly reverted to prevent tsbuildinfo artifacts in published tarballs. Version and dependencies consistently updated to 1.62.15.

Also applies to: 13-14, 17-18

packages/hdwallet-vultisig/tsconfig.json (1)

5-5: LGTM.

Consistent tsBuildInfoFile removal across the monorepo.

packages/hdwallet-gridplus/tsconfig.json (1)

1-10: Correctly removes tsBuildInfoFile to prevent non-deterministic builds.

Removing the tsBuildInfoFile setting prevents TypeScript from generating .tsbuildinfo artifacts containing timestamps and absolute paths. This directly addresses the root cause of the non-deterministic tarball checksums.

packages/hdwallet-trezor-connect/package.json (1)

3-3: Version and build-hygiene changes align with PR objectives.

The version bump to 1.62.15, combined with the restored build scripts, addresses the non-deterministic tarball issue. The clean script now explicitly removes tsconfig.tsbuildinfo, and prepublishOnly enforces a clean build before publication. Internal dependencies are consistently updated to 1.62.15 across the monorepo.

Also applies to: 13-14, 17-18

packages/hdwallet-vultisig/package.json (1)

3-3: Consistent application of version and build-hygiene fixes.

Changes follow the same coordinated pattern: version to 1.62.15, clean script removes dist and tsconfig.tsbuildinfo, prepublishOnly enforces clean builds, and internal dependencies align to 1.62.15.

Also applies to: 13-14, 20-20

packages/hdwallet-ledger/package.json (1)

3-3: Build-hygiene and version updates are consistent with monorepo-wide revert.

Version bumped to 1.62.15, build scripts restored to remove tsconfig.tsbuildinfo and enforce clean builds. Internal dependencies updated accordingly.

Also applies to: 14-15, 28-28

packages/hdwallet-native-vault/package.json (1)

3-3: Version and build-script updates maintain monorepo consistency.

Changes align with the coordinated revert across all packages: version to 1.62.15, clean script removes tsconfig.tsbuildinfo, prepublishOnly enforces clean builds, and internal dependencies updated to 1.62.15.

Also applies to: 13-14, 18-18

packages/hdwallet-native/package.json (1)

3-3: Core package changes are consistent with monorepo-wide revert.

Version to 1.62.15, build scripts restored to remove tsconfig.tsbuildinfo before publishing, and dependencies updated accordingly. As a foundational package, this update cascades to dependent packages in the monorepo.

Also applies to: 13-14, 20-20

packages/hdwallet-core/package.json (1)

3-3: Root package correctly applies build-hygiene revert.

Version bumped to 1.62.15 with build scripts restored to remove tsconfig.tsbuildinfo and enforce clean builds. As the foundational package, this update cascades to all downstream packages in the monorepo, ensuring consistent resolution of the non-deterministic build issue.

Also applies to: 13-14

packages/hdwallet-keepkey-webusb/package.json (1)

3-3: Final package correctly applies coordinated revert.

Version to 1.62.15, build scripts restored to enforce clean builds without tsconfig.tsbuildinfo artifacts, and dependencies updated to maintain version alignment across the monorepo.

Also applies to: 13-14, 17-18

packages/hdwallet-coinbase/package.json (1)

3-3: Version bump and build hygiene fixes address the root cause of non-deterministic builds.

The .tsbuildinfo files are non-deterministic due to timestamps and absolute paths, causing checksum mismatches during package publication. These changes correctly:

  • Restore clean script to remove both dist and tsconfig.tsbuildinfo
  • Update prepublishOnly to run yarn clean && yarn build, ensuring tsbuildinfo is deleted before tarball creation
  • Bump version consistently with dependency updates

Verify that corresponding tsconfig.json files were also updated to remove the "tsBuildInfoFile" setting that was introduced in PR #741. This PR should revert all three changes from that PR: removing tsBuildInfoFile from tsconfig.json, restoring the clean script, and restoring prepublishOnly.

Also applies to: 13-14, 18-18

packages/hdwallet-trezor/package.json (1)

3-3: Changes are consistent with the broader fix across the monorepo.

The version bump, script updates, and dependency alignment follow the same pattern as other packages in this PR, ensuring uniform build behavior across all hdwallet packages.

Also applies to: 14-15, 20-20

packages/hdwallet-phantom/package.json (1)

3-3: Consistent with the established revert pattern.

Also applies to: 13-14, 18-18

packages/hdwallet-gridplus/package.json (1)

3-3: Fix targets the package with reported checksum failures.

@shapeshiftoss/hdwallet-gridplus was specifically mentioned in the PR objectives as having checksum failures during yarn install --frozen-lockfile. These changes address that root cause consistently.

Also applies to: 14-15, 23-23

packages/hdwallet-portis/package.json (1)

3-3: Follows the established revert pattern.

Also applies to: 13-14, 19-19

packages/hdwallet-ledger-webusb/package.json (1)

3-3: Updates both related hdwallet dependencies consistently.

This package correctly updates both @shapeshiftoss/hdwallet-core and @shapeshiftoss/hdwallet-ledger to 1.62.15, along with the build hygiene fixes.

Also applies to: 13-14, 23-24

packages/hdwallet-keepkey/package.json (1)

3-3: Consistent with the revert pattern across the monorepo.

Also applies to: 14-15, 24-24

packages/hdwallet-keplr/package.json (1)

3-3: Completes the consistent revert pattern across all provided packages.

Verify completeness across the monorepo: The PR objectives mention 24 packages require updating. Confirm that:

  1. All 24 packages have been updated with the same version and script changes
  2. Corresponding tsconfig.json files in each package have had the "tsBuildInfoFile" setting removed
  3. The build artifacts are now deterministic (SHA256 checksums stable across multiple builds)

This can be validated by running the build and pack operations multiple times on the affected packages and confirming consistent tarball checksums.

Also applies to: 13-14, 20-20

packages/hdwallet-metamask-multichain/package.json (1)

3-3: Correct reversion of PR #741 changes.

The package.json correctly reverts the three problematic changes:

  • version bumped to 1.62.15 ✓
  • clean script restored to remove tsconfig.tsbuildinfo
  • prepublishOnly restored to yarn clean && yarn build
  • dependency updated to 1.62.15 ✓

Also applies to: 13-14, 20-20

packages/hdwallet-walletconnect/package.json (1)

3-3: Correct reversion of PR #741 changes.

All three changes from PR #741 have been correctly reverted, maintaining consistency with other packages in this PR.

Also applies to: 13-13, 15-15, 18-18

packages/hdwallet-keepkey-nodehid/package.json (1)

3-3: Correct reversion of PR #741 changes.

The three problematic changes have been correctly reverted with consistent version bumps.

Also applies to: 13-14, 17-17

packages/hdwallet-keepkey-tcp/package.json (1)

3-3: Correct reversion of PR #741 changes.

All script changes reverted and internal dependencies updated consistently.

Also applies to: 13-14, 17-18

packages/hdwallet-ledger-webhid/package.json (1)

3-3: Correct reversion of PR #741 changes.

Script reversions and dependency updates align with PR objectives and other packages.

Also applies to: 13-14, 21-22

packages/hdwallet-walletconnectV2/package.json (1)

3-3: Correct reversion of PR #741 changes.

All three changes have been reverted consistently with other packages.

Also applies to: 13-13, 15-15, 18-18

packages/hdwallet-keepkey-electron/package.json (1)

3-3: Correct reversion of PR #741 changes.

All expected reversions are present with consistent version bumps.

Also applies to: 13-14, 17-17

integration/package.json (2)

3-3: Correct dependency updates for integration package.

The integration package (private, non-publishable) correctly updates all 10 internal dependencies to 1.62.15. Its clean script is appropriately left unchanged, as this package is not published and doesn't require the build metadata cleanup that public packages need.

Also applies to: 14-23


1-28: Verify tsconfig.json files have tsBuildInfoFile removed.

The PR objectives specify that "tsBuildInfoFile": "./dist/tsconfig.tsbuildinfo" should be removed from all 24 packages' tsconfig.json files. The package.json reversions are correctly in place, but the tsconfig.json changes (first of the three changes from PR #741) are not visible in the provided files.

Please confirm that all tsconfig.json files across the 24 packages have also had the tsBuildInfoFile setting removed to fully resolve the non-deterministic build issue.

examples/sandbox/package.json (3)

3-3: Version bump to 1.62.15 aligns with PR objectives.

The version bump is consistent with the fix for non-deterministic builds—this is the corrected version after reverting the problematic changes from PR #741.


15-32: Dependency versions updated consistently across all hdwallet packages.

All 18 @shapeshiftoss/hdwallet-* packages are correctly bumped to 1.62.15, maintaining internal consistency within the monorepo.


10-10: Verification confirms all three revert changes from PR #741 were successfully applied to main packages.

The shell script results confirm:

  1. tsBuildInfoFile removed: No matches found in package tsconfig.json files
  2. Clean scripts restored: All sampled main packages show "rm -rf dist tsconfig.tsbuildinfo" (hdwallet-core, hdwallet-ledger, hdwallet-keepkey)
  3. prepublishOnly restored: All sampled main packages show "yarn clean && yarn build"

The PR objectives have been met. The sandbox example's different clean script ("rm -rf dist node_modules public") is appropriate for an example package and does not contradict the main package reversions.


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 and usage tips.

@gomesalexandre gomesalexandre marked this pull request as ready for review November 28, 2025 10:06
@gomesalexandre gomesalexandre requested a review from a team as a code owner November 28, 2025 10:06
@gomesalexandre gomesalexandre changed the title fix: make hdwallet great again (maybe) fix: make hdwallet great again Nov 28, 2025
@gomesalexandre
Copy link
Contributor Author

Yeeting this as fix confirmed

@gomesalexandre gomesalexandre merged commit 040fd1f into master Nov 28, 2025
3 checks passed
@gomesalexandre gomesalexandre deleted the fix_make_hdwallet_great_again branch November 28, 2025 10:23
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