From d1891f3098c1cd33b951314564c85848513acb72 Mon Sep 17 00:00:00 2001 From: Pauloneo Date: Wed, 8 Jul 2026 07:55:43 -0400 Subject: [PATCH 1/5] Fix Windows path handling for builtin protocol modules --- copy-builtin-modules.js | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/copy-builtin-modules.js b/copy-builtin-modules.js index 97c987e5..b397267b 100644 --- a/copy-builtin-modules.js +++ b/copy-builtin-modules.js @@ -57,7 +57,7 @@ const communityModules = [{ path: path.join(rootdir, 'node_modules/@airgap-commu function createAirGapModule(module) { const packageJson = require(`./${path.join(module.path, 'package.json')}`) - const namespace = module.path.split('/').slice(-1)[0] + const namespace = path.basename(module.path) const outputDir = path.join(assetsdir, `protocol_modules/${namespace}`) const outputFile = 'index.browserify.js' @@ -84,7 +84,8 @@ function createAirGapModule(module) { } function copyCommunityModule(module) { - const namespace = module.path.split('/').slice(-1)[0] + console.log('MODULE PATH:', module.path) + const namespace = path.basename(module.path) const outputDir = path.join(assetsdir, `protocol_modules/${namespace}`) fs.mkdirSync(outputDir, { recursive: true }) From 43256746cbad0ffd1395ca378fdee34ff5e20898 Mon Sep 17 00:00:00 2001 From: Pauloneo Date: Wed, 8 Jul 2026 08:28:48 -0400 Subject: [PATCH 2/5] Display master fingerprint for passphrase wallets --- .../account-address/account-address.page.html | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) diff --git a/src/app/pages/account-address/account-address.page.html b/src/app/pages/account-address/account-address.page.html index 2e363bfc..ece78461 100644 --- a/src/app/pages/account-address/account-address.page.html +++ b/src/app/pages/account-address/account-address.page.html @@ -34,9 +34,19 @@

{{ protocolName }} {{ protocolSymbol }}

{{ wallet.derivationPath }}

- HD Wallet - BIP39 passphrase -

+ + HD Wallet + + + + Master Fingerprint: + {{ wallet.masterFingerprint }} + + + + BIP39 Passphrase + +

From d1e9bff20c8ac75cee776f587ca7342ba05b9800 Mon Sep 17 00:00:00 2001 From: Pauloneo Date: Thu, 9 Jul 2026 12:21:14 -0400 Subject: [PATCH 3/5] Add wallet label display and fix account item layout --- src/app/pages/account-add/account-add.page.html | 11 +++++++++++ src/app/pages/account-add/account-add.page.ts | 14 ++++++++------ src/app/services/secrets/secrets.service.ts | 2 ++ 3 files changed, 21 insertions(+), 6 deletions(-) diff --git a/src/app/pages/account-add/account-add.page.html b/src/app/pages/account-add/account-add.page.html index f91cd71c..fe62baa7 100644 --- a/src/app/pages/account-add/account-add.page.html +++ b/src/app/pages/account-add/account-add.page.html @@ -57,6 +57,17 @@

+ + + Nome da conta + + + + + BIP-39 Passphrase diff --git a/src/app/pages/account-add/account-add.page.ts b/src/app/pages/account-add/account-add.page.ts index 5cc4c58c..42ab63ae 100644 --- a/src/app/pages/account-add/account-add.page.ts +++ b/src/app/pages/account-add/account-add.page.ts @@ -46,6 +46,7 @@ export class AccountAddPage { public isBip39PassphraseEnabled: boolean = BIP39_PASSPHRASE_ENABLED public revealBip39Passphrase: boolean = false public bip39Passphrase: string = '' + public accountLabel: string = '' public isAppAdvancedMode$: Observable = this.storageService .subscribe(VaultStorageKey.ADVANCED_MODE_TYPE) @@ -182,12 +183,13 @@ export class AccountAddPage { selectedProtocols.map(async (protocolWrapper: ProtocolWrapper) => { const protocol = protocolWrapper.protocol return { - protocolIdentifier: await protocol.getIdentifier(), - isHDWallet: protocolWrapper.isHDWallet, - customDerivationPath: protocolWrapper.customDerivationPath ?? (await protocol.getStandardDerivationPath()), - bip39Passphrase: this.bip39Passphrase, - isActive: true - } + protocolIdentifier: await protocol.getIdentifier(), + isHDWallet: protocolWrapper.isHDWallet, + customDerivationPath: protocolWrapper.customDerivationPath ?? (await protocol.getStandardDerivationPath()), + bip39Passphrase: this.bip39Passphrase, + isActive: true, + label: this.accountLabel + } }) ) ) diff --git a/src/app/services/secrets/secrets.service.ts b/src/app/services/secrets/secrets.service.ts index 8053cf18..0a709304 100644 --- a/src/app/services/secrets/secrets.service.ts +++ b/src/app/services/secrets/secrets.service.ts @@ -53,6 +53,7 @@ interface AddWalletConifg { customDerivationPath: string bip39Passphrase: string isActive: boolean + label?: string } @Injectable({ providedIn: 'root' @@ -624,6 +625,7 @@ export class SecretsService { const addresses: string[] = await wallet.deriveAddresses(1) wallet.addresses = addresses + wallet.label = config.label return wallet } From 56c6f580f0ea9639d6a39ba012c92eddb9901878 Mon Sep 17 00:00:00 2001 From: Pauloneo Date: Thu, 9 Jul 2026 12:22:23 -0400 Subject: [PATCH 4/5] Add wallet label display and fix account item layout --- src/app/app.scss | 9 +++++++++ src/app/pages/accounts-list/accounts-list.page.html | 4 ++-- src/app/services/secrets/secrets.service.ts | 1 + 3 files changed, 12 insertions(+), 2 deletions(-) diff --git a/src/app/app.scss b/src/app/app.scss index 2d2a3f7d..a23e716d 100644 --- a/src/app/app.scss +++ b/src/app/app.scss @@ -129,3 +129,12 @@ pre { .transparent { --background: none transparent !important; } + +airgap-account-item ion-label div { + display: block !important; +} + +airgap-account-item ion-label div p { + text-align: left; + margin-left: 0; +} \ No newline at end of file diff --git a/src/app/pages/accounts-list/accounts-list.page.html b/src/app/pages/accounts-list/accounts-list.page.html index faef75db..5f7e9cf5 100644 --- a/src/app/pages/accounts-list/accounts-list.page.html +++ b/src/app/pages/accounts-list/accounts-list.page.html @@ -31,12 +31,12 @@ - + - + diff --git a/src/app/services/secrets/secrets.service.ts b/src/app/services/secrets/secrets.service.ts index 0a709304..10ad0fcd 100644 --- a/src/app/services/secrets/secrets.service.ts +++ b/src/app/services/secrets/secrets.service.ts @@ -126,6 +126,7 @@ export class SecretsService { serializedWallet.status ?? AirGapWalletStatus.ACTIVE ) airGapWallet.addresses = serializedWallet.addresses + airGapWallet.label = serializedWallet.label return airGapWallet }) ) From b01cade4996bda52946defa8444e7392ea72620f Mon Sep 17 00:00:00 2001 From: Pauloneo Date: Thu, 9 Jul 2026 17:06:24 -0400 Subject: [PATCH 5/5] Corrige salvamento do label das contas --- src/app/services/iac/iac.service.ts | 1 + src/app/services/secrets/secrets.service.ts | 24 +++++++++++++++++---- 2 files changed, 21 insertions(+), 4 deletions(-) diff --git a/src/app/services/iac/iac.service.ts b/src/app/services/iac/iac.service.ts index 2ab1c1e2..3371e1fb 100644 --- a/src/app/services/iac/iac.service.ts +++ b/src/app/services/iac/iac.service.ts @@ -330,6 +330,7 @@ export class IACService extends BaseIACService { baseWallet.status ) correctWallet.addresses = baseWallet.addresses + correctWallet.label = baseWallet.label } catch (e) { if (e.message === 'PROTOCOL_NOT_SUPPORTED') { correctWallet = baseWallet diff --git a/src/app/services/secrets/secrets.service.ts b/src/app/services/secrets/secrets.service.ts index 10ad0fcd..2b5122f6 100644 --- a/src/app/services/secrets/secrets.service.ts +++ b/src/app/services/secrets/secrets.service.ts @@ -127,6 +127,7 @@ export class SecretsService { ) airGapWallet.addresses = serializedWallet.addresses airGapWallet.label = serializedWallet.label + return airGapWallet }) ) @@ -496,8 +497,12 @@ export class SecretsService { if (storedSecret === undefined) { return secret } - const wallets: SerializedAirGapWallet[] = await Promise.all(secret.wallets.slice(0).map((wallet: AirGapWallet) => wallet.toJSON())) - for (let i = 0; i < storedSecret.wallets.length; ++i) { + + const wallets: SerializedAirGapWallet[] = await Promise.all( + secret.wallets.slice(0).map((wallet: AirGapWallet) => wallet.toJSON()) + ) + + for (let i = 0; i < storedSecret.wallets.length; ++i) { const serializedWallet = storedSecret.wallets[i] as unknown as SerializedAirGapWallet const filtered: (AirGapWallet | SerializedAirGapWallet | undefined)[] = await Promise.all( @@ -515,9 +520,20 @@ export class SecretsService { wallets.push(serializedWallet) } } + const result = MnemonicSecret.init(secret) - result.wallets = wallets as unknown as AirGapWallet[] - return result + result.wallets = wallets.map((wallet: SerializedAirGapWallet) => { + const original = secret.wallets.find( + (w) => w.publicKey === wallet.publicKey + ) + + return { + ...wallet, + label: original?.label ?? wallet.label ?? '' + } as unknown as AirGapWallet +}) + +return result }) )