From 15e856e63fb4032e65edd9586854774cc4bf713f Mon Sep 17 00:00:00 2001 From: user Date: Fri, 27 Feb 2026 14:18:29 -0800 Subject: [PATCH 1/3] fix: show wallet name for own addresses on approve-tx view (closes #21) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The approve-tx view was showing raw addresses for From/To even when they belonged to the user's wallet. Now uses addressTitle() to display the wallet name (e.g. 'My Wallet — Address 1') consistently with other views. --- src/popup/views/approval.js | 18 ++++++++++++++++-- 1 file changed, 16 insertions(+), 2 deletions(-) diff --git a/src/popup/views/approval.js b/src/popup/views/approval.js index 58319ed..abd29c7 100644 --- a/src/popup/views/approval.js +++ b/src/popup/views/approval.js @@ -1,4 +1,10 @@ -const { $, addressDotHtml, escapeHtml, showView } = require("./helpers"); +const { + $, + addressDotHtml, + addressTitle, + escapeHtml, + showView, +} = require("./helpers"); const { state, saveState } = require("../../shared/state"); const { formatEther, formatUnits, Interface, toUtf8String } = require("ethers"); const { ERC20_ABI } = require("../../shared/constants"); @@ -22,7 +28,15 @@ function approvalAddressHtml(address) { const dot = addressDotHtml(address); const link = `https://etherscan.io/address/${address}`; const extLink = `${EXT_ICON}`; - return `
${dot}${escapeHtml(address)}${extLink}
`; + const title = addressTitle(address, state.wallets); + let html = ""; + if (title) { + html += `
${dot}${escapeHtml(title)}
`; + html += `
${escapeHtml(address)}${extLink}
`; + } else { + html += `
${dot}${escapeHtml(address)}${extLink}
`; + } + return html; } function formatTxValue(val) { From bf9a4830310993d6fcdde8f51df4ea06cbdccb10 Mon Sep 17 00:00:00 2001 From: user Date: Fri, 27 Feb 2026 14:28:20 -0800 Subject: [PATCH 2/3] fix: show wallet/address titles in send, txStatus, and home tx list (closes #26, closes #27, closes #28) - send.js: show addressTitle() above ENS name and address in From field - txStatus.js: show addressTitle() in To address when it's a local wallet - home.js: show addressTitle() for counterparties in tx list when they are local wallet addresses --- src/popup/views/home.js | 4 +++- src/popup/views/send.js | 17 +++++++++++++++-- src/popup/views/txStatus.js | 8 ++++++++ 3 files changed, 26 insertions(+), 3 deletions(-) diff --git a/src/popup/views/home.js b/src/popup/views/home.js index 78fbff2..cb7cd24 100644 --- a/src/popup/views/home.js +++ b/src/popup/views/home.js @@ -6,6 +6,7 @@ const { isoDate, timeAgo, addressDotHtml, + addressTitle, escapeHtml, truncateMiddle, } = require("./helpers"); @@ -110,8 +111,9 @@ function renderHomeTxList(ctx) { const amountStr = tx.value ? escapeHtml(tx.value + " " + tx.symbol) : escapeHtml(tx.symbol); + const title = addressTitle(counterparty, state.wallets); const maxAddr = Math.max(32, 36 - Math.max(0, amountStr.length - 10)); - const displayAddr = truncateMiddle(counterparty, maxAddr); + const displayAddr = title || truncateMiddle(counterparty, maxAddr); const addrStr = escapeHtml(displayAddr); const dot = addressDotHtml(counterparty); const err = tx.isError ? " (failed)" : ""; diff --git a/src/popup/views/send.js b/src/popup/views/send.js index d96d5b7..6a7b630 100644 --- a/src/popup/views/send.js +++ b/src/popup/views/send.js @@ -1,6 +1,12 @@ // Send view: collect To, Amount, Token. Then go to confirmation. -const { $, showFlash, addressDotHtml, escapeHtml } = require("./helpers"); +const { + $, + showFlash, + addressDotHtml, + addressTitle, + escapeHtml, +} = require("./helpers"); const { state, currentAddress } = require("../../shared/state"); let ctx; const { getProvider } = require("../../shared/balances"); @@ -44,8 +50,15 @@ function updateSendBalance() { const dot = addressDotHtml(addr.address); const link = `https://etherscan.io/address/${addr.address}`; const extLink = `${EXT_ICON}`; + const title = addressTitle(addr.address, state.wallets); let fromHtml = ""; - if (addr.ensName) { + if (title) { + fromHtml += `
${dot}${escapeHtml(title)}
`; + if (addr.ensName) { + fromHtml += `
${escapeHtml(addr.ensName)}
`; + } + fromHtml += `
${escapeHtml(addr.address)}${extLink}
`; + } else if (addr.ensName) { fromHtml += `
${dot}${escapeHtml(addr.ensName)}
`; fromHtml += `
${escapeHtml(addr.address)}${extLink}
`; } else { diff --git a/src/popup/views/txStatus.js b/src/popup/views/txStatus.js index a36fd31..a755b84 100644 --- a/src/popup/views/txStatus.js +++ b/src/popup/views/txStatus.js @@ -5,6 +5,7 @@ const { showView, showFlash, addressDotHtml, + addressTitle, escapeHtml, } = require("./helpers"); const { state, saveState } = require("../../shared/state"); @@ -37,6 +38,13 @@ function toAddressHtml(address) { const dot = addressDotHtml(address); const link = `https://etherscan.io/address/${address}`; const extLink = `${EXT_ICON}`; + const title = addressTitle(address, state.wallets); + if (title) { + return ( + `
${dot}${escapeHtml(title)}
` + + `
${escapeHtml(address)}${extLink}
` + ); + } return `
${dot}${escapeHtml(address)}${extLink}
`; } From 2abb720d54392c74dc681fe0958f79f897f59490 Mon Sep 17 00:00:00 2001 From: user Date: Fri, 27 Feb 2026 14:30:09 -0800 Subject: [PATCH 3/3] fix: show wallet/address titles in addressDetail and addressToken tx lists (closes #29) --- src/popup/views/addressDetail.js | 5 ++++- src/popup/views/addressToken.js | 5 ++++- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/src/popup/views/addressDetail.js b/src/popup/views/addressDetail.js index 3f4f4f1..20676aa 100644 --- a/src/popup/views/addressDetail.js +++ b/src/popup/views/addressDetail.js @@ -4,6 +4,7 @@ const { showFlash, balanceLinesForAddress, addressDotHtml, + addressTitle, escapeHtml, truncateMiddle, } = require("./helpers"); @@ -190,12 +191,14 @@ function renderTransactions(txs) { ? tx.to : tx.from; const ensName = ensNameMap.get(counterparty) || null; + const title = addressTitle(counterparty, state.wallets); const dirLabel = tx.directionLabel; const amountStr = tx.value ? escapeHtml(tx.value + " " + tx.symbol) : escapeHtml(tx.symbol); const maxAddr = Math.max(32, 36 - Math.max(0, amountStr.length - 10)); - const displayAddr = ensName || truncateMiddle(counterparty, maxAddr); + const displayAddr = + title || ensName || truncateMiddle(counterparty, maxAddr); const addrStr = escapeHtml(displayAddr); const dot = addressDotHtml(counterparty); const err = tx.isError ? " (failed)" : ""; diff --git a/src/popup/views/addressToken.js b/src/popup/views/addressToken.js index 1284029..274a5f7 100644 --- a/src/popup/views/addressToken.js +++ b/src/popup/views/addressToken.js @@ -6,6 +6,7 @@ const { showView, showFlash, addressDotHtml, + addressTitle, escapeHtml, truncateMiddle, balanceLine, @@ -250,12 +251,14 @@ function renderTransactions(txs) { for (const tx of txs) { const counterparty = tx.direction === "sent" ? tx.to : tx.from; const ensName = ensNameMap.get(counterparty) || null; + const title = addressTitle(counterparty, state.wallets); const dirLabel = tx.directionLabel; const amountStr = tx.value ? escapeHtml(tx.value + " " + tx.symbol) : escapeHtml(tx.symbol); const maxAddr = Math.max(32, 36 - Math.max(0, amountStr.length - 10)); - const displayAddr = ensName || truncateMiddle(counterparty, maxAddr); + const displayAddr = + title || ensName || truncateMiddle(counterparty, maxAddr); const addrStr = escapeHtml(displayAddr); const dot = addressDotHtml(counterparty); const err = tx.isError ? " (failed)" : "";