Skip to content

Use @ecency/sdk/wallets in the apps and remove the @ecency/wallets package - #2066

Merged
feruzm merged 5 commits into
developfrom
feat/drop-wallets-package
Nov 12, 2026
Merged

feruzm merged 5 commits into
developfrom
feat/drop-wallets-package

Conversation

@feruzm

@feruzm feruzm commented Nov 12, 2026

Copy link
Copy Markdown
Member

Closes #2062 (PR B of 2; PR A was #2063).

Release labels: none

No package source changes here, so this PR needs no release.

Do not add a generic patch, minor or major label. The label workflow runs the develop copy of auto-changeset.sh, which still lists wallets. Because this PR touches packages/wallets, a generic label would write a changeset for a package that no longer exists, and changeset version would fail.

What changes

Apps

  • apps/web and apps/self-hosted import wallet code from @ecency/sdk/wallets. Test mocks are switched with them.
  • The export set is identical to the shim's, so this is a pure specifier change.

Package and tooling

  • packages/wallets is deleted. @ecency/wallets@7.0.1, the last release, stays on npm as a re-export shim.
  • It is removed from:
    • both Dockerfiles, packages.yml, self-hosted.yml and the auto-changeset label gate;
    • auto-changeset.sh and the fork release validator. Its path allowlist no longer accepts packages/wallets, with a new test case;
    • root scripts, .gitignore, pnpm-workspace.yaml (scryptlib) and the lockfile;
    • next.config.js transpilePackages. @ecency/sdk already covers the subpath.

Labels

  • .github/labels.yml drops patch:wallets and minor:wallets. The label sync deletes them on merge; no open PR carries them.
  • It adds javascript, which Dependabot applies, so the same sync does not delete it.
  • The sync also creates documentation (listed in the file since January but not live) and sets the dependencies description to the file's text.

Docs

  • Package lists, build commands, the architecture diagram, the test rules and PUBLISHING.md are updated.
  • Four Markdown notes still name @ecency/wallets on purpose: they say it is deprecated in favour of @ecency/sdk/wallets.

Test plan

  • Guard spec, test first: packages/sdk/test/no-wallets-package.spec.ts fails if packages/wallets exists, or if app source, a manifest, a Dockerfile, a workflow, a CI script, next.config.js or the lockfile references @ecency/wallets or packages/wallets. Markdown is excluded so the deprecation notes can stay.
    • Red before the change: 56 references found.
    • Green after the change.
    • Mutation-checked: one re-added import fails it.
  • Fork release validator: a new reject case for a packages/wallets/dist file fails on the old allowlist and passes now.
  • Suites, all exit 0:
    • apps/web vitest run: 6367 tests.
    • Self-hosted tests: 1032. Self-hosted build: passes.
    • SDK vitest run: 1443 tests.
    • apps/web and SDK tsc --noEmit.
    • test-auto-changeset.sh and test-fork-release-patch.sh.
    • pnpm install --frozen-lockfile.

Point every apps/web and apps/self-hosted import and spec mock at the
SDK wallets entry instead of the @ecency/wallets shim, and drop the shim
from transpilePackages. Refs #2062
The wallets code ships as @ecency/sdk/wallets, so delete packages/wallets
and drop it from the app dependencies, Dockerfiles, the packages and
self-hosted workflows, the auto-changeset package list and labels, the
root scripts and the lockfile. scryptlib leaves allowBuilds: nothing in
the lockfile needs it any more.

A new SDK spec fails if app source, a manifest, a Dockerfile, a
workflow or the lockfile references the removed package again.
Refs #2062
List three publishable packages, describe wallet code as the
@ecency/sdk/wallets entry, note that @ecency/wallets is deprecated on
npm, point the test docs at the @ecency/sdk/wallets global mock and fix
the external chain list (BTC, ETH, BNB, SOL). Refs #2062
…label

The fork release validator still allowed packages/wallets dist, manifest and
changelog paths, so a release artifact could recreate the removed package;
a test case now covers it. The javascript label that Dependabot applies is
added to labels.yml, so the label sync triggered by this change does not
delete it.
@qodo-code-review

Copy link
Copy Markdown

ⓘ Qodo reviews are paused because your trial has ended. Ask your workspace admin to add credits to resume reviews. Manage billing

@chatgpt-codex-connector

chatgpt-codex-connector Bot commented Nov 12, 2026 •

Copy link
Copy Markdown
Codex Review Summary: ✅ Completed

This comment shows the latest Codex review activity on this pull request.

Review Status Commit Review trigger
📝 Code Review ✅ Completed 2026-11-12T16:54:00.222065Z 3255846 PR opened
ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review" or "@codex security review".

Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings.

@coderabbitai

coderabbitai Bot commented Nov 12, 2026

Copy link
Copy Markdown
Contributor

Warning

Review limit reached

You've used all free OSS reviews for now. Wait for the free limit to reset to keep reviewing this public repository.

Next included review available in 3 minutes.

Check out review usage here.

View limit details

Limit details: You’ve used the included review currently available.

Learn how review limits work.

Review configuration:

Run configuration

  • Source mode: Auto
  • Repository: Unavailable
  • Branch: Unavailable
  • File: No configuration file from this repository applied
  • Commit: Unavailable
  • Layers: Organization UI
  • Review profile: CHILL
  • Plan: Advanced
  • Run ID: 9627f890-bb3d-415c-adbb-2117c592d3b0
Commits

Reviewing files that changed from the base of the PR and between fb0dd66 and 3255846.

Files ignored due to path filters: 8

  • packages/wallets/dist/browser/index.d.ts is excluded by !**/dist/**
  • packages/wallets/dist/browser/index.js is excluded by !**/dist/**
  • packages/wallets/dist/browser/index.js.map is excluded by !**/dist/**, !**/*.map
  • packages/wallets/dist/node/index.cjs is excluded by !**/dist/**
  • packages/wallets/dist/node/index.cjs.map is excluded by !**/dist/**, !**/*.map
  • packages/wallets/dist/node/index.mjs is excluded by !**/dist/**
  • packages/wallets/dist/node/index.mjs.map is excluded by !**/dist/**, !**/*.map
  • pnpm-lock.yaml is excluded by !**/pnpm-lock.yaml
Files selected for processing: 72

  • .claude/rules/packages.md
  • .claude/rules/web-testing.md
  • .claude/skills/add-test/SKILL.md
  • .github/CHANGESET_LABELS.md
  • .github/PUBLISHING.md
  • .github/labels.yml
  • .github/scripts/auto-changeset.sh
  • .github/scripts/test-fork-release-patch.sh
  • .github/scripts/validate-fork-release-patch.sh
  • .github/workflows/auto-changeset.yml
  • .github/workflows/packages.yml
  • .github/workflows/self-hosted.yml
  • .gitignore
  • CLAUDE.md
  • README.md
  • apps/self-hosted/Dockerfile
  • apps/self-hosted/package.json
  • apps/self-hosted/src/features/tipping/components/tipping-currency-card.tsx
  • apps/self-hosted/src/features/tipping/components/tipping-currency-cards.tsx
  • apps/self-hosted/src/features/tipping/utils/tip-transaction.ts
  • apps/web/Dockerfile
  • apps/web/next.config.js
  • apps/web/package.json
  • apps/web/src/app/(dynamicPages)/profile/[username]/permissions/_components/add-keys-steps/step-1-authenticate.tsx
  • apps/web/src/app/(dynamicPages)/profile/[username]/permissions/_components/add-keys-steps/step-4-confirm.tsx
  • apps/web/src/app/(dynamicPages)/profile/[username]/permissions/_components/manage-key-password-dialog.tsx
  • apps/web/src/app/(dynamicPages)/profile/[username]/wallet/(token)/[token]/page.tsx
  • apps/web/src/app/(dynamicPages)/profile/[username]/wallet/(token)/_components/profile-wallet-token-actions.tsx
  • apps/web/src/app/(dynamicPages)/profile/[username]/wallet/_components/profile-wallet-external-banner.tsx
  • apps/web/src/app/(dynamicPages)/profile/[username]/wallet/_components/profile-wallet-summary.tsx
  • apps/web/src/app/(dynamicPages)/profile/[username]/wallet/_components/profile-wallet-token-picker.tsx
  • apps/web/src/app/(dynamicPages)/profile/[username]/wallet/_components/profile-wallet-tokens-list-item.tsx
  • apps/web/src/app/(dynamicPages)/profile/[username]/wallet/_components/profile-wallet-tokens-list.tsx
  • apps/web/src/app/onboard-friend/[...slugs]/_components/onboard-asking.tsx
  • apps/web/src/app/signup/invited/page.tsx
  • apps/web/src/app/signup/wallet/_components/steps/metamask-account-creating.tsx
  • apps/web/src/app/signup/wallet/_components/steps/metamask-connect.tsx
  • apps/web/src/app/signup/wallet/_components/steps/signup-wallet-intro.tsx
  • apps/web/src/app/signup/wallet/_page.tsx
  • apps/web/src/app/signup/wallet/consts/currencies-meta-data.ts
  • apps/web/src/app/wallet/setup-external/_components/setup-external-import.tsx
  • apps/web/src/app/wallet/setup-external/_components/setup-external-metamask.tsx
  • apps/web/src/features/shared/entry-tip-btn/index.tsx
  • apps/web/src/features/shared/login/hooks/use-login-by-key.ts
  • apps/web/src/features/trading-view/index.tsx
  • apps/web/src/features/ui/input/key-input.tsx
  • apps/web/src/features/wallet/consts/currencies-meta-data.ts
  • apps/web/src/features/wallet/external-transfer/external-transfer-dialog.tsx
  • apps/web/src/features/wallet/hooks/use-download-keys.ts
  • apps/web/src/features/wallet/hooks/use-get-token-logo-image.tsx
  • apps/web/src/specs/features/permissions/add-keys-flow.spec.tsx
  • apps/web/src/specs/features/permissions/manage-key-password-dialog.spec.tsx
  • apps/web/src/specs/features/permissions/step-1-authenticate.spec.tsx
  • apps/web/src/specs/features/permissions/step-4-confirm-preflight.spec.tsx
  • apps/web/src/specs/features/shared/auth-upgrade-dialog.spec.tsx
  • apps/web/src/specs/features/signup/invited-page.spec.tsx
  • apps/web/src/specs/features/ui/key-input.spec.tsx
  • apps/web/src/specs/setup-any-spec.ts
  • apps/web/src/utils/onBoard-helper.ts
  • package.json
  • packages/sdk/test/build-shape.spec.ts
  • packages/sdk/test/no-wallets-package.spec.ts
  • packages/sdk/test/wallets-shim.spec.ts
  • packages/sdk/tsup.config.ts
  • packages/wallets/CHANGELOG.md
  • packages/wallets/README.md
  • packages/wallets/eslint.config.mjs
  • packages/wallets/package.json
  • packages/wallets/src/index.ts
  • packages/wallets/tsconfig.json
  • packages/wallets/tsup.config.ts
  • pnpm-workspace.yaml
  • 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

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 325584671b

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment on lines +54 to +56
return REMOVED.filter((needle) => text.includes(needle)).map((needle) => `${f}: ${needle}`);
});
expect(hits).toEqual([]);

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Exclude the intentional removed-package fixture from the guard

The new guard always fails on this commit because codeAndTooling() includes .github/scripts/test-fork-release-patch.sh, whose new negative-test fixture deliberately contains packages/wallets/dist on lines 58–59. Reproducing the scan returns [".github/scripts/test-fork-release-patch.sh: packages/wallets"], so this assertion breaks the SDK test suite even though no dependency on the removed package remains. Exclude this intentional fixture or construct its removed-package path without a literal match.

Useful? React with 👍 / 👎.

@qodo-free-for-open-source-projects

Copy link
Copy Markdown

PR Summary by Qodo

Move app wallet imports to the SDK and remove the wallets package

✨ Enhancement ⚙️ Configuration changes 🧪 Tests 📝 Documentation 🕐 40+ Minutes

Grey Divider

AI Description

• Switch both apps and their test mocks to the existing @ecency/sdk/wallets entry.
Diagram

graph TD
  CI["CI and release"] --> WS["Workspace packages"] --> SDK["SDK main"]
  WEB["Web app"] --> WAL["SDK wallets"] --> SDK
  SELF["Self-hosted app"] --> WAL
Loading
High-Level Assessment

Use the already-published SDK subpath directly. Retaining a workspace shim would preserve redundant build and release machinery; publishing a new shim release is unnecessary because the deprecated final release remains on npm. Review the removal of release-tooling references alongside the app imports.

Files changed (64) +183 / -194

Bug fix (1) +2 / -2
validate-fork-release-patch.shDisallow wallets paths in fork release patches +2/-2

Disallow wallets paths in fork release patches

• Removes wallets from the permitted artifact paths and internal dependency version-change allowlist.

.github/scripts/validate-fork-release-patch.sh

Refactor (30) +33 / -33
tipping-currency-card.tsxResolve tipping asset queries through SDK wallets +1/-1

Resolve tipping asset queries through SDK wallets

• Changes the asset-info query import to the SDK wallets subpath.

apps/self-hosted/src/features/tipping/components/tipping-currency-card.tsx

tipping-currency-cards.tsxResolve tipping wallet lists through SDK wallets +1/-1

Resolve tipping wallet lists through SDK wallets

• Changes the wallet-list query import to the SDK wallets subpath.

apps/self-hosted/src/features/tipping/components/tipping-currency-cards.tsx

tip-transaction.tsResolve tip transaction queries through SDK wallets +1/-1

Resolve tip transaction queries through SDK wallets

• Changes the asset-info query import to the SDK wallets subpath.

apps/self-hosted/src/features/tipping/utils/tip-transaction.ts

step-1-authenticate.tsxImport authentication key derivation from SDK wallets +1/-1

Import authentication key derivation from SDK wallets

• Redirects key derivation and detection imports to the SDK wallets subpath.

apps/web/src/app/(dynamicPages)/profile/[username]/permissions/_components/add-keys-steps/step-1-authenticate.tsx

step-4-confirm.tsxImport confirmation key derivation from SDK wallets +1/-1

Import confirmation key derivation from SDK wallets

• Redirects master-password key derivation to the SDK wallets subpath.

apps/web/src/app/(dynamicPages)/profile/[username]/permissions/_components/add-keys-steps/step-4-confirm.tsx

manage-key-password-dialog.tsxImport password-dialog key derivation from SDK wallets +1/-1

Import password-dialog key derivation from SDK wallets

• Redirects master-password key derivation to the SDK wallets subpath.

apps/web/src/app/(dynamicPages)/profile/[username]/permissions/_components/manage-key-password-dialog.tsx

page.tsxImport token-page currency metadata from SDK wallets +1/-1

Import token-page currency metadata from SDK wallets

• Changes the wallet currency import to the SDK wallets subpath.

apps/web/src/app/(dynamicPages)/profile/[username]/wallet/(token)/[token]/page.tsx

profile-wallet-token-actions.tsxMove token-action wallet imports to the SDK +1/-1

Move token-action wallet imports to the SDK

• Redirects currency types and token-operation queries to the SDK wallets subpath.

apps/web/src/app/(dynamicPages)/profile/[username]/wallet/(token)/_components/profile-wallet-token-actions.tsx

profile-wallet-external-banner.tsxImport external-banner currency from SDK wallets +1/-1

Import external-banner currency from SDK wallets

• Changes the wallet currency import to the SDK wallets subpath.

apps/web/src/app/(dynamicPages)/profile/[username]/wallet/_components/profile-wallet-external-banner.tsx

profile-wallet-summary.tsxImport summary wallet-list queries from SDK wallets +1/-1

Import summary wallet-list queries from SDK wallets

• Redirects the wallet-list query import to the SDK wallets subpath.

apps/web/src/app/(dynamicPages)/profile/[username]/wallet/_components/profile-wallet-summary.tsx

profile-wallet-token-picker.tsxMove token-picker wallet imports to the SDK +1/-1

Move token-picker wallet imports to the SDK

• Redirects wallet lists, token lists and metadata-saving imports to the SDK wallets subpath.

apps/web/src/app/(dynamicPages)/profile/[username]/wallet/_components/profile-wallet-token-picker.tsx

profile-wallet-tokens-list-item.tsxImport token-list-item queries from SDK wallets +1/-1

Import token-list-item queries from SDK wallets

• Redirects token-list and operation queries to the SDK wallets subpath.

apps/web/src/app/(dynamicPages)/profile/[username]/wallet/_components/profile-wallet-tokens-list-item.tsx

profile-wallet-tokens-list.tsxImport wallet token lists from SDK wallets +1/-1

Import wallet token lists from SDK wallets

• Redirects wallet and token-list queries to the SDK wallets subpath.

apps/web/src/app/(dynamicPages)/profile/[username]/wallet/_components/profile-wallet-tokens-list.tsx

onboard-asking.tsxDerive onboarding keys through SDK wallets +1/-1

Derive onboarding keys through SDK wallets

• Changes the master-password key derivation import to the SDK wallets subpath.

apps/web/src/app/onboard-friend/[...slugs]/_components/onboard-asking.tsx

page.tsxDerive invited-signup keys through SDK wallets +1/-1

Derive invited-signup keys through SDK wallets

• Changes the master-password key derivation import to the SDK wallets subpath.

apps/web/src/app/signup/invited/page.tsx

metamask-account-creating.tsxImport MetaMask signup helpers from SDK wallets +1/-1

Import MetaMask signup helpers from SDK wallets

• Redirects private API and Hive Snap helpers to the SDK wallets subpath.

apps/web/src/app/signup/wallet/_components/steps/metamask-account-creating.tsx

metamask-connect.tsxImport MetaMask connection helpers from SDK wallets +1/-1

Import MetaMask connection helpers from SDK wallets

• Redirects external balance and multichain address helpers to the SDK wallets subpath.

apps/web/src/app/signup/wallet/_components/steps/metamask-connect.tsx

signup-wallet-intro.tsxImport signup currency from SDK wallets +1/-1

Import signup currency from SDK wallets

• Changes the wallet currency import to the SDK wallets subpath.

apps/web/src/app/signup/wallet/_components/steps/signup-wallet-intro.tsx

_page.tsxImport signup-page currency from SDK wallets +1/-1

Import signup-page currency from SDK wallets

• Changes the wallet currency import to the SDK wallets subpath.

apps/web/src/app/signup/wallet/_page.tsx

currencies-meta-data.tsUse SDK wallets currencies in signup metadata +1/-1

Use SDK wallets currencies in signup metadata

• Changes the currency enum import to the SDK wallets subpath.

apps/web/src/app/signup/wallet/consts/currencies-meta-data.ts

setup-external-import.tsxImport external-wallet setup helpers from the SDK +1/-1

Import external-wallet setup helpers from the SDK

• Redirects currency, private API and wallet metadata helpers to the SDK wallets subpath.

apps/web/src/app/wallet/setup-external/_components/setup-external-import.tsx

setup-external-metamask.tsxImport MetaMask setup helpers from SDK wallets +1/-1

Import MetaMask setup helpers from SDK wallets

• Redirects Hive Snap and multichain address helpers to the SDK wallets subpath.

apps/web/src/app/wallet/setup-external/_components/setup-external-metamask.tsx

use-login-by-key.tsLazy-load login key derivation from SDK wallets +2/-2

Lazy-load login key derivation from SDK wallets

• Redirects the dynamic key-derivation import while retaining lazy loading for password and seed logins.

apps/web/src/features/shared/login/hooks/use-login-by-key.ts

index.tsxImport trading-view currency from SDK wallets +1/-1

Import trading-view currency from SDK wallets

• Changes the wallet currency import to the SDK wallets subpath.

apps/web/src/features/trading-view/index.tsx

key-input.tsxLazy-load input key derivation from SDK wallets +2/-2

Lazy-load input key derivation from SDK wallets

• Redirects the dynamic derivation import while retaining the existing non-WIF lazy-load boundary.

apps/web/src/features/ui/input/key-input.tsx

currencies-meta-data.tsUse SDK wallets currencies in wallet metadata +1/-1

Use SDK wallets currencies in wallet metadata

• Changes the currency enum import to the SDK wallets subpath.

apps/web/src/features/wallet/consts/currencies-meta-data.ts

external-transfer-dialog.tsxImport external-transfer helpers from SDK wallets +2/-2

Import external-transfer helpers from SDK wallets

• Redirects gas, amount, balance and token-price helpers to the SDK wallets subpath.

apps/web/src/features/wallet/external-transfer/external-transfer-dialog.tsx

use-download-keys.tsImport downloaded-key derivation from SDK wallets +1/-1

Import downloaded-key derivation from SDK wallets

• Changes the master-password key derivation import to the SDK wallets subpath.

apps/web/src/features/wallet/hooks/use-download-keys.ts

use-get-token-logo-image.tsxImport token-logo queries from SDK wallets +1/-1

Import token-logo queries from SDK wallets

• Changes the token-list query import to the SDK wallets subpath.

apps/web/src/features/wallet/hooks/use-get-token-logo-image.tsx

onBoard-helper.tsImport onboarding key derivation from SDK wallets +1/-1

Import onboarding key derivation from SDK wallets

• Changes the master-password key derivation import to the SDK wallets subpath.

apps/web/src/utils/onBoard-helper.ts

Tests (11) +77 / -11
test-fork-release-patch.shTest rejection of recreated wallets artifacts +10/-2

Test rejection of recreated wallets artifacts

• Adds a case that rejects a staged wallets dist file. Uses render-helper for internal dependency-range fixtures instead of the removed package.

.github/scripts/test-fork-release-patch.sh

add-keys-flow.spec.tsxMock SDK wallets in the add-keys flow spec +1/-1

Mock SDK wallets in the add-keys flow spec

• Retargets the key-derivation mock to the module imported by the app.

apps/web/src/specs/features/permissions/add-keys-flow.spec.tsx

manage-key-password-dialog.spec.tsxMock SDK wallets in the password-dialog spec +1/-1

Mock SDK wallets in the password-dialog spec

• Retargets the master-password derivation mock to the SDK wallets subpath.

apps/web/src/specs/features/permissions/manage-key-password-dialog.spec.tsx

step-1-authenticate.spec.tsxMock SDK wallets in authentication-step tests +1/-1

Mock SDK wallets in authentication-step tests

• Retargets key derivation and detection mocks to the SDK wallets subpath.

apps/web/src/specs/features/permissions/step-1-authenticate.spec.tsx

step-4-confirm-preflight.spec.tsxMock SDK wallets in confirmation preflight tests +1/-1

Mock SDK wallets in confirmation preflight tests

• Retargets the master-password derivation mock to the SDK wallets subpath.

apps/web/src/specs/features/permissions/step-4-confirm-preflight.spec.tsx

auth-upgrade-dialog.spec.tsxCorrect auth-upgrade mock documentation +1/-1

Correct auth-upgrade mock documentation

• Updates the comment naming the two globally mocked SDK module IDs.

apps/web/src/specs/features/shared/auth-upgrade-dialog.spec.tsx

invited-page.spec.tsxMock SDK wallets in invited-signup tests +1/-1

Mock SDK wallets in invited-signup tests

• Retargets the master-password derivation mock to the SDK wallets subpath.

apps/web/src/specs/features/signup/invited-page.spec.tsx

key-input.spec.tsxMock SDK wallets in key-input tests +1/-1

Mock SDK wallets in key-input tests

• Retargets key derivation and detection mocks to the SDK wallets subpath.

apps/web/src/specs/features/ui/key-input.spec.tsx

setup-any-spec.tsGlobally mock the SDK wallets module +1/-1

Globally mock the SDK wallets module

• Moves the global wallet stub to the SDK wallets module ID used by app imports.

apps/web/src/specs/setup-any-spec.ts

build-shape.spec.tsClarify SDK wallets build-shape test context +1/-1

Clarify SDK wallets build-shape test context

• Updates a comment to refer to the former standalone package without implying it remains in the workspace.

packages/sdk/test/build-shape.spec.ts

no-wallets-package.spec.tsGuard against reintroducing the wallets package +58/-0

Guard against reintroducing the wallets package

• Asserts that the package manifest is absent and scans tracked app source and tooling for removed package references. Excludes Markdown so deprecation notes remain possible.

packages/sdk/test/no-wallets-package.spec.ts

Documentation (9) +57 / -52
packages.mdDocument wallets as an SDK entry +10/-7

Document wallets as an SDK entry

• Clarifies that the standalone package is no longer in the repository, corrects the supported external-chain list, and removes its publish command. Updates package test guidance.

.claude/rules/packages.md

web-testing.mdDocument the SDK wallets test mock +2/-2

Document the SDK wallets test mock

• Names the SDK wallets subpath as a separate globally mocked module ID.

.claude/rules/web-testing.md

SKILL.mdPoint test guidance at the SDK wallets mock +1/-1

Point test guidance at the SDK wallets mock

• Changes the wallet mock reference used in test-writing guidance.

.claude/skills/add-test/SKILL.md

CHANGESET_LABELS.mdRemove wallets-specific release label guidance +4/-6

Remove wallets-specific release label guidance

• Drops wallets bump labels and replaces wallets with render-helper in multi-package examples.

.github/CHANGESET_LABELS.md

PUBLISHING.mdDescribe the three remaining publishable packages +11/-7

Describe the three remaining publishable packages

• Replaces wallets build and publish instructions with UI instructions and documents the deprecated npm package and SDK wallets entry.

.github/PUBLISHING.md

CLAUDE.mdUpdate repository architecture and command guidance +18/-20

Update repository architecture and command guidance

• Describes three publishable packages, the SDK wallets entry, and the corresponding build, development and publishing commands.

CLAUDE.md

README.mdUpdate workspace and wallet usage documentation +9/-7

Update workspace and wallet usage documentation

• Corrects the wallet-operation import example and documents the three-package workspace and remaining build and publish commands.

README.md

index.tsxCorrect lazy-loaded wallet dependency guidance +1/-1

Correct lazy-loaded wallet dependency guidance

• Updates the comment describing the tip dialog's wallet and crypto dependency chain.

apps/web/src/features/shared/entry-tip-btn/index.tsx

tsup.config.tsClarify SDK wallets build configuration history +1/-1

Clarify SDK wallets build configuration history

• Updates a comment about how the former standalone package shared the SDK entry.

packages/sdk/tsup.config.ts

Other (13) +14 / -96
labels.ymlRetire wallets labels and retain Dependabot's JavaScript label +5/-8

Retire wallets labels and retain Dependabot's JavaScript label

• Removes wallets-specific bump labels and declares the javascript label so label synchronization preserves it.

.github/labels.yml

auto-changeset.shExclude wallets from changeset package selection +2/-2

Exclude wallets from changeset package selection

• Removes wallets from the rebuild and changeset package list and adjusts the build-order comment.

.github/scripts/auto-changeset.sh

auto-changeset.ymlRemove wallets label triggers +0/-3

Remove wallets label triggers

• Stops wallets-specific patch, minor and major labels from triggering the changeset job.

.github/workflows/auto-changeset.yml

packages.ymlStop building and publishing wallets separately +1/-38

Stop building and publishing wallets separately

• Removes wallets version detection, its aggregate change check, and its build and publish steps.

.github/workflows/packages.yml

self-hosted.ymlDrop wallets from self-hosted CI +0/-3

Drop wallets from self-hosted CI

• Removes wallets path triggers and the standalone wallets build step.

.github/workflows/self-hosted.yml

DockerfileRemove standalone wallets from the self-hosted image +1/-4

Remove standalone wallets from the self-hosted image

• Drops the wallets manifest and dependency-directory copies and its separate build step.

apps/self-hosted/Dockerfile

package.jsonRemove the self-hosted wallets dependency +0/-1

Remove the self-hosted wallets dependency

• Drops the standalone workspace dependency; the app retains its SDK dependency.

apps/self-hosted/package.json

DockerfileStop copying the wallets manifest into the web image +0/-1

Stop copying the wallets manifest into the web image

• Removes the deleted package manifest from the Docker dependency-install stage.

apps/web/Dockerfile

next.config.jsTranspile wallet code through the SDK package +4/-5

Transpile wallet code through the SDK package

• Removes the standalone wallets package from transpilePackages and updates guidance for SDK subpath imports.

apps/web/next.config.js

package.jsonRemove the web wallets dependency +0/-1

Remove the web wallets dependency

• Drops the standalone workspace dependency while retaining the SDK dependency.

apps/web/package.json

package.jsonRemove standalone wallets root scripts +1/-4

Remove standalone wallets root scripts

• Drops wallets build, development and publishing commands and removes the package from the aggregate library build.

package.json

pnpm-workspace.yamlRemove the unused scryptlib build allowance +0/-1

Remove the unused scryptlib build allowance

• Drops scryptlib from allowBuilds after removal of the standalone package.

pnpm-workspace.yaml

pnpm-lock.yamlRemove wallets workspace links and importer +0/-25

Remove wallets workspace links and importer

• Removes both app links to the standalone wallets package and its lockfile importer.

pnpm-lock.yaml

@qodo-free-for-open-source-projects

qodo-free-for-open-source-projects Bot commented Nov 12, 2026 •

Copy link
Copy Markdown

Code Review by Qodo

🐞 Bugs (0) 📘 Rule violations (0) 📎 Requirement gaps (1) 🎨 UX issues (0) 🔗 Cross-repo conflicts (0) 📜 Skill insights (0)

Grey Divider


Remediation recommended

1. Migration docs still name the removed wallets package 📎 Requirement gap ⚙ Maintainability
Description
Four Markdown files keep the literal @ecency/wallets scope name: the packages rule, the root
CLAUDE.md overview, the README pnpm section and PUBLISHING.md. The PR describes these as intentional
deprecation notes, but the migration rule's success criterion expects a repo-wide search outside
changelogs to return nothing after this PR. Until the notes are reworded or the exception is
recorded, that search and any audit built on it will keep matching the removed package name.
Code

CLAUDE.md[7]

+Ecency Vision is a Next.js 15-based web client for the Hive blockchain, organized as a pnpm monorepo workspace. The codebase consists of a main Next.js application (`apps/web`), a self-hosted blog SPA (`apps/self-hosted`), and three publishable packages (`@ecency/sdk`, `@ecency/render-helper`, `@ecency/ui`). Wallet and multi-chain code ships as the `@ecency/sdk/wallets` entry; the former `@ecency/wallets` package is deprecated on npm in favour of it.
Evidence
The rule requires that git grep "@ecency/wallets" outside changelogs return nothing after PR B.
The diff keeps the name in CLAUDE.md line 7, README.md around lines 202-205, .github/PUBLISHING.md
line 13, and .claude/rules/packages.md around lines 48-49. The PR description states these four
notes are intentional, so this is a documented deviation rather than an oversight.

Switch both consumers to the SDK and remove the old package
CLAUDE.md[7-7]

Agent prompt
The issue below was found during a code review. Follow the provided context and guidance below and implement a solution

## Issue description
Four Markdown files still contain the literal `@ecency/wallets` scope name as deprecation notes. The migration rule expects a repo-wide search outside changelogs to return nothing after this PR.
## Fix Focus Areas
- CLAUDE.md[7-7]
- README.md[199-206]
- .github/PUBLISHING.md[7-14]
- .claude/rules/packages.md[48-49]
## Recommended Fix
Either reword each note to refer to the standalone wallets package without the exact scope name, so a repo-wide grep comes back clean, or keep the notes and record an explicit exception against the migration rule for the deprecation wording.

ⓘ Copy this prompt and use it to remediate the issue with your preferred AI generation tools


Grey Divider

Tip of the day
💡 Did you know, you can open the rule or relationship behind a finding in one click

More tips ↗ | Customize Qodo ↗ | Qodo docs ↗

Grey Divider

Qodo Logo

@greptile-apps

greptile-apps Bot commented Nov 12, 2026 •

Copy link
Copy Markdown

RetriggerView in GreptileConfidence Score: 5/5

[Medium impact] The PR appears safe to merge; the previous test failure is fixed.

Summary

Both apps now import wallet code from @ecency/sdk/wallets. The PR removes the standalone package and updates build, release, and documentation references.

  • Both apps now import wallet features from the SDK wallets entry.
  • The repository no longer maintains the standalone wallets package.

Reviews (2) · Last reviewed commit: "Build the removed wallets path in pieces..." · Reviewed by Greptile

The new reject case wrote the removed package path literally, and the
no-wallets-package guard scans .github/scripts, so the SDK suite failed. The
fixture now builds the path from pieces, as the guard spec does; the guard
still flags a real reference in that script.
@feruzm
feruzm merged commit 3e39077 into develop Nov 12, 2026
12 of 13 checks passed
@feruzm
feruzm deleted the feat/drop-wallets-package branch November 12, 2026 17:05
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.

Move @ecency/wallets into the SDK as @ecency/sdk/wallets and retire the package

1 participant