Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@

## Unreleased (develop)

- added: eCash.com (ECX) wallet metadata, kept disabled until the chain forks from Bitcoin on 2026-08-22.
- added: App/device attestation for gated info-server requests
- added: "-m" tag on the version number in the Help scene for Maestro test builds
- added: Sign Message option in the wallet list menu for Bitcoin-family wallets, letting users prove self-hosted wallet ownership to exchanges by signing an exchange-provided message.
Expand All @@ -16,6 +17,7 @@
- changed: Use the UI4 warning card for the Reveal Raw Keys and Reveal Master Private Key password confirmation warnings.
- changed: Tron resource staking now describes its claim action as reclaiming your own TRX, instead of claiming a reward.
- changed: Deep links now wait only for the account state they actually use, so a link that just opens a scene, such as the buy/sell entry, follows immediately after login instead of waiting for every wallet to finish loading.
- fixed: Opening a wallet whose plugin has no entry in the GUI's currency table no longer crashes the app, and sharing a transaction from a chain with no block explorer no longer shares an empty link.
- fixed: The buy/sell amount field no longer reads "Amount undefined" while the app is still working out which wallet to use.
- fixed: Show the Monero Transaction Key of a send whose key never reached the transaction's saved metadata, by falling back to the key the wallet engine mirrors into `otherParams`. Covers sends made on 4.49.0 and later while the send path reported no key, on devices that still hold the original wallet cache.
- fixed: Bitwave CSV exports now use ISO 8601 UTC timestamps, leave the fee columns blank so Bitwave does not double-count fees, and copy the description into the second custom metadata column.
Expand Down
2 changes: 2 additions & 0 deletions src/components/modals/WalletListMenuModal.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -98,6 +98,7 @@ export const WALLET_LIST_MENU: Array<{
'digibyte',
'dogecoin',
'eboost',
'ecashcom',
'eos',
'zcoin',
'feathercoin',
Expand Down Expand Up @@ -132,6 +133,7 @@ export const WALLET_LIST_MENU: Array<{
'dogecoin',
'eboost',
'ecash',
'ecashcom',
'feathercoin',
'groestlcoin',
'litecoin',
Expand Down
2 changes: 1 addition & 1 deletion src/components/themed/BuyCrypto.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -56,7 +56,7 @@ export const BuyCrypto: React.FC<Props> = (props: Props) => {

const { displayName, pluginId } = wallet.currencyInfo
const { highPrecisionSyncRatioDisplay = false } =
SPECIAL_CURRENCY_INFO[pluginId]
SPECIAL_CURRENCY_INFO[pluginId] ?? {}
const syncRatioPrecisionOpts = highPrecisionSyncRatioDisplay
? {
minPrecision: 5,
Expand Down
3 changes: 3 additions & 0 deletions src/components/themed/TransactionListRow.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -250,6 +250,9 @@ const TransactionViewInner: React.FC<TransactionViewInnerProps> = props => {
})

const handleLongPress = useHandler(() => {
// Chains with no block explorer publish an empty template, which would
// share an empty link:
if (currencyInfo.transactionExplorer === '') return
const url = sprintf(currencyInfo.transactionExplorer, transaction.txid)
const shareOptions = {
failOnCancel: false,
Expand Down
12 changes: 8 additions & 4 deletions src/components/themed/WalletListCreateRow.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -32,9 +32,9 @@ export interface WalletListCreateRowProps {
onPress?: (walletId: string, tokenId: EdgeTokenId) => Promise<void>
}

export const WalletListCreateRowComponent = (
props: WalletListCreateRowProps
): React.ReactElement => {
export const WalletListCreateRowComponent: React.FC<
WalletListCreateRowProps
> = props => {
const {
createItem,
createWalletId,
Expand Down Expand Up @@ -160,7 +160,11 @@ export const WalletListCreateRowComponent = (
})

return (
<EdgeTouchableOpacity style={styles.row} onPress={handlePress}>
<EdgeTouchableOpacity
style={styles.row}
testID={`walletListCreateRow_${pluginId ?? 'unknown'}`}
onPress={handlePress}
>
<CryptoIcon
marginRem={1}
pluginId={pluginId}
Expand Down
7 changes: 7 additions & 0 deletions src/constants/WalletAndCurrencyConstants.ts
Original file line number Diff line number Diff line change
Expand Up @@ -58,6 +58,7 @@ export const CURRENCY_SETTINGS_KEYS = [
'digibyte',
'dogecoin',
'eboost',
'ecashcom',
'ethDev',
'ethereum',
'ethereumclassic',
Expand Down Expand Up @@ -524,6 +525,12 @@ export const SPECIAL_CURRENCY_INFO: Record<string, SpecialCurrencyInfo> = {
isStakingSupported: false,
unstoppableDomainsTicker: 'ECASH'
},
ecashcom: {
Comment thread
j0ntz marked this conversation as resolved.
hasSegwit: true,
maxSpendTargets: UTXO_MAX_SPEND_TARGETS,
initWalletName: lstrings.string_first_ecashcom_wallet_name,
isImportKeySupported: true
},
Comment thread
cursor[bot] marked this conversation as resolved.
ethereum: {
initWalletName: lstrings.string_first_ethereum_wallet_name,
dummyPublicAddress: '0x0d73358506663d484945ba85d0cd435ad610b0a0',
Expand Down
1 change: 1 addition & 0 deletions src/locales/en_US.ts
Original file line number Diff line number Diff line change
Expand Up @@ -748,6 +748,7 @@ const strings = {
string_first_dash_wallet_name: 'My Dash',
string_first_digibyte_wallet_name: 'My DigiByte',
string_first_ecash_wallet_name: 'My eCash',
string_first_ecashcom_wallet_name: 'My eCash.com',
string_first_eos_wallet_name: 'My EOS',
string_first_holesky_wallet_name: 'My Holesky',
string_first_hyperevm_wallet_name: 'My HyperEVM',
Expand Down
1 change: 1 addition & 0 deletions src/locales/strings/enUS.json
Original file line number Diff line number Diff line change
Expand Up @@ -570,6 +570,7 @@
"string_first_dash_wallet_name": "My Dash",
"string_first_digibyte_wallet_name": "My DigiByte",
"string_first_ecash_wallet_name": "My eCash",
"string_first_ecashcom_wallet_name": "My eCash.com",
"string_first_eos_wallet_name": "My EOS",
"string_first_holesky_wallet_name": "My Holesky",
"string_first_hyperevm_wallet_name": "My HyperEVM",
Expand Down
3 changes: 3 additions & 0 deletions src/util/corePlugins.ts
Original file line number Diff line number Diff line change
Expand Up @@ -70,6 +70,9 @@ export const currencyPlugins: EdgeCorePluginsInit = {
bitcoingold: true,
bitcoingoldtestnet: false,
bitcoinsv: true,
// eCash.com (ECX) forks from Bitcoin on 2026-08-22. Enable once a Blockbook
// endpoint for the chain exists:
ecashcom: false,
bitcointestnet: true,
bitcointestnet4: true,
dash: ENV.DASH_INIT,
Expand Down
Loading