From a91d482b7b776ce6f75cd7fa9210b7a265706f17 Mon Sep 17 00:00:00 2001 From: bernd2022 <104787072+bernd2022@users.noreply.github.com> Date: Wed, 25 Feb 2026 13:23:41 +0100 Subject: [PATCH 1/2] feat: add Firo blockchain CLI login support (#969) Add CLI_FIRO wallet type with address validation and blockchain mappings to enable Firo login via the CLI wallet flow. --- package-lock.json | 16 ++++++++-------- package.json | 4 ++-- src/components/home/connect-wrapper.tsx | 1 + src/components/home/install-hint.tsx | 1 + src/components/home/wallet/connect-cli.tsx | 2 ++ src/config/feature-tree.ts | 4 ++++ src/contexts/wallet.context.tsx | 3 +++ src/hooks/blockchain.hook.ts | 1 + 8 files changed, 22 insertions(+), 10 deletions(-) diff --git a/package-lock.json b/package-lock.json index dc8b0f1f2..3a7923e99 100644 --- a/package-lock.json +++ b/package-lock.json @@ -9,8 +9,8 @@ "version": "1.0.4", "license": "MIT", "dependencies": { - "@dfx.swiss/react": "^1.3.0-beta.237", - "@dfx.swiss/react-components": "^1.3.0-beta.237", + "@dfx.swiss/react": "^1.3.0-beta.238", + "@dfx.swiss/react-components": "^1.3.0-beta.238", "@ledgerhq/hw-app-btc": "^6.24.1", "@ledgerhq/hw-app-eth": "^6.33.7", "@ledgerhq/hw-transport-webhid": "^6.27.19", @@ -2631,9 +2631,9 @@ } }, "node_modules/@dfx.swiss/react": { - "version": "1.3.0-beta.237", - "resolved": "https://registry.npmjs.org/@dfx.swiss/react/-/react-1.3.0-beta.237.tgz", - "integrity": "sha512-VDVYw7wnUHxSy3DGN6rGS9UsYkn10GOienYcI5MGubKVGtkWY8GFRVQ9NeQBjIHFPHi9EJaDmM7GI0ZYDRfEew==", + "version": "1.3.0-beta.238", + "resolved": "https://registry.npmjs.org/@dfx.swiss/react/-/react-1.3.0-beta.238.tgz", + "integrity": "sha512-wr+WDat1iUcs3gxGljC2q8HSK3esal/AH5H3FLbo21c5uOO6jDAqyfRK7olAJyoG1aouM5uLLEyjXutX+Csvrw==", "license": "MIT", "dependencies": { "ibantools": "^4.2.1", @@ -2644,9 +2644,9 @@ } }, "node_modules/@dfx.swiss/react-components": { - "version": "1.3.0-beta.237", - "resolved": "https://registry.npmjs.org/@dfx.swiss/react-components/-/react-components-1.3.0-beta.237.tgz", - "integrity": "sha512-1xlqEB20rAfnAyuv4I+dQu1lsUyW4jXXo5Qxxn2hRAVaeBKddvv/vOWrQghSACxudwabn9aeLmicQQAQ67TXog==", + "version": "1.3.0-beta.238", + "resolved": "https://registry.npmjs.org/@dfx.swiss/react-components/-/react-components-1.3.0-beta.238.tgz", + "integrity": "sha512-nnJLH+6oAE/BuHIDirNTz+Ea/tXjjRpHzQQxeqrB3t5ehD+9EtUbk/ZG2o/jqkwUApae2X6aWM3yfmSQSmnHmw==", "license": "MIT", "dependencies": { "@floating-ui/react": "^0.18.1", diff --git a/package.json b/package.json index 5cde4ccbe..ccf9ddb0a 100644 --- a/package.json +++ b/package.json @@ -12,8 +12,8 @@ "access": "public" }, "dependencies": { - "@dfx.swiss/react": "^1.3.0-beta.237", - "@dfx.swiss/react-components": "^1.3.0-beta.237", + "@dfx.swiss/react": "^1.3.0-beta.238", + "@dfx.swiss/react-components": "^1.3.0-beta.238", "@ledgerhq/hw-app-btc": "^6.24.1", "@ledgerhq/hw-app-eth": "^6.33.7", "@ledgerhq/hw-transport-webhid": "^6.27.19", diff --git a/src/components/home/connect-wrapper.tsx b/src/components/home/connect-wrapper.tsx index 8459d1ef7..0f0995657 100644 --- a/src/components/home/connect-wrapper.tsx +++ b/src/components/home/connect-wrapper.tsx @@ -41,6 +41,7 @@ export function ConnectWrapper(props: ConnectProps): JSX.Element { case WalletType.CLI_BTC: case WalletType.CLI_SPARK: case WalletType.CLI_LN: + case WalletType.CLI_FIRO: case WalletType.CLI_XMR: case WalletType.CLI_ZANO: case WalletType.CLI_ETH: diff --git a/src/components/home/install-hint.tsx b/src/components/home/install-hint.tsx index 519c7900b..dd0b78858 100644 --- a/src/components/home/install-hint.tsx +++ b/src/components/home/install-hint.tsx @@ -34,6 +34,7 @@ export function InstallHint({ type, onConfirm }: { type: WalletType; onConfirm: case WalletType.CLI_BTC: case WalletType.CLI_LN: + case WalletType.CLI_FIRO: case WalletType.CLI_XMR: case WalletType.CLI_ZANO: case WalletType.CLI_ETH: diff --git a/src/components/home/wallet/connect-cli.tsx b/src/components/home/wallet/connect-cli.tsx index 733e8a4bb..fb6e3dc80 100644 --- a/src/components/home/wallet/connect-cli.tsx +++ b/src/components/home/wallet/connect-cli.tsx @@ -32,6 +32,7 @@ const Wallets = [ WalletType.CLI_BTC, WalletType.CLI_LN, WalletType.CLI_ETH, + WalletType.CLI_FIRO, WalletType.CLI_XMR, WalletType.CLI_ZANO, WalletType.CLI_ADA, @@ -96,6 +97,7 @@ function Content({ wallet, isConnecting, connect, error, form, onSwitch, rootRef const addressRegex: { [wallet in WalletType]?: RegExp } = { [WalletType.CLI_BTC]: /^([13]|bc1)[a-zA-HJ-NP-Z0-9]{25,62}$/, [WalletType.CLI_LN]: /^((LNURL|LNDHUB)[A-Z0-9]{25,250}|LNNID[A-Z0-9]{66}|\S+@\S+\.\S+)$/, + [WalletType.CLI_FIRO]: /^a[a-zA-HJ-NP-Z0-9]{33}$/, [WalletType.CLI_XMR]: /^[48][0-9AB][1-9A-HJ-NP-Za-km-z]{93}$/, [WalletType.CLI_ZANO]: /^(Z[a-zA-Z0-9]{96}|iZ[a-zA-Z0-9]{106})$/, [WalletType.CLI_ETH]: /^0x\w{40}$/, diff --git a/src/config/feature-tree.ts b/src/config/feature-tree.ts index 3e3e23ce4..c50f7da2e 100644 --- a/src/config/feature-tree.ts +++ b/src/config/feature-tree.ts @@ -1487,6 +1487,8 @@ export const FeatureTree: Page[] = [ switch (params.blockchain) { case Blockchain.BITCOIN: return { type: WalletType.CLI_BTC }; + case Blockchain.FIRO: + return { type: WalletType.CLI_FIRO }; case Blockchain.MONERO: return { type: WalletType.CLI_XMR }; case Blockchain.ZANO: @@ -1625,6 +1627,8 @@ export const FeatureTree: Page[] = [ switch (params.blockchain) { case Blockchain.BITCOIN: return { type: WalletType.CLI_BTC }; + case Blockchain.FIRO: + return { type: WalletType.CLI_FIRO }; case Blockchain.MONERO: return { type: WalletType.CLI_XMR }; case Blockchain.ZANO: diff --git a/src/contexts/wallet.context.tsx b/src/contexts/wallet.context.tsx index 73078ec62..407911acd 100644 --- a/src/contexts/wallet.context.tsx +++ b/src/contexts/wallet.context.tsx @@ -18,6 +18,7 @@ export enum WalletType { TREZOR_ETH = 'TrezorEth', CLI_BTC = 'CliBtc', CLI_SPARK = 'CliSpark', + CLI_FIRO = 'CliFiro', CLI_XMR = 'CliXmr', CLI_ZANO = 'CliZano', CLI_ETH = 'CliEth', @@ -61,6 +62,7 @@ export const WalletBlockchains: { [w in WalletType]?: Blockchain[] } = { [WalletType.TREZOR_ETH]: [Blockchain.ETHEREUM, Blockchain.ARBITRUM, Blockchain.OPTIMISM, Blockchain.POLYGON], [WalletType.CLI_BTC]: [Blockchain.BITCOIN], [WalletType.CLI_SPARK]: [Blockchain.SPARK], + [WalletType.CLI_FIRO]: [Blockchain.FIRO], [WalletType.CLI_LN]: [Blockchain.LIGHTNING], [WalletType.CLI_XMR]: [Blockchain.MONERO], [WalletType.CLI_ZANO]: [Blockchain.ZANO], @@ -119,6 +121,7 @@ const WalletTypeMap: { [k in WalletType]: AuthWalletType | undefined } = { [WalletType.TREZOR_ETH]: AuthWalletType.TREZOR, [WalletType.CLI_BTC]: AuthWalletType.CLI, [WalletType.CLI_SPARK]: AuthWalletType.CLI, + [WalletType.CLI_FIRO]: AuthWalletType.CLI, [WalletType.CLI_LN]: AuthWalletType.CLI, [WalletType.CLI_XMR]: AuthWalletType.CLI, [WalletType.CLI_ZANO]: AuthWalletType.CLI, diff --git a/src/hooks/blockchain.hook.ts b/src/hooks/blockchain.hook.ts index 6be865986..3e4677bf9 100644 --- a/src/hooks/blockchain.hook.ts +++ b/src/hooks/blockchain.hook.ts @@ -76,6 +76,7 @@ export function useBlockchain(): BlockchainInterface { [Blockchain.DEFICHAIN]: 'DeFiChain', [Blockchain.ARWEAVE]: 'Arweave', [Blockchain.CARDANO]: 'Cardano', + [Blockchain.FIRO]: 'Firo', [Blockchain.MONERO]: 'Monero', [Blockchain.ZANO]: 'Zano', [Blockchain.SOLANA]: 'Solana', From b88e7b293b9df2df4ae2a4bc2db877d3fa9b477d Mon Sep 17 00:00:00 2001 From: David May <85513542+davidleomay@users.noreply.github.com> Date: Wed, 25 Feb 2026 16:08:44 +0100 Subject: [PATCH 2/2] feat: added FIRO icon (#971) --- package-lock.json | 16 ++++++++-------- package.json | 4 ++-- 2 files changed, 10 insertions(+), 10 deletions(-) diff --git a/package-lock.json b/package-lock.json index 3a7923e99..bdee48230 100644 --- a/package-lock.json +++ b/package-lock.json @@ -9,8 +9,8 @@ "version": "1.0.4", "license": "MIT", "dependencies": { - "@dfx.swiss/react": "^1.3.0-beta.238", - "@dfx.swiss/react-components": "^1.3.0-beta.238", + "@dfx.swiss/react": "^1.3.0-beta.239", + "@dfx.swiss/react-components": "^1.3.0-beta.239", "@ledgerhq/hw-app-btc": "^6.24.1", "@ledgerhq/hw-app-eth": "^6.33.7", "@ledgerhq/hw-transport-webhid": "^6.27.19", @@ -2631,9 +2631,9 @@ } }, "node_modules/@dfx.swiss/react": { - "version": "1.3.0-beta.238", - "resolved": "https://registry.npmjs.org/@dfx.swiss/react/-/react-1.3.0-beta.238.tgz", - "integrity": "sha512-wr+WDat1iUcs3gxGljC2q8HSK3esal/AH5H3FLbo21c5uOO6jDAqyfRK7olAJyoG1aouM5uLLEyjXutX+Csvrw==", + "version": "1.3.0-beta.239", + "resolved": "https://registry.npmjs.org/@dfx.swiss/react/-/react-1.3.0-beta.239.tgz", + "integrity": "sha512-6JsyvCYiXbkHcr8Jl28m7LOS2F4RevAHIABLxhMS3q8qD+OLhMsTwVp4QCgdCxJHVFPpM/+sGfe5EycR91hrmg==", "license": "MIT", "dependencies": { "ibantools": "^4.2.1", @@ -2644,9 +2644,9 @@ } }, "node_modules/@dfx.swiss/react-components": { - "version": "1.3.0-beta.238", - "resolved": "https://registry.npmjs.org/@dfx.swiss/react-components/-/react-components-1.3.0-beta.238.tgz", - "integrity": "sha512-nnJLH+6oAE/BuHIDirNTz+Ea/tXjjRpHzQQxeqrB3t5ehD+9EtUbk/ZG2o/jqkwUApae2X6aWM3yfmSQSmnHmw==", + "version": "1.3.0-beta.239", + "resolved": "https://registry.npmjs.org/@dfx.swiss/react-components/-/react-components-1.3.0-beta.239.tgz", + "integrity": "sha512-Ff7pc+pJlMtk5flhZrkhRkde9bmbC/quevUnzyIub9CWKe3858sNw7FZzT6y14DGtCrlDpixWRV24Whb7Vz+bA==", "license": "MIT", "dependencies": { "@floating-ui/react": "^0.18.1", diff --git a/package.json b/package.json index ccf9ddb0a..81a3e826a 100644 --- a/package.json +++ b/package.json @@ -12,8 +12,8 @@ "access": "public" }, "dependencies": { - "@dfx.swiss/react": "^1.3.0-beta.238", - "@dfx.swiss/react-components": "^1.3.0-beta.238", + "@dfx.swiss/react": "^1.3.0-beta.239", + "@dfx.swiss/react-components": "^1.3.0-beta.239", "@ledgerhq/hw-app-btc": "^6.24.1", "@ledgerhq/hw-app-eth": "^6.33.7", "@ledgerhq/hw-transport-webhid": "^6.27.19",