Compare commits

..
135 Commits
Author SHA1 Message Date
grenadeandClaude Opus 5 160d97c19b build: declare @quantus/crypto as a ui-keyring dev dependency
Lock Threads / lock (push) Has been cancelled
The ML-DSA restore spec imports contextForSpec from it, and polkadot-dev's
build refuses a package whose sources import something undeclared.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_012uDUodEcRbBwNRi3UCmw8f
2026-09-16 21:13:56 +03:00
grenadeandClaude Opus 5 c7c23b7958 feat!: ui-keyring holds post-quantum keys only
Follows quantus/common#6, which removed ed25519, sr25519, ecdsa and ethereum
from the keyring (forks at 14.0.3-quantus.3).

- restoreAccount now goes through keyring.createFromJson instead of building
  the pair itself. A restored backup therefore gets the same refusal as every
  other entry point: a polkadot{.js} export of an sr25519 or ed25519 account is
  told "<type> keys are not quantum-safe and cannot be held here", not decoded.
- Version-0 JSON, which does not record its key type and so cannot be ML-DSA,
  is refused. Upstream guessed ed25519.
- isEthereum is always false; it's kept so callers written against upstream
  still read a boolean.
- loadAll already skips, with a warning, any stored account the keyring
  refuses, so a profile holding an old classical account still starts.

The spec that pinned sr25519 restore as unchanged is replaced by the two
refusals. ui-keyring 3.16.7-quantus.3, on the quantus.3 forks. yarn test 47
passing; lint clean.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_012uDUodEcRbBwNRi3UCmw8f
2026-09-16 21:13:01 +03:00
grenadeandClaude Opus 5 2d6a9ad1b3 build: consume the forks at 14.0.3-quantus.2
Lock Threads / lock (push) Has been cancelled
Picks up the networks fix (the quantum-safe gate moving out of the library list,
which made @polkadot/api importable again) and Heisenberg's corrected HEI symbol.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_012uDUodEcRbBwNRi3UCmw8f
2026-09-15 14:15:02 +03:00
rob thijssenandClaude Opus 5 18105d3ced build: pin the forked packages at 14.0.3-quantus.1
Follows the rename in quantus/common. The point is not tidiness: with the forks
numbered 14.0.3, a missing resolution here would have been satisfied from npm by
the unforked upstream package, installing cleanly and silently dropping Quantus
support. Now it fails with "No candidates found" — verified by removing the
@polkadot/networks resolution and running an install.

Refs quantus/extension#2

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_012uDUodEcRbBwNRi3UCmw8f
2026-09-15 11:28:03 +03:00
rob thijssenandClaude Opus 5 f2a1ab3a72 build: consume the forked @polkadot packages from the registry, drop the scaffolding
Removes every workaround the symlink approach needed, and reverts tsconfig to
upstream's exactly.

The three forked packages — @polkadot/{networks,util-crypto,keyring} — are now
pinned to Gitea tarball URLs in resolutions. @polkadot/util is not, because this
fork does not modify it; it comes from npm like the rest of the scope.

Tarball URLs rather than routing the @polkadot scope to Gitea, because the scope
is mostly *not* forked: routing it would send yarn looking for dozens of packages
that are not there. @quantus is routed as a whole scope in .yarnrc.yml, which is
safe because we own every name in it.

Four things go away, all of which existed for one reason — node resolves a portal
or link symlink to its realpath, after which @polkadot/util-crypto resolved inside
*common's* tree, where it is a workspace source directory with no exports map:

  - resolutions pointing four packages at ../common/packages/*/build
  - tsconfig.base.json `*.d.ts` path mappings, needed because NodeNext will not
    infer an extension for a bare path and looked for a `types` directory
  - tsconfig.json overriding those with a runtime `.js` view, because
    @polkadot/dev-ts reads that file and tried to import a declaration file as a
    module
  - --preserve-symlinks in the test scripts

Also drops fflate and @quantus/crypto from ui-keyring's devDependencies; they were
there only because `link:` does not install its target's dependencies.

`yarn lint` now reports 0 errors, down from 25 on pristine upstream. Those were
no-unsafe-assignment and no-unsafe-argument on values that were `any` purely
because the types did not resolve.

Refs quantus/extension#2, quantus/ui#1

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_012uDUodEcRbBwNRi3UCmw8f
2026-09-15 11:08:43 +03:00
rob thijssenandClaude Opus 5 ec1399f3f3 fix(ui-keyring): restoreAccount cannot rebuild an ML-DSA public key from an address
The mirror of the same mistake in keyring.createFromJson, fixed the same way.

restoreAccount passed `decodeAddress(json.address)` as the public key. For the
curve schemes that is correct — the address *is* the public key. An ML-DSA
account id is a one-way Poseidon2 hash, so this constructed a pair whose "public
key" was a hash of the public key. It did not throw; it produced a pair that was
simply wrong.

The public key is in `json.encoded`, still encrypted, and the pair is returned
*locked* with callers reading `pair.address` off it long before a password
appears. So it now passes an accountId — carried as data, used for the address
while locked, and checked against the real key once decodePkcs8 supplies one.
That check matters here as much as in the keyring: the address field sits outside
the encrypted blob, so a tampered one decodes cleanly and yields an account
displaying an address its key cannot sign for.

The 'ed25519' fallback for version-0 JSON is left alone. Those files predate the
crypto type being recorded and are by definition not Quantus, so the guess is
safe — but it is commented, because quantus/common#6 removes ed25519 from
KeypairType and this becomes a refusal.

Build plumbing, all of it dev-time only and all replaced by publishing these
packages to a registry (quantus/extension#2):

Resolutions point @polkadot/{keyring,util-crypto,networks,util} at the sibling
`common` checkout's build output, and @quantus/crypto at `wasm`.

tsconfig.base.json gains `*.d.ts` path mappings for them. Without these, node
resolves the portal symlink to its realpath and `@polkadot/util-crypto` then
resolves inside *common's* tree, where it is the workspace source directory with
no exports map — so EncryptedJson silently fails to resolve and KeyringPair$Json
loses `encoded` and `encoding`. The `*.d.ts` substitution has to come first
because NodeNext will not infer an extension for a bare path, and looks for a
`types` directory instead of `types.d.ts`.

tsconfig.json overrides those with the runtime `.js` view, because
@polkadot/dev-ts reads that file and would otherwise import a declaration file as
a module ("Debug Failure. Output generation failed"). tsc reads
tsconfig.build.json, which extends the base directly, so each gets the view it
needs.

The test script sets --preserve-symlinks, which yarn itself warns is required for
portals: without it the realpath problem above recurs at runtime.

Incidentally, `yarn lint` errors drop from 25 to 8 — resolving those types
removed a pile of `any`. The remaining 8 are upstream's own, in loadContract and
allowGenesis, and are left alone.

Refs quantus/ui#1

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_012uDUodEcRbBwNRi3UCmw8f
2026-09-15 10:40:52 +03:00
github-actions[bot] 1d667d4dc0 [CI Skip] release/stable 3.16.7
Lock Threads / lock (push) Has been cancelled
skip-checks: true
2026-03-26 19:24:07 +00:00
Tarik Gul c60975d532 3.16.7 (#861)
* 3.16.7

* Update Changelog
2026-03-26 21:22:47 +02:00
github-actions[bot] 816d22019b [CI Skip] bump/beta 3.16.7-1-x
skip-checks: true
2026-03-26 13:29:51 +00:00
Tarik Gul ddca14ece2 Bump common to 14.0.3 (#860) 2026-03-26 15:28:34 +02:00
github-actions[bot] f5e26741da [CI Skip] bump/beta 3.16.7-0-x
skip-checks: true
2026-03-13 13:57:53 +00:00
Tarik Gul c5ab15118d Set headers for 2026 (#859)
* Set headers for 2026

* remaining headers
2026-03-13 15:56:35 +02:00
github-actions[bot] 2e00b6e4e4 [CI Skip] release/stable 3.16.6
skip-checks: true
2025-12-10 06:42:02 +00:00
Arjun Porwal 8b483c6a1a 3.16.6 (#857) 2025-12-10 12:10:43 +05:30
github-actions[bot] 1339b6291b [CI Skip] release/stable 3.16.5
skip-checks: true
2025-12-10 04:58:38 +00:00
Arjun Porwal 0b69a66b73 3.16.5 (#856) 2025-12-10 10:27:22 +05:30
github-actions[bot] ccb870aec2 [CI Skip] bump/beta 3.16.5-0-x
skip-checks: true
2025-12-10 04:49:08 +00:00
Arjun Porwal 73221469a3 chore: bump polkadot-js deps (#855) 2025-12-10 10:17:49 +05:30
github-actions[bot] 95fccdfc30 [CI Skip] release/stable 3.16.4
skip-checks: true
2025-11-25 11:56:32 +00:00
Arjun Porwal 078133bc5a 3.16.4 (#854) 2025-11-25 17:25:15 +05:30
github-actions[bot] c2c4b1a89a [CI Skip] bump/beta 3.16.4-0-x
skip-checks: true
2025-11-25 11:36:11 +00:00
Arjun Porwal f52e4e5096 chore: bump deps (#853) 2025-11-25 17:04:53 +05:30
github-actions[bot] 292cb319c3 [CI Skip] release/stable 3.16.3
skip-checks: true
2025-11-12 06:32:14 +00:00
Arjun Porwal c16d40d3b7 3.16.3 (#851) 2025-11-12 12:00:59 +05:30
github-actions[bot] 9dd1a86b19 [CI Skip] bump/beta 3.16.3-0-x
skip-checks: true
2025-11-12 06:22:10 +00:00
Arjun Porwal e9dea3bb8a chore: bump deps (#850) 2025-11-12 11:50:51 +05:30
github-actions[bot] b1f6ca7b95 [CI Skip] release/stable 3.16.2
skip-checks: true
2025-10-22 12:19:51 +00:00
Arjun Porwal 06449c3ecb 3.16.2 (#849) 2025-10-22 09:18:33 -03:00
github-actions[bot] 62f6cb363e [CI Skip] bump/beta 3.16.2-0-x
skip-checks: true
2025-10-22 12:11:49 +00:00
Arjun Porwal 062d88d9a6 chore: upgrade deps (#848) 2025-10-22 17:40:20 +05:30
github-actions[bot] 9697a311cc [CI Skip] release/stable 3.16.1
skip-checks: true
2025-08-27 12:53:15 +00:00
Arjun Porwal f125830e2c 3.16.1 (#847)
* 3.16.1

* 3.16.1
2025-08-27 09:52:00 -03:00
Arjun Porwal 4b5d6b7205 3.15.5 (#846) 2025-08-27 17:45:12 +05:30
github-actions[bot] c92ff8e3c7 [CI Skip] bump/beta 3.15.5-0-x
skip-checks: true
2025-08-27 12:07:51 +00:00
Arjun Porwal d974af4c00 chore: upgrade polkadot deps (#845) 2025-08-27 17:36:27 +05:30
github-actions[bot] 50eb62c6dc [CI Skip] release/stable 3.15.4
skip-checks: true
2025-08-13 14:41:42 +00:00
Arjun Porwal ae0d6235f9 3.15.4 (#844)
* 3.15.4

* 3.15.4
2025-08-13 20:10:22 +05:30
github-actions[bot] 76e1273188 [CI Skip] bump/beta 3.15.4-0-x
skip-checks: true
2025-08-13 14:31:05 +00:00
Arjun Porwal 15c05ebecb chore: upgrade polkadot dependencies (#843) 2025-08-13 19:59:40 +05:30
github-actions[bot] 6d6ca2326f [CI Skip] release/stable 3.15.3
skip-checks: true
2025-07-30 05:00:25 +00:00
Arjun Porwal 5a96a6a9bc 3.15.3 (#842) 2025-07-30 10:29:09 +05:30
github-actions[bot] 73e6fcf492 [CI Skip] bump/beta 3.15.3-1-x
skip-checks: true
2025-07-30 04:38:56 +00:00
Arjun Porwal 60bd0a908b chore: bump deps (#841) 2025-07-30 10:07:38 +05:30
github-actions[bot] 0ee31f4005 [CI Skip] bump/beta 3.15.3-0-x
skip-checks: true
2025-07-23 03:47:39 +00:00
Niklas P 9a99507b98 Update Beachball.tsx to remove duplication in strict mode (#840)
in strict mode the beachball gets rendered twice
2025-07-23 09:16:19 +05:30
github-actions[bot] 2b2ec1c6af [CI Skip] release/stable 3.15.2
skip-checks: true
2025-07-02 12:40:44 +00:00
Arjun Porwal e16ef30a07 3.15.2 (#839) 2025-07-02 18:09:19 +05:30
github-actions[bot] f3e23345a5 [CI Skip] bump/beta 3.15.2-0-x
skip-checks: true
2025-07-02 12:32:25 +00:00
Arjun Porwal 61d7383408 chore: upgraded polkadot deps (#838) 2025-07-02 18:00:57 +05:30
github-actions[bot] 54a6be04ca [CI Skip] release/stable 3.15.1
skip-checks: true
2025-06-18 12:35:16 +00:00
Arjun Porwal 86fb5edec7 3.15.1 (#837) 2025-06-18 18:03:57 +05:30
github-actions[bot] d5ab7e64aa [CI Skip] bump/beta 3.14.2-0-x
skip-checks: true
2025-06-18 12:28:42 +00:00
Arjun Porwal 421ccb322a Upgrade polkadot deps (#836)
* chore: upgrade deps

* fix: correct capitalization of "Overview" in README

* fix: correct capitalization of "overview" in README

* fix: update typescript version in package.json and yarn.lock

* fix: downgrade typescript version to 5.5.4
2025-06-18 17:57:21 +05:30
github-actions[bot] 648c379c28 [CI Skip] release/stable 3.14.1
skip-checks: true
2025-05-23 15:27:16 +00:00
Tarik Gul 8541e93c8d 3.14.1 (#835) 2025-05-23 18:25:59 +03:00
github-actions[bot] d94ab0f523 [CI Skip] bump/beta 3.13.2-1-x
skip-checks: true
2025-05-23 15:10:03 +00:00
Tarik Gul 9ceb37eacf Upgrade polkadot-js/common to 13.5.1 (#834) 2025-05-23 18:08:41 +03:00
github-actions[bot] 9bab143e63 [CI Skip] bump/beta 3.13.2-0-x
skip-checks: true
2025-05-23 14:46:53 +00:00
Tarik Gul 2071d3a7d8 Add the type field to external keypair accounts (#833) 2025-05-23 17:45:29 +03:00
github-actions[bot] 36a18e7621 [CI Skip] release/stable 3.13.1
skip-checks: true
2025-04-16 13:01:27 +00:00
Arjun Porwal 41c35eaa37 3.13.1 (#832)
* 3.13.1

* 3.13.1
2025-04-16 18:30:08 +05:30
github-actions[bot] 090ed57255 [CI Skip] bump/beta 3.12.3-1-x
skip-checks: true
2025-04-16 12:00:38 +00:00
Arjun Porwal 905ef46b1f chore: upgrade polkadot deps (#831) 2025-04-16 17:29:16 +05:30
github-actions[bot] 2022f0e3ec [CI Skip] bump/beta 3.12.3-0-x
skip-checks: true
2025-04-02 14:02:33 +00:00
Tarik Gul 1a6fde78fd Add key validation for FileStore (#830) 2025-04-02 17:01:11 +03:00
github-actions[bot] 4dc82926f2 [CI Skip] release/stable 3.12.2
skip-checks: true
2025-02-18 14:14:03 +00:00
Valentin Fernandez 2c3566cad5 3.12.2 2025-02-18 11:12:39 -03:00
github-actions[bot] 146f63fd96 [CI Skip] bump/beta 3.12.2-1-x
skip-checks: true
2025-02-18 13:56:13 +00:00
Valentin Fernandez 12a496bf7b bump common 13.4.3 (#828) 2025-02-18 10:54:45 -03:00
github-actions[bot] 9c4f3b204b [CI Skip] bump/beta 3.12.2-0-x
skip-checks: true
2025-01-17 20:58:59 +00:00
Tarik Gul 5a8666ca0d Bump dev to 0.83.2 (#827) 2025-01-17 22:57:34 +02:00
github-actions[bot] 2e4eaf5c08 [CI Skip] release/stable 3.12.1
skip-checks: true
2025-01-08 16:37:39 +00:00
Tarik Gul 882984d2b3 3.12.1 (#825) 2025-01-08 18:36:13 +02:00
github-actions[bot] 3fde3865d5 [CI Skip] bump/beta 3.11.4-2-x
skip-checks: true
2025-01-08 16:28:49 +00:00
Tarik Gul aa3b0e806a Upgrade common to 13.3.1 (#824) 2025-01-08 18:27:18 +02:00
github-actions[bot] 14ca62de7a [CI Skip] bump/beta 3.11.4-1-x
skip-checks: true
2025-01-08 16:22:05 +00:00
Tarik Gul d9ffc2e697 Bump dev w/ ts (#823) 2025-01-08 18:20:38 +02:00
github-actions[bot] 0986382e72 [CI Skip] bump/beta 3.11.4-0-x
skip-checks: true
2025-01-02 23:08:34 +00:00
Tarik Gul caa0ceea23 2025 (#822)
* 2025

* update License
2025-01-03 01:07:08 +02:00
github-actions[bot] 0b6c1028a7 [CI Skip] release/stable 3.11.3
skip-checks: true
2024-11-12 15:31:31 +00:00
Tarik Gul 0a8c410387 3.11.3 (#820) 2024-11-12 17:29:57 +02:00
github-actions[bot] 80a19f1797 [CI Skip] bump/beta 3.11.3-1-x
skip-checks: true
2024-11-12 14:44:40 +00:00
Tarik Gul a2bfdaaacc Bump common to 13.2.3 (#817) 2024-11-12 16:43:14 +02:00
github-actions[bot] 97a288dbe0 [CI Skip] bump/beta 3.11.3-0-x
skip-checks: true
2024-11-12 14:35:36 +00:00
Tarik Gul 4f5a7d01fd Bump dev to 0.82.1 w/ tslib (#816) 2024-11-12 16:34:07 +02:00
github-actions[bot] 34a0e5a4cc [CI Skip] release/stable 3.11.2
skip-checks: true
2024-10-30 13:39:23 +00:00
Tarik Gul 066f9445b4 3.11.2 (#815) 2024-10-30 15:38:02 +02:00
github-actions[bot] 3bf9a3091b [CI Skip] bump/beta 3.11.2-0-x
skip-checks: true
2024-10-30 13:31:35 +00:00
Tarik Gul 146f6ff5d7 Upgrade common to 13.2.2 (#814) 2024-10-30 15:30:08 +02:00
github-actions[bot] 7faab2b89f [CI Skip] release/stable 3.11.1
skip-checks: true
2024-10-23 12:47:59 +00:00
Tarik Gul f4281ec6d9 3.11.1 (#813) 2024-10-23 15:46:28 +03:00
github-actions[bot] f46de4a524 [CI Skip] bump/beta 3.10.2-2-x
skip-checks: true
2024-10-23 00:49:10 +00:00
Tarik Gul 69e99c95bc Bump yarn to 4.5.1 (#812) 2024-10-23 03:47:43 +03:00
github-actions[bot] 3befcc2e69 [CI Skip] bump/beta 3.10.2-1-x
skip-checks: true
2024-10-23 00:23:35 +00:00
Tarik Gul e5a2337a14 Update polkadot common to 13.2.1 (#811) 2024-10-23 03:22:09 +03:00
github-actions[bot] 8410d5062e [CI Skip] bump/beta 3.10.2-0-x
skip-checks: true
2024-10-22 20:21:58 +00:00
Tarik Gul defe24c202 Bump dev to 0.81.2 (#810) 2024-10-22 23:20:33 +03:00
github-actions[bot] b5713564f6 [CI Skip] release/stable 3.10.1
skip-checks: true
2024-09-20 13:00:22 +00:00
Tarik Gul ec861d8314 3.10.1 (#809) 2024-09-20 15:58:56 +03:00
github-actions[bot] def96e5862 [CI Skip] bump/beta 3.9.2-1-x
skip-checks: true
2024-09-19 00:09:55 +00:00
Tarik Gul 45f4619995 Upgrade polkadot/common to 13.1.1 (#808) 2024-09-19 03:08:25 +03:00
github-actions[bot] 16ca4b0233 [CI Skip] bump/beta 3.9.2-0-x
skip-checks: true
2024-08-13 14:07:33 +00:00
Tarik Gul 43b5831e87 Bump yarn to 4.4.0 (#806) 2024-08-13 17:06:06 +03:00
github-actions[bot] 4952af75b0 [CI Skip] release/stable 3.9.1
skip-checks: true
2024-08-13 13:42:09 +00:00
Tarik Gul 41bab9b8c9 3.9.1 (#805) 2024-08-13 16:40:45 +03:00
github-actions[bot] 9fd024b4d8 [CI Skip] bump/beta 3.8.4-1-x
skip-checks: true
2024-08-13 13:19:55 +00:00
Tarik Gul 8d05c67577 Add chainSpecific option for ledger (#804) 2024-08-13 09:18:28 -04:00
github-actions[bot] 61a28eb333 [CI Skip] bump/beta 3.8.4-0-x
skip-checks: true
2024-08-08 01:52:37 +00:00
Tarik Gul 9930b83e87 Upgrade @polkadot/dev (#803) 2024-08-08 04:51:09 +03:00
github-actions[bot] 616b5d945c [CI Skip] release/stable 3.8.3
skip-checks: true
2024-08-01 00:30:40 +00:00
Tarik Gul b81fc14777 3.8.3 (#802)
* 3.8.3

* credit
2024-07-31 20:29:16 -04:00
github-actions[bot] 7d252ec039 [CI Skip] bump/beta 3.8.3-0-x
skip-checks: true
2024-08-01 00:13:20 +00:00
Ryan Lee 3c890a3e59 fix: qr-code (#801)
* fix: qr-code

* fix: linter warning
2024-07-31 20:11:51 -04:00
github-actions[bot] f08670ba14 [CI Skip] release/stable 3.8.2
skip-checks: true
2024-07-23 22:55:14 +00:00
Tarik Gul 62f86ab9d8 3.8.2 (#799) 2024-07-24 01:53:55 +03:00
github-actions[bot] 5cc4d12685 [CI Skip] bump/beta 3.8.2-0-x
skip-checks: true
2024-07-23 22:45:28 +00:00
Tarik Gul 04c00c675f Fix ledgerApp bug, and remove legacy (#798) 2024-07-23 18:44:03 -04:00
github-actions[bot] 482dcc0ddf [CI Skip] release/stable 3.8.1
skip-checks: true
2024-07-22 20:55:18 +00:00
Tarik Gul 37f22ae0de 3.8.1 (#797) 2024-07-22 23:53:58 +03:00
github-actions[bot] 940bbdf949 [CI Skip] bump/beta 3.7.2-0-x
skip-checks: true
2024-07-22 20:29:20 +00:00
Tarik Gul 0f03a8c2bf Add new ledger app settings (#796)
* Add ledger app settings

* Add ledgerApp

* Add to setting struct

* add available ledger apps

* fix info
2024-07-22 16:27:58 -04:00
github-actions[bot] b61b7f25b8 [CI Skip] release/stable 3.7.1
skip-checks: true
2024-07-13 23:21:58 +00:00
Tarik Gul f887590fec 3.7.1 (#795) 2024-07-14 02:20:38 +03:00
github-actions[bot] f3473159ac [CI Skip] bump/beta 3.6.7-1-x
skip-checks: true
2024-07-13 23:11:38 +00:00
Tarik Gul 248a5c2208 Bump yarn to 4.3.1 (#794) 2024-07-14 02:10:18 +03:00
github-actions[bot] 7e98a6727d [CI Skip] bump/beta 3.6.7-0-x
skip-checks: true
2024-07-13 23:02:47 +00:00
Tarik Gul 4724ddee1f Upgrade common to 13.0.2 (#793) 2024-07-14 02:01:21 +03:00
github-actions[bot] 06c2fe0463 [CI Skip] release/stable 3.6.6
skip-checks: true
2024-04-17 19:24:26 +00:00
Tarik Gul 31c6e597ea 3.6.6 (#790) 2024-04-17 22:23:07 +03:00
github-actions[bot] 0a70f8b412 [CI Skip] bump/beta 3.6.6-2-x
skip-checks: true
2024-04-17 17:02:48 +00:00
Viki Val a694afc240 Add compatibility layer for H160 addresses (#789)
*  compatibilty layer for H160 addresses

* :broom linter

* 🧼 space before (
2024-04-17 13:01:24 -04:00
github-actions[bot] c77e8d3c4a [CI Skip] bump/beta 3.6.6-1-x
skip-checks: true
2024-04-08 16:50:48 +00:00
Tarik Gul 7511d4c27f Update ci checkout and setup_node to v4 (#788) 2024-04-08 19:49:15 +03:00
github-actions[bot] 66d0d632df [CI Skip] bump/beta 3.6.6-0-x
skip-checks: true
2024-03-26 01:32:02 +00:00
Tarik Gul 76e77cfc2e Bump yarn to 4.1.1 (#787) 2024-03-26 03:30:38 +02:00
136 changed files with 2080 additions and 1577 deletions
+2 -2
View File
@@ -11,8 +11,8 @@ jobs:
env:
YARN_ENABLE_SCRIPTS: false
steps:
- uses: actions/checkout@v3
- uses: actions/setup-node@v3
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
with:
node-version: 'lts/*'
- name: ${{ matrix.step }}
+2 -2
View File
@@ -18,11 +18,11 @@ jobs:
GH_RELEASE_GITHUB_API_TOKEN: ${{ secrets.GH_PAT_BOT }}
NPM_TOKEN: ${{ secrets.NPM_TOKEN }}
steps:
- uses: actions/checkout@v3
- uses: actions/checkout@v4
with:
fetch-depth: 0
token: ${{ secrets.GH_PAT_BOT }}
- uses: actions/setup-node@v3
- uses: actions/setup-node@v4
with:
node-version: 'lts/*'
- name: ${{ matrix.step }}
+1 -1
View File
@@ -1,4 +1,4 @@
// Copyright 2017-2024 @polkadot/ui-shared authors & contributors
// Copyright 2017-2026 @polkadot/ui-shared authors & contributors
// SPDX-License-Identifier: Apache-2.0
module.exports = require('@polkadot/dev/config/prettier.cjs');
-893
View File
File diff suppressed because one or more lines are too long
+934
View File
File diff suppressed because one or more lines are too long
+9 -1
View File
@@ -12,4 +12,12 @@ logFilters:
nodeLinker: node-modules
yarnPath: .yarn/releases/yarn-4.1.0.cjs
yarnPath: .yarn/releases/yarn-4.5.1.cjs
# @quantus packages come from the Gitea registry — safe as a whole-scope route
# because we own every name in it. The forked @polkadot packages cannot be routed
# the same way (most of that scope is unforked and lives on npm), so they are
# pinned to tarball URLs in package.json resolutions instead.
npmScopes:
quantus:
npmRegistryServer: "https://git.lair.cafe/api/packages/quantus/npm/"
+195
View File
@@ -1,5 +1,200 @@
# CHANGELOG
## 3.16.7 Mar 25, 2026
Changes:
- Bump common to 14.0.3 ([#860](https://github.com/polkadot-js/ui/pull/860))
- Set headers for 2026 ([#859](https://github.com/polkadot-js/ui/pull/859))
## 3.16.6 Dec 10, 2025
Changes:
- Upgraded polkadot-js dependencies ([#855](https://github.com/polkadot-js/ui/pull/855))
## 3.16.5 Dec 10, 2025
Changes:
- Upgraded polkadot-js dependencies ([#855](https://github.com/polkadot-js/ui/pull/855))
## 3.16.4 Nov 25, 2025
Changes:
- Upgraded polkadot-js dependencies ([#853](https://github.com/polkadot-js/ui/pull/853))
## 3.16.3 Nov 12, 2025
Changes:
- Upgraded polkadot-js dependencies ([#850](https://github.com/polkadot-js/ui/pull/850))
## 3.16.2 Oct 22, 2025
Changes:
- Upgraded polkadot-js dependencies ([#848](https://github.com/polkadot-js/ui/pull/848))
## 3.16.1 Aug 27, 2025
Changes:
- 3.15.5 ([#846](https://github.com/polkadot-js/ui/pull/846))
- Upgraded polkadot deps ([#845](https://github.com/polkadot-js/ui/pull/845))
## 3.15.4 Aug 13, 2025
Changes:
- Upgraded polkadot deps ([#843](https://github.com/polkadot-js/ui/pull/843))
## 3.15.3 July 30, 2025
Changes:
- Update Beachball.tsx to remove duplication in strict mode ([#840](https://github.com/polkadot-js/ui/pull/840))
- Bump polkadot deps ([#841](https://github.com/polkadot-js/ui/pull/841))
## 3.15.2 July 2, 2025
Changes:
- Upgraded polkadot deps ([#838](https://github.com/polkadot-js/ui/pull/838))
## 3.15.1 Jun 18, 2025
Changes:
- Upgraded polkadot deps ([#831](https://github.com/polkadot-js/ui/pull/831))
## 3.14.1 May 23, 2025
Changes:
- Add the type field to external keypair accounts ([#833](https://github.com/polkadot-js/ui/pull/833))
- Upgrade polkadot-js/common to 13.5.1 ([#834](https://github.com/polkadot-js/ui/pull/834))
## 3.13.1 Apr 16, 2025
Changes:
- Add key validation for FileStore ([#830](https://github.com/polkadot-js/ui/pull/830))
- Upgraded polkadot deps ([#831](https://github.com/polkadot-js/ui/pull/831))
## 3.12.2 Feb 18, 2025
Changes:
- Bump dev to v0.83.2 ([#827](https://github.com/polkadot-js/ui/pull/827))
- Bump common to v13.4.3 ([#828](https://github.com/polkadot-js/ui/pull/828))
## 3.12.1 Jan 8, 2025
Changes:
- Upgrade common to 13.3.1 ([#824](https://github.com/polkadot-js/ui/pull/824))
- Bump dev w/ ts ([#823](https://github.com/polkadot-js/ui/pull/823))
- Update headers to 2025 ([#822](https://github.com/polkadot-js/ui/pull/822))
## 3.11.3 Nov 12, 2024
Changes:
- Upgrade polkadot/common to 13.2.3 ([817](https://github.com/polkadot-js/ui/pull/#))
- Bump dev to 0.82.1 w/ tslib ([#816](https://github.com/polkadot-js/ui/pull/816))
## 3.11.2 Oct 30, 2024
Changes:
- Upgrade polkadot/common to 13.2.2 ([#814](https://github.com/polkadot-js/ui/pull/814))
## 3.11.1 Oct 23, 2024
Changes:
- Upgrade polkadot/common to 13.2.1 ([#811](https://github.com/polkadot-js/ui/pull/811))
- Bump yarn to 4.5.1 ([#812](https://github.com/polkadot-js/ui/pull/812))
- Bump dev 0.81.2 ([#810](https://github.com/polkadot-js/ui/pull/810))
- Correctly exports CJS and ESM
## 3.10.1 Sep 20, 2024
Changes:
- Upgrade polkadot/common to 13.1.1 ([#808](https://github.com/polkadot-js/ui/pull/808))
- Bump yarn to 4.4.0 ([#806](https://github.com/polkadot-js/ui/pull/806))
## 3.9.1 Aug 13, 2024
Changes:
- Upgrade @polkadot/dev to 0.79.3 ([#803](https://github.com/polkadot-js/ui/pull/803))
- Add chainSpecific option for ledger ([#804](https://github.com/polkadot-js/ui/pull/804))
## 3.8.3 July 31, 2024
Changes:
- Fix Qr Scanner (Thanks to https://github.com/ryanleecode)
## 3.8.2 July 22, 2024
Changes:
- Fix ledgerApp bug, and remove legacy
## 3.8.1 July 22, 2024
Changes:
- Add new ledger app settings
## 3.7.1 July 13, 2024
Changes:
- Upgrade polkadot/common 13.0.2
- Bump yarn to 4.3.1
## 3.6.6 Apr 17, 2024
Contributed:
- Add compatibility layer for H160 addresses (Thanks to https://github.com/vikiival)
Changes:
- Update ci checkout and setup_node to v4
- Bump yarn to 4.1.1
## 3.6.5 Feb 28, 2024
Changes
+6 -2
View File
@@ -1,14 +1,17 @@
735 Jaco Adjust Vue peerDependency, >= 2.7 for defineComponent (#782)
41 Tarik Gul 3.16.7 (#861)
22 Arjun Porwal 3.16.6 (#857)
7 YJ fix #224: decrease frame size to 1024, set multipart bool (#225)
4 Antoine Estienne Refactor logic to better use prefix (#491)
4 kwingram25 fix ff api url issue (#289)
4 Thibaut Sardan store hardware wallets (#431)
3 Luke Sugiura remove language options (#244)
3 Stefanie Doll Replace isUndefined util with explicit typeof check (#107)
3 Tarik Gul 3.6.5 (#785)
2 Drew Stone Add Edgeware testnet and mainnet updated endpoints (#274)
2 Hanwen Cheng allow qr to scan seed qr (#330)
2 Nikos Kontakis Fix undefined process error that may appear when using ui (#524)
2 Valentin Fernandez 3.12.2
2 Viki Val Add compatibility layer for H160 addresses (#789)
2 Vlad Proshchavaiev Add Subsocial to ss58 defaults (#358)
2 Xiliang Chen Update UNfrastructure node label (#160)
2 雪霁 Batch export patch up (#455)
@@ -28,9 +31,10 @@
1 Luke Schoen Fix typo in heading (#114)
1 Nantian fix bigint type (#510)
1 Nikhil Ranjan Updated to valid javascript (#271)
1 Niklas P Update Beachball.tsx to remove duplication in strict mode (#840)
1 omahs Fix: typos (#709)
1 Ryan Lee fix: qr-code (#801)
1 Shawn Tabrizi Add a new `notification` setting (#498)
1 Viki Val :bug: identicon has isAlternative both as data and prop (#668)
1 Wei Tang Add Kulupu to the network selection list (#254)
1 WoeOm add darwinia ss58 (#379)
1 yuhui1208 [Stores] make FileStroe read key safely (#338)
+1 -1
View File
@@ -1,4 +1,4 @@
// Copyright 2017-2024 @polkadot/ui-shared authors & contributors
// Copyright 2017-2026 @polkadot/ui-shared authors & contributors
// SPDX-License-Identifier: Apache-2.0
import baseConfig from '@polkadot/dev/config/eslint';
+11 -8
View File
@@ -6,7 +6,7 @@
},
"homepage": "https://github.com/polkadot-js/ui#readme",
"license": "Apache-2.0",
"packageManager": "yarn@4.1.0",
"packageManager": "yarn@4.5.1",
"private": true,
"repository": {
"type": "git",
@@ -14,10 +14,10 @@
},
"sideEffects": false,
"type": "module",
"version": "3.6.5",
"version": "3.16.7",
"versions": {
"git": "3.6.5",
"npm": "3.6.5"
"git": "3.16.7",
"npm": "3.16.7"
},
"workspaces": [
"packages/*"
@@ -33,15 +33,18 @@
"test:one": "polkadot-dev-run-test --env browser"
},
"devDependencies": {
"@polkadot/dev": "^0.78.3",
"@polkadot/x-bundle": "^12.6.2",
"@types/node": "^20.10.5",
"@polkadot/dev": "^0.83.3",
"@polkadot/x-bundle": "^14.0.3",
"@types/node": "^22.10.5",
"react": "^18.2.0",
"react-dom": "^18.2.0",
"react-is": "^18.2.0",
"react-native": "^0.73.1"
},
"resolutions": {
"typescript": "^5.3.3"
"@polkadot/keyring": "https://git.lair.cafe/api/packages/quantus/npm/%40polkadot%2Fkeyring/-/14.0.3-quantus.3/keyring-14.0.3-quantus.3.tgz",
"@polkadot/networks": "https://git.lair.cafe/api/packages/quantus/npm/%40polkadot%2Fnetworks/-/14.0.3-quantus.3/networks-14.0.3-quantus.3.tgz",
"@polkadot/util-crypto": "https://git.lair.cafe/api/packages/quantus/npm/%40polkadot%2Futil-crypto/-/14.0.3-quantus.3/util-crypto-14.0.3-quantus.3.tgz",
"typescript": "5.5.4"
}
}
+7 -7
View File
@@ -18,19 +18,19 @@
"./packageDetect.cjs"
],
"type": "module",
"version": "3.6.5",
"version": "3.16.7",
"main": "index.js",
"dependencies": {
"@polkadot/keyring": "^12.6.2",
"@polkadot/ui-settings": "3.6.5",
"@polkadot/ui-shared": "3.6.5",
"@polkadot/util": "^12.6.2",
"@polkadot/util-crypto": "^12.6.2",
"@polkadot/keyring": "^14.0.3",
"@polkadot/ui-settings": "3.16.7",
"@polkadot/ui-shared": "3.16.7",
"@polkadot/util": "^14.0.3",
"@polkadot/util-crypto": "^14.0.3",
"ethereum-blockies-base64": "^1.0.2",
"jdenticon": "3.2.0",
"react-copy-to-clipboard": "^5.1.0",
"styled-components": "^6.1.1",
"tslib": "^2.6.2"
"tslib": "^2.8.1"
},
"devDependencies": {
"@types/react-copy-to-clipboard": "^5.0.7",
+1 -1
View File
@@ -1,4 +1,4 @@
// Copyright 2017-2024 @polkadot/react-identicon authors & contributors
// Copyright 2017-2026 @polkadot/react-identicon authors & contributors
// SPDX-License-Identifier: Apache-2.0
import type { Prefix } from '@polkadot/util-crypto/address/types';
+1 -1
View File
@@ -1,4 +1,4 @@
// Copyright 2017-2024 @polkadot/react-identicon authors & contributors
// Copyright 2017-2026 @polkadot/react-identicon authors & contributors
// SPDX-License-Identifier: Apache-2.0
export * from './icons/index.js';
@@ -1,4 +1,4 @@
// Copyright 2017-2024 @polkadot/react-identicon authors & contributors
// Copyright 2017-2026 @polkadot/react-identicon authors & contributors
// SPDX-License-Identifier: Apache-2.0
import type { Props } from '../types.js';
@@ -10,9 +10,12 @@ import { beachballIcon } from '@polkadot/ui-shared';
function Identicon ({ address, className = '', size, style = {} }: Props): React.ReactElement<Props> {
const updateElem = useCallback(
(node: HTMLDivElement): void => {
node?.appendChild(
beachballIcon(address, { isAlternative: false, size })
);
if (node) {
node.innerHTML = '';
node.appendChild(
beachballIcon(address, { isAlternative: false, size })
);
}
},
[address, size]
);
+1 -1
View File
@@ -1,4 +1,4 @@
// Copyright 2017-2024 @polkadot/react-identicon authors & contributors
// Copyright 2017-2026 @polkadot/react-identicon authors & contributors
// SPDX-License-Identifier: Apache-2.0
import type { Props } from '../types.js';
@@ -1,4 +1,4 @@
// Copyright 2017-2024 @polkadot/react-identicon authors & contributors
// Copyright 2017-2026 @polkadot/react-identicon authors & contributors
// SPDX-License-Identifier: Apache-2.0
import type { Props } from '../types.js';
@@ -1,4 +1,4 @@
// Copyright 2017-2024 @polkadot/react-identicon authors & contributors
// Copyright 2017-2026 @polkadot/react-identicon authors & contributors
// SPDX-License-Identifier: Apache-2.0
import type { Props } from '../types.js';
@@ -1,4 +1,4 @@
// Copyright 2018-2024 @polkadot/react-identicon authors & contributors
// Copyright 2018-2026 @polkadot/react-identicon authors & contributors
// SPDX-License-Identifier: Apache-2.0
// Copyright 2018 Paritytech via paritytech/oo7/polkadot-identicon
+1 -1
View File
@@ -1,4 +1,4 @@
// Copyright 2017-2024 @polkadot/react-identicon authors & contributors
// Copyright 2017-2026 @polkadot/react-identicon authors & contributors
// SPDX-License-Identifier: Apache-2.0
export { Beachball } from './Beachball.js';
+1 -1
View File
@@ -1,4 +1,4 @@
// Copyright 2017-2024 @polkadot/react-identicon authors & contributors
// Copyright 2017-2026 @polkadot/react-identicon authors & contributors
// SPDX-License-Identifier: Apache-2.0
import './packageDetect.js';
@@ -1,4 +1,4 @@
// Copyright 2017-2024 @polkadot/react-identicon authors & contributors
// Copyright 2017-2026 @polkadot/react-identicon authors & contributors
// SPDX-License-Identifier: Apache-2.0
// Do not edit, auto-generated by @polkadot/dev
+2 -2
View File
@@ -1,6 +1,6 @@
// Copyright 2017-2024 @polkadot/react-identicon authors & contributors
// Copyright 2017-2026 @polkadot/react-identicon authors & contributors
// SPDX-License-Identifier: Apache-2.0
// Do not edit, auto-generated by @polkadot/dev
export const packageInfo = { name: '@polkadot/react-identicon', path: 'auto', type: 'auto', version: '3.6.5' };
export const packageInfo = { name: '@polkadot/react-identicon', path: 'auto', type: 'auto', version: '3.16.7' };
+1 -1
View File
@@ -1,4 +1,4 @@
// Copyright 2017-2024 @polkadot/react-identicon authors & contributors
// Copyright 2017-2026 @polkadot/react-identicon authors & contributors
// SPDX-License-Identifier: Apache-2.0
export { styled } from 'styled-components';
+1 -1
View File
@@ -1,4 +1,4 @@
// Copyright 2018-2024 @polkadot/react-identicon authors & contributors
// Copyright 2018-2026 @polkadot/react-identicon authors & contributors
// SPDX-License-Identifier: Apache-2.0
import type React from 'react';
+7 -9
View File
@@ -18,19 +18,17 @@
"./packageDetect.cjs"
],
"type": "module",
"version": "3.6.5",
"version": "3.16.7",
"main": "index.js",
"dependencies": {
"@polkadot/ui-settings": "3.6.5",
"@polkadot/util": "^12.6.2",
"@polkadot/util-crypto": "^12.6.2",
"@polkadot/ui-settings": "3.16.7",
"@polkadot/util": "^14.0.3",
"@polkadot/util-crypto": "^14.0.3",
"@zxing/browser": "^0.1.5",
"@zxing/library": "^0.21.2",
"qrcode-generator": "^1.4.4",
"react-qr-reader": "^2.2.1",
"styled-components": "^6.1.1",
"tslib": "^2.6.2"
},
"devDependencies": {
"@types/react-qr-reader": "^2.1.7"
"tslib": "^2.8.1"
},
"peerDependencies": {
"@polkadot/util": "*",
+1 -1
View File
@@ -1,4 +1,4 @@
// Copyright 2017-2024 @polkadot/react-qr authors & contributors
// Copyright 2017-2026 @polkadot/react-qr authors & contributors
// SPDX-License-Identifier: Apache-2.0
import React, { useEffect, useMemo, useRef, useState } from 'react';
+1 -1
View File
@@ -1,4 +1,4 @@
// Copyright 2017-2024 @polkadot/react-qr authors & contributors
// Copyright 2017-2026 @polkadot/react-qr authors & contributors
// SPDX-License-Identifier: Apache-2.0
import React, { useMemo } from 'react';
+1 -1
View File
@@ -1,4 +1,4 @@
// Copyright 2017-2024 @polkadot/react-qr authors & contributors
// Copyright 2017-2026 @polkadot/react-qr authors & contributors
// SPDX-License-Identifier: Apache-2.0
import React, { useMemo } from 'react';
+1 -1
View File
@@ -1,4 +1,4 @@
// Copyright 2017-2024 @polkadot/react-qr authors & contributors
// Copyright 2017-2026 @polkadot/react-qr authors & contributors
// SPDX-License-Identifier: Apache-2.0
import type { NetworkSpecsStruct } from '@polkadot/ui-settings/types';
+45 -15
View File
@@ -1,8 +1,8 @@
// Copyright 2017-2024 @polkadot/react-qr authors & contributors
// Copyright 2017-2026 @polkadot/react-qr authors & contributors
// SPDX-License-Identifier: Apache-2.0
import React, { useCallback, useMemo } from 'react';
import Reader from 'react-qr-reader';
import { BrowserQRCodeReader, type IScannerControls } from '@zxing/browser';
import React, { useCallback, useEffect, useMemo, useRef } from 'react';
import { styled } from './styled.js';
import { createImgSize } from './util.js';
@@ -23,6 +23,9 @@ const DEFAULT_ERROR = (error: Error): void => {
};
function Scan ({ className = '', delay = DEFAULT_DELAY, onError = DEFAULT_ERROR, onScan, size, style = {} }: Props): React.ReactElement<Props> {
const videoRef = useRef<HTMLVideoElement>(null);
const controlsRef = useRef<IScannerControls | null>(null);
const containerStyle = useMemo(
() => createImgSize(size),
[size]
@@ -33,21 +36,52 @@ function Scan ({ className = '', delay = DEFAULT_DELAY, onError = DEFAULT_ERROR,
[onError]
);
const _onScan = useCallback(
(data: string | null) => data && onScan(data),
[onScan]
);
useEffect(() => {
const codeReader = new BrowserQRCodeReader();
const startScanning = async () => {
try {
const videoInputDevices = await BrowserQRCodeReader.listVideoInputDevices();
const selectedDeviceId = videoInputDevices[0].deviceId;
controlsRef.current = await codeReader.decodeFromVideoDevice(
selectedDeviceId,
videoRef.current ?? undefined,
(result, error) => {
if (result) {
onScan(result.getText());
}
if (error && !(error instanceof Error)) {
_onError(new Error(error));
}
}
);
} catch (error) {
_onError(error instanceof Error ? error : new Error('Unknown error occurred'));
}
};
// eslint-disable-next-line @typescript-eslint/no-misused-promises
const timeoutId = setTimeout(startScanning, delay);
return () => {
clearTimeout(timeoutId);
if (controlsRef.current) {
controlsRef.current.stop();
}
};
}, [onScan, _onError, delay]);
return (
<StyledDiv
className={className}
style={containerStyle}
>
<Reader
<video
className='ui--qr-Scan'
delay={delay}
onError={_onError}
onScan={_onScan}
ref={videoRef}
style={style}
/>
</StyledDiv>
@@ -60,10 +94,6 @@ const StyledDiv = styled.div`
height: 100%;
transform: matrix(-1, 0, 0, 1, 0, 0);
width: 100%;
video {
margin: 0;
}
}
`;
+1 -1
View File
@@ -1,4 +1,4 @@
// Copyright 2017-2024 @polkadot/react-qr authors & contributors
// Copyright 2017-2026 @polkadot/react-qr authors & contributors
// SPDX-License-Identifier: Apache-2.0
import type { HexString } from '@polkadot/util/types';
+1 -1
View File
@@ -1,4 +1,4 @@
// Copyright 2017-2024 @polkadot/react-qr authors & contributors
// Copyright 2017-2026 @polkadot/react-qr authors & contributors
// SPDX-License-Identifier: Apache-2.0
import type { HexString } from '@polkadot/util/types';
+1 -1
View File
@@ -1,4 +1,4 @@
// Copyright 2017-2024 @polkadot/react-qr authors & contributors
// Copyright 2017-2026 @polkadot/react-qr authors & contributors
// SPDX-License-Identifier: Apache-2.0
export { QrDisplayAddress } from './DisplayAddress.js';
+1 -1
View File
@@ -1,4 +1,4 @@
// Copyright 2017-2024 @polkadot/react-qr authors & contributors
// Copyright 2017-2026 @polkadot/react-qr authors & contributors
// SPDX-License-Identifier: Apache-2.0
export const ADDRESS_PREFIX = 'substrate';
+1 -1
View File
@@ -1,4 +1,4 @@
// Copyright 2017-2024 @polkadot/react-qr authors & contributors
// Copyright 2017-2026 @polkadot/react-qr authors & contributors
// SPDX-License-Identifier: Apache-2.0
import './packageDetect.js';
+1 -1
View File
@@ -1,4 +1,4 @@
// Copyright 2017-2024 @polkadot/react-qr authors & contributors
// Copyright 2017-2026 @polkadot/react-qr authors & contributors
// SPDX-License-Identifier: Apache-2.0
// Do not edit, auto-generated by @polkadot/dev
+2 -2
View File
@@ -1,6 +1,6 @@
// Copyright 2017-2024 @polkadot/react-qr authors & contributors
// Copyright 2017-2026 @polkadot/react-qr authors & contributors
// SPDX-License-Identifier: Apache-2.0
// Do not edit, auto-generated by @polkadot/dev
export const packageInfo = { name: '@polkadot/react-qr', path: 'auto', type: 'auto', version: '3.6.5' };
export const packageInfo = { name: '@polkadot/react-qr', path: 'auto', type: 'auto', version: '3.16.7' };
+1 -1
View File
@@ -1,4 +1,4 @@
// Copyright 2017-2024 @polkadot/react-qr authors & contributors
// Copyright 2017-2026 @polkadot/react-qr authors & contributors
// SPDX-License-Identifier: Apache-2.0
import _qrcode from 'qrcode-generator';
+1 -1
View File
@@ -1,4 +1,4 @@
// Copyright 2017-2024 @polkadot/react-qr authors & contributors
// Copyright 2017-2026 @polkadot/react-qr authors & contributors
// SPDX-License-Identifier: Apache-2.0
export { styled } from 'styled-components';
+1 -1
View File
@@ -1,4 +1,4 @@
// Copyright 2017-2024 @polkadot/react-qr authors & contributors
// Copyright 2017-2026 @polkadot/react-qr authors & contributors
// SPDX-License-Identifier: Apache-2.0
/// <reference types="@polkadot/dev-test/globals.d.ts" />
+1 -1
View File
@@ -1,4 +1,4 @@
// Copyright 2017-2024 @polkadot/react-qr authors & contributors
// Copyright 2017-2026 @polkadot/react-qr authors & contributors
// SPDX-License-Identifier: Apache-2.0
import { isString, u8aConcat, u8aToU8a } from '@polkadot/util';
+5 -5
View File
@@ -18,14 +18,14 @@
"./packageDetect.cjs"
],
"type": "module",
"version": "3.6.5",
"version": "3.16.7",
"main": "index.js",
"dependencies": {
"@polkadot/ui-shared": "3.6.5",
"@polkadot/util": "^12.6.2",
"@polkadot/util-crypto": "^12.6.2",
"@polkadot/ui-shared": "3.16.7",
"@polkadot/util": "^14.0.3",
"@polkadot/util-crypto": "^14.0.3",
"react-native-svg": "^14.1.0",
"tslib": "^2.6.2"
"tslib": "^2.8.1"
},
"devDependencies": {
"@types/react-native": "^0.72.8"
@@ -1,4 +1,4 @@
// Copyright 2017-2024 @polkadot/reactnative-identicon authors & contributors
// Copyright 2017-2026 @polkadot/reactnative-identicon authors & contributors
// SPDX-License-Identifier: Apache-2.0
import type { Prefix } from '@polkadot/util-crypto/address/types';
+1 -1
View File
@@ -1,4 +1,4 @@
// Copyright 2017-2024 @polkadot/reactnative-identicon authors & contributors
// Copyright 2017-2026 @polkadot/reactnative-identicon authors & contributors
// SPDX-License-Identifier: Apache-2.0
export * from './icons/index.js';
@@ -1,4 +1,4 @@
// Copyright 2017-2024 @polkadot/reactnative-identicon authors & contributors
// Copyright 2017-2026 @polkadot/reactnative-identicon authors & contributors
// SPDX-License-Identifier: Apache-2.0
import type { Props } from '../types.js';
@@ -1,4 +1,4 @@
// Copyright 2018-2024 @polkadot/reactnative-identicon authors & contributors
// Copyright 2018-2026 @polkadot/reactnative-identicon authors & contributors
// SPDX-License-Identifier: Apache-2.0
import type { Circle as CircleType } from '@polkadot/ui-shared/icons/types';
@@ -1,4 +1,4 @@
// Copyright 2017-2024 @polkadot/reactnative-identicon authors & contributors
// Copyright 2017-2026 @polkadot/reactnative-identicon authors & contributors
// SPDX-License-Identifier: Apache-2.0
export { default as Empty } from './Empty.js';
+1 -1
View File
@@ -1,4 +1,4 @@
// Copyright 2017-2024 @polkadot/reactnative-identicon authors & contributors
// Copyright 2017-2026 @polkadot/reactnative-identicon authors & contributors
// SPDX-License-Identifier: Apache-2.0
import './packageDetect.js';
@@ -1,4 +1,4 @@
// Copyright 2017-2024 @polkadot/reactnative-identicon authors & contributors
// Copyright 2017-2026 @polkadot/reactnative-identicon authors & contributors
// SPDX-License-Identifier: Apache-2.0
// Do not edit, auto-generated by @polkadot/dev
@@ -1,6 +1,6 @@
// Copyright 2017-2024 @polkadot/reactnative-identicon authors & contributors
// Copyright 2017-2026 @polkadot/reactnative-identicon authors & contributors
// SPDX-License-Identifier: Apache-2.0
// Do not edit, auto-generated by @polkadot/dev
export const packageInfo = { name: '@polkadot/reactnative-identicon', path: 'auto', type: 'auto', version: '3.6.5' };
export const packageInfo = { name: '@polkadot/reactnative-identicon', path: 'auto', type: 'auto', version: '3.16.7' };
+1 -1
View File
@@ -1,4 +1,4 @@
// Copyright 2018-2024 @polkadot/reactnative-identicon authors & contributors
// Copyright 2018-2026 @polkadot/reactnative-identicon authors & contributors
// SPDX-License-Identifier: Apache-2.0
export interface Props {
+7 -6
View File
@@ -17,19 +17,20 @@
"./packageDetect.cjs"
],
"type": "module",
"version": "3.6.5",
"version": "3.16.7-quantus.3",
"main": "index.js",
"dependencies": {
"@polkadot/keyring": "^12.6.2",
"@polkadot/ui-settings": "3.6.5",
"@polkadot/util": "^12.6.2",
"@polkadot/util-crypto": "^12.6.2",
"@polkadot/keyring": "14.0.3-quantus.3",
"@polkadot/ui-settings": "3.16.7",
"@polkadot/util": "^14.0.3",
"@polkadot/util-crypto": "14.0.3-quantus.3",
"mkdirp": "^3.0.1",
"rxjs": "^7.8.1",
"store": "^2.0.12",
"tslib": "^2.6.2"
"tslib": "^2.8.1"
},
"devDependencies": {
"@quantus/crypto": "^0.3.0",
"@types/mkdirp": "^2.0.0",
"@types/store": "^2.0.5"
},
+4 -3
View File
@@ -1,4 +1,4 @@
// Copyright 2017-2024 @polkadot/ui-keyring authors & contributors
// Copyright 2017-2026 @polkadot/ui-keyring authors & contributors
// SPDX-License-Identifier: Apache-2.0
import type { KeyringInstance, KeyringPair } from '@polkadot/keyring/types';
@@ -125,8 +125,9 @@ export class Base {
this.setDevMode(options.isDevelopment);
}
// set Ethereum state
this.#isEthereum = keyring.type === 'ethereum';
// Never Ethereum: the keyring holds only ML-DSA keys (quantus/common#6). Kept
// as a property so callers written against upstream still read a boolean.
this.#isEthereum = false;
this.#keyring = keyring;
this._genesisHash = options.genesisHash && (
@@ -0,0 +1,94 @@
// Copyright 2017-2026 @polkadot/ui-keyring authors & contributors
// SPDX-License-Identifier: Apache-2.0
/// <reference types="@polkadot/dev-test/globals.d.ts" />
import type { KeyringPair$Json } from '@polkadot/keyring/types';
import { contextForSpec } from '@quantus/crypto';
import { Keyring as BaseKeyring } from '@polkadot/keyring';
import { dilithiumVerify } from '@polkadot/util-crypto';
import { Keyring } from './Keyring.js';
// crystal_alice, from the chain's dev genesis — a raw 32-byte seed straight into
// ML-DSA-87 keygen. The address is what `quantus developer create-test-wallets`
// prints, i.e. an independent implementation.
const ALICE = 'qzk1Nxai3dZD9Cn5kwGcgL6mKxsfxwqdis7kDQJ52aJS2vSn7';
const PASSWORD = 'not a good password';
const MESSAGE = new Uint8Array([0x75, 0x69]);
function backup (): KeyringPair$Json {
const base = new BaseKeyring({ ss58Format: 189, type: 'dilithium87' });
return base
.addFromSeed(new Uint8Array(32), { name: 'crystal_alice' }, 'dilithium87')
.toJson(PASSWORD);
}
// `loadAll` initialises `@polkadot/ui-settings`, which is a module singleton, so
// it may be called once per *process* — not per instance. One keyring for the
// whole file, loaded once.
const uiKeyring = new Keyring();
uiKeyring.loadAll({ ss58Format: 189, store: undefined, type: 'dilithium87' });
describe('ui-keyring restoreAccount', (): void => {
// Before the fix this constructed a pair whose "public key" was
// decodeAddress(json.address) — i.e. a Poseidon2 hash of the public key, passed
// off as the key itself. It did not throw; it produced a pair that was simply
// wrong.
it('restores an ML-DSA account to the right address', (): void => {
const pair = uiKeyring.restoreAccount(backup(), PASSWORD);
expect(pair.address).toEqual(ALICE);
expect(pair.publicKey.length).toEqual(2592);
expect(pair.addressRaw.length).toEqual(32);
});
it('restores an account that can sign for its own address', (): void => {
const pair = uiKeyring.restoreAccount(backup(), PASSWORD);
pair.decodePkcs8(PASSWORD);
const context = contextForSpec(148);
const signature = pair.sign(MESSAGE, { context });
expect(dilithiumVerify(MESSAGE, signature, pair.addressRaw, 'dilithium87', context)).toEqual(true);
});
it('fails on a wrong password without half-restoring', (): void => {
expect(() => uiKeyring.restoreAccount(backup(), 'wrong')).toThrow();
});
// The address field sits outside the encrypted blob. For the curve schemes a
// tampered one cannot decode at all; here it decodes cleanly and would yield an
// account displaying an address its key does not control.
it('rejects JSON whose address does not match its key', (): void => {
const base = new BaseKeyring({ ss58Format: 189, type: 'dilithium87' });
const other = base.addFromSeed(new Uint8Array(32).fill(3), {}, 'dilithium87');
expect(() => uiKeyring.restoreAccount({ ...backup(), address: other.address }, PASSWORD)).toThrow(/does not match the address/);
});
// quantus/common#6: a backup of a quantum-unsafe key is refused with the
// reason, not decoded. This is the JSON a polkadot{.js} export of an ed25519
// account carries.
it('refuses a polkadot{.js} backup of a quantum-unsafe key, saying why', (): void => {
const json = {
address: '5GrwvaEF5zXb26Fz9rcQpDWS57CtERHpNehXCPcNoHGKutQY',
encoded: '0x00',
encoding: { content: ['pkcs8', 'sr25519'], type: ['scrypt', 'xsalsa20-poly1305'], version: '3' },
meta: { name: 'polkadot account' }
} as unknown as KeyringPair$Json;
expect(() => uiKeyring.restoreAccount(json, PASSWORD)).toThrow(/sr25519 keys are not quantum-safe and cannot be held here/);
});
it('refuses a file that does not record its key type', (): void => {
const json = { ...backup(), encoding: { content: 'pkcs8', type: 'none', version: '0' } } as unknown as KeyringPair$Json;
expect(() => uiKeyring.restoreAccount(json, PASSWORD)).toThrow(/does not record its key type/);
});
});
+16 -14
View File
@@ -1,4 +1,4 @@
// Copyright 2017-2024 @polkadot/ui-keyring authors & contributors
// Copyright 2017-2026 @polkadot/ui-keyring authors & contributors
// SPDX-License-Identifier: Apache-2.0
import type { KeyringPair, KeyringPair$Json, KeyringPair$Meta } from '@polkadot/keyring/types';
@@ -8,10 +8,9 @@ import type { KeypairType } from '@polkadot/util-crypto/types';
import type { AddressSubject, SingleAddress } from './observable/types.js';
import type { CreateResult, KeyringAddress, KeyringAddressType, KeyringItemType, KeyringJson, KeyringJson$Meta, KeyringOptions, KeyringPairs$Json, KeyringStruct } from './types.js';
import { createPair } from '@polkadot/keyring';
import { chains } from '@polkadot/ui-settings';
import { bnToBn, hexToU8a, isFunction, isHex, isString, objectSpread, stringify, stringToU8a, u8aSorted, u8aToString } from '@polkadot/util';
import { base64Decode, createKeyMulti, jsonDecrypt, jsonEncrypt } from '@polkadot/util-crypto';
import { createKeyMulti, jsonDecrypt, jsonEncrypt } from '@polkadot/util-crypto';
import { env } from './observable/env.js';
import { KeyringOption } from './options/index.js';
@@ -21,7 +20,7 @@ import { accountKey, accountRegex, addressKey, addressRegex, contractKey, contra
const RECENT_EXPIRY = 24 * 60 * 60;
// No accounts (or test accounts) should be loaded until after the chain determination.
// Chain determination occurs outside of Keyring. Loading `keyring.loadAll({ type: 'ed25519' | 'sr25519' })` is triggered
// Chain determination occurs outside of Keyring. Loading `keyring.loadAll({ type: 'dilithium65' | 'dilithium87' })` is triggered
// from the API after the chain is received
export class Keyring extends Base implements KeyringStruct {
public readonly keyringOption = new KeyringOption();
@@ -33,7 +32,7 @@ export class Keyring extends Base implements KeyringStruct {
};
public addExternal (address: string | Uint8Array, meta: KeyringPair$Meta = {}): CreateResult {
const pair = this.keyring.addFromAddress(address, objectSpread<KeyringJson$Meta>({}, meta, { isExternal: true }), null);
const pair = this.keyring.addFromAddress(address, objectSpread<KeyringJson$Meta>({}, meta, { isExternal: true }), null, meta?.type);
return {
json: this.saveAccount(pair),
@@ -327,15 +326,18 @@ export class Keyring extends Base implements KeyringStruct {
}
public restoreAccount (json: KeyringPair$Json, password: string): KeyringPair {
const cryptoType = Array.isArray(json.encoding.content) ? json.encoding.content[1] : 'ed25519';
const encType = Array.isArray(json.encoding.type) ? json.encoding.type : [json.encoding.type];
const pair = createPair(
{ toSS58: this.encodeAddress, type: cryptoType as KeypairType },
{ publicKey: this.decodeAddress(json.address, true) },
json.meta,
isHex(json.encoded) ? hexToU8a(json.encoded) : base64Decode(json.encoded),
encType
);
// Version-0 JSON predates recording the key type, so it cannot be an ML-DSA
// account. Upstream guessed ed25519; this keyring cannot hold one.
if (!Array.isArray(json.encoding.content)) {
throw new Error('This account file does not record its key type, so it is not an ML-DSA account and cannot be restored here');
}
// Through the keyring rather than createPair directly, so a restore gets the
// same refusal as every other entry point: a polkadot{.js} backup of an
// sr25519 or ed25519 account is told it is not quantum-safe, not decoded.
// createFromJson also carries the address as an account id until the real
// public key is decrypted, and checks the two agree when it is.
const pair = this.keyring.createFromJson(json, true);
// unlock, save account and then lock (locking cleans secretKey, so needs to be last)
pair.decodePkcs8(password);
+1 -1
View File
@@ -1,4 +1,4 @@
// Copyright 2017-2024 @polkadot/ui-keyring authors & contributors
// Copyright 2017-2026 @polkadot/ui-keyring authors & contributors
// SPDX-License-Identifier: Apache-2.0
import { Keyring } from './Keyring.js';
+1 -1
View File
@@ -1,4 +1,4 @@
// Copyright 2017-2024 @polkadot/ui-keyring authors & contributors
// Copyright 2017-2026 @polkadot/ui-keyring authors & contributors
// SPDX-License-Identifier: Apache-2.0
import { decodeAddress } from '@polkadot/keyring';
+1 -1
View File
@@ -1,4 +1,4 @@
// Copyright 2017-2024 @polkadot/ui-keyring authors & contributors
// Copyright 2017-2026 @polkadot/ui-keyring authors & contributors
// SPDX-License-Identifier: Apache-2.0
import './packageDetect.js';
+1 -1
View File
@@ -1,4 +1,4 @@
// Copyright 2017-2024 @polkadot/ui-keyring authors & contributors
// Copyright 2017-2026 @polkadot/ui-keyring authors & contributors
// SPDX-License-Identifier: Apache-2.0
// Be able to import json in TS
@@ -1,4 +1,4 @@
// Copyright 2017-2024 @polkadot/ui-keyring authors & contributors
// Copyright 2017-2026 @polkadot/ui-keyring authors & contributors
// SPDX-License-Identifier: Apache-2.0
import { accountKey } from '../defaults.js';
@@ -1,4 +1,4 @@
// Copyright 2017-2024 @polkadot/ui-keyring authors & contributors
// Copyright 2017-2026 @polkadot/ui-keyring authors & contributors
// SPDX-License-Identifier: Apache-2.0
import { addressKey } from '../defaults.js';
@@ -1,4 +1,4 @@
// Copyright 2017-2024 @polkadot/ui-keyring authors & contributors
// Copyright 2017-2026 @polkadot/ui-keyring authors & contributors
// SPDX-License-Identifier: Apache-2.0
import { contractKey } from '../defaults.js';
+1 -1
View File
@@ -1,4 +1,4 @@
// Copyright 2017-2024 @polkadot/ui-keyring authors & contributors
// Copyright 2017-2026 @polkadot/ui-keyring authors & contributors
// SPDX-License-Identifier: Apache-2.0
import { BehaviorSubject } from 'rxjs';
@@ -1,4 +1,4 @@
// Copyright 2017-2024 @polkadot/ui-keyring authors & contributors
// Copyright 2017-2026 @polkadot/ui-keyring authors & contributors
// SPDX-License-Identifier: Apache-2.0
import type { KeypairType } from '@polkadot/util-crypto/types';
+1 -1
View File
@@ -1,4 +1,4 @@
// Copyright 2017-2024 @polkadot/ui-keyring authors & contributors
// Copyright 2017-2026 @polkadot/ui-keyring authors & contributors
// SPDX-License-Identifier: Apache-2.0
import type { SubjectInfo } from './types.js';
+1 -1
View File
@@ -1,4 +1,4 @@
// Copyright 2017-2024 @polkadot/ui-keyring authors & contributors
// Copyright 2017-2026 @polkadot/ui-keyring authors & contributors
// SPDX-License-Identifier: Apache-2.0
import type { BehaviorSubject } from 'rxjs';
+1 -1
View File
@@ -1,4 +1,4 @@
// Copyright 2017-2024 @polkadot/ui-keyring authors & contributors
// Copyright 2017-2026 @polkadot/ui-keyring authors & contributors
// SPDX-License-Identifier: Apache-2.0
import type { Subscription } from 'rxjs';
+1 -1
View File
@@ -1,4 +1,4 @@
// Copyright 2017-2024 @polkadot/ui-keyring authors & contributors
// Copyright 2017-2026 @polkadot/ui-keyring authors & contributors
// SPDX-License-Identifier: Apache-2.0
import type { KeyringSectionOption } from './types.js';
+1 -1
View File
@@ -1,4 +1,4 @@
// Copyright 2017-2024 @polkadot/ui-keyring authors & contributors
// Copyright 2017-2026 @polkadot/ui-keyring authors & contributors
// SPDX-License-Identifier: Apache-2.0
import type { KeyringItemType, KeyringStruct } from '../types.js';
+1 -1
View File
@@ -1,4 +1,4 @@
// Copyright 2017-2024 @polkadot/ui-keyring authors & contributors
// Copyright 2017-2026 @polkadot/ui-keyring authors & contributors
// SPDX-License-Identifier: Apache-2.0
// Do not edit, auto-generated by @polkadot/dev
+2 -2
View File
@@ -1,6 +1,6 @@
// Copyright 2017-2024 @polkadot/ui-keyring authors & contributors
// Copyright 2017-2026 @polkadot/ui-keyring authors & contributors
// SPDX-License-Identifier: Apache-2.0
// Do not edit, auto-generated by @polkadot/dev
export const packageInfo = { name: '@polkadot/ui-keyring', path: 'auto', type: 'auto', version: '3.6.5' };
export const packageInfo = { name: '@polkadot/ui-keyring', path: 'auto', type: 'auto', version: '3.16.7-quantus.3' };
+1 -1
View File
@@ -1,4 +1,4 @@
// Copyright 2017-2024 @polkadot/ui-keyring authors & contributors
// Copyright 2017-2026 @polkadot/ui-keyring authors & contributors
// SPDX-License-Identifier: Apache-2.0
import type { KeyringJson, KeyringStore } from '../types.js';
+27 -1
View File
@@ -1,4 +1,4 @@
// Copyright 2017-2024 @polkadot/ui-keyring authors & contributors
// Copyright 2017-2026 @polkadot/ui-keyring authors & contributors
// SPDX-License-Identifier: Apache-2.0
import type { KeyringJson, KeyringStore } from '../types.js';
@@ -19,6 +19,28 @@ export class FileStore implements KeyringStore {
this.#path = path;
}
private validateKey (key: string): boolean {
// Make sure the key has a .json extension
if (!key.endsWith('.json')) {
console.error('Non-JSON file requested: ', key);
return false;
}
// Remove '.json'
const keyWithoutExtension = key.slice(0, -5);
// Only allow alphanumeric characters, hyphens, and underscores in the base filename
const safeKeyRegex = /^[a-zA-Z0-9_-]+$/;
if (!safeKeyRegex.test(keyWithoutExtension)) {
console.error('Invalid key format detected: ', key);
return false;
}
return true;
}
public all (fn: (key: string, value: KeyringJson) => void): void {
fs
.readdirSync(this.#path)
@@ -51,6 +73,10 @@ export class FileStore implements KeyringStore {
}
private _getPath (key: string): string {
if (!this.validateKey(key)) {
throw new Error('Invalid key format');
}
return path.join(this.#path, key);
}
+1 -1
View File
@@ -1,4 +1,4 @@
// Copyright 2017-2024 @polkadot/ui-keyring authors & contributors
// Copyright 2017-2026 @polkadot/ui-keyring authors & contributors
// SPDX-License-Identifier: Apache-2.0
export { BrowserStore } from './Browser.js';
+1 -1
View File
@@ -1,4 +1,4 @@
// Copyright 2017-2024 @polkadot/ui-keyring authors & contributors
// Copyright 2017-2026 @polkadot/ui-keyring authors & contributors
// SPDX-License-Identifier: Apache-2.0
import type { KeyringInstance as BaseKeyringInstance, KeyringOptions as KeyringOptionsBase, KeyringPair, KeyringPair$Json, KeyringPair$Meta } from '@polkadot/keyring/types';
+4 -4
View File
@@ -18,14 +18,14 @@
"./packageDetect.cjs"
],
"type": "module",
"version": "3.6.5",
"version": "3.16.7",
"main": "index.js",
"dependencies": {
"@polkadot/networks": "^12.6.2",
"@polkadot/util": "^12.6.2",
"@polkadot/networks": "^14.0.3",
"@polkadot/util": "^14.0.3",
"eventemitter3": "^5.0.1",
"store": "^2.0.12",
"tslib": "^2.6.2"
"tslib": "^2.8.1"
},
"devDependencies": {
"@types/store": "^2.0.5"
+15 -2
View File
@@ -1,4 +1,4 @@
// Copyright 2017-2024 @polkadot/ui-settings authors & contributors
// Copyright 2017-2026 @polkadot/ui-settings authors & contributors
// SPDX-License-Identifier: Apache-2.0
import type { Endpoint, EndpointType, Option, SettingsStruct } from './types.js';
@@ -8,7 +8,7 @@ import store from 'store';
import { hasProcess, isUndefined } from '@polkadot/util';
import { CAMERA, CAMERA_DEFAULT, CRYPTOS, CRYPTOS_ETH, CRYPTOS_LEDGER, ENDPOINT_DEFAULT, ENDPOINTS, ICON_DEFAULT, ICONS, LANGUAGE_DEFAULT, LEDGER_CONN, LEDGER_CONN_DEFAULT, LOCKING, LOCKING_DEFAULT, METADATA_UP, METADATA_UP_DEFAULT, NOTIFICATION_DEFAULT, PREFIX_DEFAULT, PREFIXES, STORAGE, STORAGE_DEFAULT, UIMODE_DEFAULT, UIMODES, UITHEME_DEFAULT, UITHEMES } from './defaults/index.js';
import { CAMERA, CAMERA_DEFAULT, CRYPTOS, CRYPTOS_ETH, CRYPTOS_LEDGER, ENDPOINT_DEFAULT, ENDPOINTS, ICON_DEFAULT, ICONS, LANGUAGE_DEFAULT, LEDGER_APP, LEDGER_APP_DEFAULT, LEDGER_CONN, LEDGER_CONN_DEFAULT, LOCKING, LOCKING_DEFAULT, METADATA_UP, METADATA_UP_DEFAULT, NOTIFICATION_DEFAULT, PREFIX_DEFAULT, PREFIXES, STORAGE, STORAGE_DEFAULT, UIMODE_DEFAULT, UIMODES, UITHEME_DEFAULT, UITHEMES } from './defaults/index.js';
type ChangeCallback = (settings: SettingsStruct) => void;
type OnTypes = 'change';
@@ -35,6 +35,8 @@ export class Settings implements SettingsStruct {
#icon: string;
#ledgerApp: string;
#ledgerConn: string;
#locking: string;
@@ -60,6 +62,7 @@ export class Settings implements SettingsStruct {
this.#apiUrl = (typeof settings.apiUrl === 'string' && settings.apiUrl) || (hasProcess && process.env?.['WS_URL']) || (ENDPOINT_DEFAULT.value as string);
this.#apiType = { param: this.#apiUrl, type: 'json-rpc' as EndpointType };
this.#camera = withDefault(CAMERA, settings.camera, CAMERA_DEFAULT);
this.#ledgerApp = withDefault(LEDGER_APP, settings.ledgerApp, LEDGER_APP_DEFAULT);
this.#ledgerConn = withDefault(LEDGER_CONN, settings.ledgerConn, LEDGER_CONN_DEFAULT);
this.#i18nLang = settings.i18nLang || LANGUAGE_DEFAULT;
this.#icon = settings.icon || ICON_DEFAULT;
@@ -96,6 +99,10 @@ export class Settings implements SettingsStruct {
return this.#notification;
}
public get ledgerApp (): string {
return this.#ledgerApp;
}
public get ledgerConn (): string {
return this.#ledgerConn;
}
@@ -144,6 +151,10 @@ export class Settings implements SettingsStruct {
return ICONS;
}
public get availableLedgerApp (): Option[] {
return LEDGER_APP;
}
public get availableLedgerConn (): Option[] {
return LEDGER_CONN;
}
@@ -183,6 +194,7 @@ export class Settings implements SettingsStruct {
camera: this.#camera,
i18nLang: this.#i18nLang,
icon: this.#icon,
ledgerApp: this.#ledgerApp,
ledgerConn: this.#ledgerConn,
locking: this.#locking,
metadataUp: this.#metadataUp,
@@ -199,6 +211,7 @@ export class Settings implements SettingsStruct {
this.#apiUrl = settings.apiUrl || this.#apiUrl;
this.#camera = settings.camera || this.#camera;
this.#ledgerConn = settings.ledgerConn || this.#ledgerConn;
this.#ledgerApp = settings.ledgerApp || this.#ledgerApp;
this.#i18nLang = settings.i18nLang || this.#i18nLang;
this.#icon = settings.icon || this.#icon;
this.#locking = settings.locking || this.#locking;
+1 -1
View File
@@ -1,4 +1,4 @@
// Copyright 2017-2024 @polkadot/ui-settings authors & contributors
// Copyright 2017-2026 @polkadot/ui-settings authors & contributors
// SPDX-License-Identifier: Apache-2.0
import { Settings, settings } from './Settings.js';
+1 -1
View File
@@ -1,4 +1,4 @@
// Copyright 2017-2024 @polkadot/ui-settings authors & contributors
// Copyright 2017-2026 @polkadot/ui-settings authors & contributors
// SPDX-License-Identifier: Apache-2.0
import { selectableNetworks } from '@polkadot/networks';
+1 -1
View File
@@ -1,4 +1,4 @@
// Copyright 2017-2024 @polkadot/ui-settings authors & contributors
// Copyright 2017-2026 @polkadot/ui-settings authors & contributors
// SPDX-License-Identifier: Apache-2.0
import type { Option } from '../types.js';
@@ -1,4 +1,4 @@
// Copyright 2017-2024 @polkadot/ui-settings authors & contributors
// Copyright 2017-2026 @polkadot/ui-settings authors & contributors
// SPDX-License-Identifier: Apache-2.0
import type { Option } from '../types.js';
+2 -2
View File
@@ -1,11 +1,11 @@
// Copyright 2017-2024 @polkadot/ui-settings authors & contributors
// Copyright 2017-2026 @polkadot/ui-settings authors & contributors
// SPDX-License-Identifier: Apache-2.0
import type { Option } from '../types.js';
export { CRYPTOS, CRYPTOS_ETH, CRYPTOS_LEDGER } from './crypto.js';
export { ENDPOINT_DEFAULT, ENDPOINTS } from './endpoints.js';
export { LEDGER_CONN, LEDGER_CONN_DEFAULT } from './ledger.js';
export { LEDGER_APP, LEDGER_APP_DEFAULT, LEDGER_CONN, LEDGER_CONN_DEFAULT } from './ledger.js';
export { PREFIX_DEFAULT, PREFIXES } from './ss58.js';
export { ICON_DEFAULT, ICON_DEFAULT_HOST, ICONS, NOTIFICATION_DEFAULT, UIMODE_DEFAULT, UIMODES, UITHEME_DEFAULT, UITHEMES } from './ui.js';
+21 -1
View File
@@ -1,4 +1,4 @@
// Copyright 2017-2024 @polkadot/ui-settings authors & contributors
// Copyright 2017-2026 @polkadot/ui-settings authors & contributors
// SPDX-License-Identifier: Apache-2.0
import type { Option } from '../types.js';
@@ -28,3 +28,23 @@ export const LEDGER_CONN: Option[] = [
value: 'hid'
}
];
export const LEDGER_APP_DEFAULT = 'generic';
export const LEDGER_APP: Option[] = [
{
info: 'generic',
text: 'Use the Ledger Polkadot Generic App',
value: 'generic'
},
{
info: 'migration',
text: 'Use the Ledger Migration App',
value: 'migration'
},
{
info: 'chainSpecific',
text: 'Use the Chain Specific Ledger App',
value: 'chainSpecific'
}
];
+1 -1
View File
@@ -1,4 +1,4 @@
// Copyright 2017-2024 @polkadot/ui-settings authors & contributors
// Copyright 2017-2026 @polkadot/ui-settings authors & contributors
// SPDX-License-Identifier: Apache-2.0
import type { Option } from '../types.js';
+1 -1
View File
@@ -1,4 +1,4 @@
// Copyright 2017-2024 @polkadot/ui-settings authors & contributors
// Copyright 2017-2026 @polkadot/ui-settings authors & contributors
// SPDX-License-Identifier: Apache-2.0
// matches https://polkadot.js.org & https://*.polkadot.io
+1 -1
View File
@@ -1,4 +1,4 @@
// Copyright 2017-2024 @polkadot/ui-settings authors & contributors
// Copyright 2017-2026 @polkadot/ui-settings authors & contributors
// SPDX-License-Identifier: Apache-2.0
import type { Option } from '../types.js';
+1 -1
View File
@@ -1,4 +1,4 @@
// Copyright 2017-2024 @polkadot/ui-settings authors & contributors
// Copyright 2017-2026 @polkadot/ui-settings authors & contributors
// SPDX-License-Identifier: Apache-2.0
import { settings } from './bundle.js';
+1 -1
View File
@@ -1,4 +1,4 @@
// Copyright 2017-2024 @polkadot/ui-settings authors & contributors
// Copyright 2017-2026 @polkadot/ui-settings authors & contributors
// SPDX-License-Identifier: Apache-2.0
// Do not edit, auto-generated by @polkadot/dev
+2 -2
View File
@@ -1,6 +1,6 @@
// Copyright 2017-2024 @polkadot/ui-settings authors & contributors
// Copyright 2017-2026 @polkadot/ui-settings authors & contributors
// SPDX-License-Identifier: Apache-2.0
// Do not edit, auto-generated by @polkadot/dev
export const packageInfo = { name: '@polkadot/ui-settings', path: 'auto', type: 'auto', version: '3.6.5' };
export const packageInfo = { name: '@polkadot/ui-settings', path: 'auto', type: 'auto', version: '3.16.7' };
+2 -1
View File
@@ -1,4 +1,4 @@
// Copyright 2017-2024 @polkadot/ui-settings authors & contributors
// Copyright 2017-2026 @polkadot/ui-settings authors & contributors
// SPDX-License-Identifier: Apache-2.0
export interface Option {
@@ -14,6 +14,7 @@ export interface SettingsStruct {
camera: string;
i18nLang: string;
icon: string;
ledgerApp: string;
ledgerConn: string;
locking: string;
metadataUp: string;
+4 -4
View File
@@ -18,15 +18,15 @@
"./packageDetect.cjs"
],
"type": "module",
"version": "3.6.5",
"version": "3.16.7",
"main": "index.js",
"dependencies": {
"colord": "^2.9.3",
"tslib": "^2.6.2"
"tslib": "^2.8.1"
},
"devDependencies": {
"@polkadot/util": "^12.6.2",
"@polkadot/util-crypto": "^12.6.2",
"@polkadot/util": "^14.0.3",
"@polkadot/util-crypto": "^14.0.3",
"@types/xmlserializer": "^0.6.6",
"xmlserializer": "^0.6.1"
},
+1 -1
View File
@@ -1,4 +1,4 @@
// Copyright 2018-2024 @polkadot/ui-shared authors & contributors
// Copyright 2018-2026 @polkadot/ui-shared authors & contributors
// SPDX-License-Identifier: Apache-2.0
export * from './icons/index.js';
@@ -1,7 +1,7 @@
Apache-2.0 License (Apache-2.0)
Copyright 2016 Dan Finlay
Copyright 2017-2024 @polkadot/ui-shared authors & contributors
Copyright 2017-2025 @polkadot/ui-shared authors & contributors
Permission to use, copy, modify, and/or distribute this software for any
purpose with or without fee is hereby granted, provided that the above
@@ -1,4 +1,4 @@
// Copyright 2017-2024 @polkadot/ui-shared authors & contributors
// Copyright 2017-2026 @polkadot/ui-shared authors & contributors
// SPDX-License-Identifier: Apache-2.0
/// <reference types="@polkadot/dev-test/globals.d.ts" />
@@ -1,4 +1,4 @@
// Copyright 2017-2024 @polkadot/ui-shared authors & contributors
// Copyright 2017-2026 @polkadot/ui-shared authors & contributors
// SPDX-License-Identifier: Apache-2.0
// Copyright 2016 Dan Finlay
@@ -1,4 +1,4 @@
// Copyright 2017-2024 @polkadot/ui-shared authors & contributors
// Copyright 2017-2026 @polkadot/ui-shared authors & contributors
// SPDX-License-Identifier: Apache-2.0
/// <reference types="@polkadot/dev-test/globals.d.ts" />
@@ -1,4 +1,4 @@
// Copyright 2017-2024 @polkadot/ui-shared authors & contributors
// Copyright 2017-2026 @polkadot/ui-shared authors & contributors
// SPDX-License-Identifier: Apache-2.0
// Copyright 2016 Dan Finlay
@@ -1,4 +1,4 @@
// Copyright 2017-2024 @polkadot/ui-shared authors & contributors
// Copyright 2017-2026 @polkadot/ui-shared authors & contributors
// SPDX-License-Identifier: Apache-2.0
// Copyright 2016 Dan Finlay
@@ -1,4 +1,4 @@
// Copyright 2017-2024 @polkadot/ui-shared authors & contributors
// Copyright 2017-2026 @polkadot/ui-shared authors & contributors
// SPDX-License-Identifier: Apache-2.0
// Copyright 2016 Dan Finlay
@@ -1,4 +1,4 @@
// Copyright 2017-2024 @polkadot/ui-shared authors & contributors
// Copyright 2017-2026 @polkadot/ui-shared authors & contributors
// SPDX-License-Identifier: Apache-2.0
/// <reference types="@polkadot/dev-test/globals.d.ts" />
@@ -17,7 +17,7 @@ describe('identicon', (): void => {
).toEqual(
// with original color ...
// '<div xmlns="http://www.w3.org/1999/xhtml" class="" style="background: white; border-radius: 128px; display: inline-block; height: 256px; margin: 0px; overflow: hidden; padding: 0px; width: 256px;"><div class="" style="background: rgb(20, 20, 20); border-radius: 128px; display: inline-block; height: 256px; margin: 0px; overflow: hidden; padding: 0px; width: 256px;"><svg xmlns="http://www.w3.org/2000/svg" x="0" y="0" width="256" height="256"><circle cx="128" cy="140.8" r="128" fill="hsl(212.10000000000002, 65.6%, 55.5%)"/><circle cx="128" cy="153.6" r="102.4" fill="hsl(9.800000000000011, 90.7%, 57.6%)"/><circle cx="128" cy="166.4" r="76.8" fill="hsl(345, 85.7%, 86.3%)"/><circle cx="128" cy="179.2" r="51.2" fill="hsl(261.9, 100%, 87.3%)"/><circle cx="128" cy="192" r="25.6" fill="hsl(345, 100%, 25.1%)"/></svg></div></div>'
'<div xmlns="http://www.w3.org/1999/xhtml" class="" style="background: white; border-radius: 128px; display: inline-block; height: 256px; margin: 0px; overflow: hidden; padding: 0px; width: 256px;"><div class="" style="background: rgb(26, 26, 26); border-radius: 128px; display: inline-block; height: 256px; margin: 0px; overflow: hidden; padding: 0px; width: 256px;"><svg xmlns="http://www.w3.org/2000/svg" x="0" y="0" width="256" height="256"><circle cx="128" cy="140.8" r="128" fill="hsl(212, 66%, 55%)"/><circle cx="128" cy="153.6" r="102.4" fill="hsl(10, 91%, 58%)"/><circle cx="128" cy="166.4" r="76.8" fill="hsl(345, 86%, 86%)"/><circle cx="128" cy="179.2" r="51.2" fill="hsl(262, 100%, 87%)"/><circle cx="128" cy="192" r="25.6" fill="hsl(345, 100%, 25%)"/></svg></div></div>'
'<div xmlns="http://www.w3.org/1999/xhtml" class="" style="background: white; border-radius: 128px; display: inline-block; height: 256px; margin: 0px; overflow: hidden; padding: 0px; width: 256px;"><div class="" style="background: rgb(255, 167, 26); border-radius: 128px; display: inline-block; height: 256px; margin: 0px; overflow: hidden; padding: 0px; width: 256px;"><svg xmlns="http://www.w3.org/2000/svg" x="0" y="0" width="256" height="256"><circle cx="128" cy="140.8" r="128" fill="hsl(212, 66%, 55%)"/><circle cx="128" cy="153.6" r="102.4" fill="hsl(10, 91%, 58%)"/><circle cx="128" cy="166.4" r="76.8" fill="hsl(345, 86%, 86%)"/><circle cx="128" cy="179.2" r="51.2" fill="hsl(262, 100%, 87%)"/><circle cx="128" cy="192" r="25.6" fill="hsl(345, 100%, 25%)"/></svg></div></div>'
);
});
@@ -30,7 +30,7 @@ describe('identicon', (): void => {
).toEqual(
// with original color ...
// '<div xmlns="http://www.w3.org/1999/xhtml" class="testClass" style="background: white; border-radius: 50px; display: block; height: 100px; margin: 0px; overflow: hidden; padding: 0px; width: 100px;"><div class="" style="background: rgb(20, 20, 20); border-radius: 50px; display: inline-block; height: 100px; margin: 0px; overflow: hidden; padding: 0px; width: 100px;"><svg xmlns="http://www.w3.org/2000/svg" x="0" y="0" width="100" height="100"><circle cx="50" cy="55" r="50" fill="hsl(212.10000000000002, 65.6%, 55.5%)"/><circle cx="50" cy="60" r="40" fill="hsl(9.800000000000011, 90.7%, 57.6%)"/><circle cx="50" cy="65" r="30" fill="hsl(345, 85.7%, 86.3%)"/><circle cx="50" cy="70" r="20" fill="hsl(261.9, 100%, 87.3%)"/><circle cx="50" cy="75" r="10" fill="hsl(345, 100%, 25.1%)"/></svg></div></div>'
'<div xmlns="http://www.w3.org/1999/xhtml" class="testClass" style="background: white; border-radius: 50px; display: block; height: 100px; margin: 0px; overflow: hidden; padding: 0px; width: 100px;"><div class="" style="background: rgb(26, 26, 26); border-radius: 50px; display: inline-block; height: 100px; margin: 0px; overflow: hidden; padding: 0px; width: 100px;"><svg xmlns="http://www.w3.org/2000/svg" x="0" y="0" width="100" height="100"><circle cx="50" cy="55" r="50" fill="hsl(212, 66%, 55%)"/><circle cx="50" cy="60" r="40" fill="hsl(10, 91%, 58%)"/><circle cx="50" cy="65" r="30" fill="hsl(345, 86%, 86%)"/><circle cx="50" cy="70" r="20" fill="hsl(262, 100%, 87%)"/><circle cx="50" cy="75" r="10" fill="hsl(345, 100%, 25%)"/></svg></div></div>'
'<div xmlns="http://www.w3.org/1999/xhtml" class="testClass" style="background: white; border-radius: 50px; display: block; height: 100px; margin: 0px; overflow: hidden; padding: 0px; width: 100px;"><div class="" style="background: rgb(255, 167, 26); border-radius: 50px; display: inline-block; height: 100px; margin: 0px; overflow: hidden; padding: 0px; width: 100px;"><svg xmlns="http://www.w3.org/2000/svg" x="0" y="0" width="100" height="100"><circle cx="50" cy="55" r="50" fill="hsl(212, 66%, 55%)"/><circle cx="50" cy="60" r="40" fill="hsl(10, 91%, 58%)"/><circle cx="50" cy="65" r="30" fill="hsl(345, 86%, 86%)"/><circle cx="50" cy="70" r="20" fill="hsl(262, 100%, 87%)"/><circle cx="50" cy="75" r="10" fill="hsl(345, 100%, 25%)"/></svg></div></div>'
);
});
});

Some files were not shown because too many files have changed in this diff Show More