aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/features/ark.js18
-rw-r--r--src/i18n.js6
2 files changed, 18 insertions, 6 deletions
diff --git a/src/features/ark.js b/src/features/ark.js
index fc5fc9f..d730ea6 100644
--- a/src/features/ark.js
+++ b/src/features/ark.js
@@ -980,15 +980,25 @@ export function arkFeature(ctx) {
// coins the server saw spent outside this device's story (another
// device, a swept expiry, an adopted renewal) — the row that keeps the
// history summing to the balance. Folded per reconcile pass upstream.
+ // "Spent on another device" read as an accusation; it's now a plain Sent
+ // wearing a quiet "synced" tag, and a tap unfolds the reassurance.
if (m.type === 'reconcile') {
- return h('div', { class: 'item' },
+ const open = ui.arkReconOpen === m.id;
+ return h('div', {
+ class: 'item', style: 'cursor:pointer;flex-wrap:wrap',
+ onClick: () => { ui.arkReconOpen = open ? null : m.id; render(); },
+ },
h('div', { class: 'ico out', html: ARK_MARK(15) }),
h('div', { class: 'grow' },
- h('div', {}, t('arkSpentElsewhere')),
+ h('div', { class: 'row gap6', style: 'align-items:center' },
+ t('arkReconSent'), h('span', { class: 'tag' }, t('arkReconTag'))),
h('div', { class: 'small faint' },
- timeAgo(m.ts / 1000) + (m.count > 1 ? ` · ${t('arkSpentElsewhereN', { n: m.count })}` : ''))),
+ timeAgo(m.ts / 1000) + (m.count > 1 ? ` · ${t('arkReconCoins', { n: m.count })}` : ''))),
h('div', { style: 'text-align:right' },
- h('div', { class: 'amount-neg' }, '-' + fmtAmount(m.amountSat))));
+ h('div', { class: 'amount-neg' }, '-' + fmtAmount(m.amountSat))),
+ open
+ ? h('div', { class: 'small muted', style: 'flex-basis:100%;margin-top:6px' }, t('arkReconExplain'))
+ : null);
}
// a renewal moves nothing anywhere — its history amount is what it COST
if (m.type === 'refresh') {
diff --git a/src/i18n.js b/src/i18n.js
index 0dbd06e..75095cf 100644
--- a/src/i18n.js
+++ b/src/i18n.js
@@ -212,8 +212,10 @@ const STR = {
arkDepthBtn: 'Manage',
arkDepthRenewed: 'Renewal requested',
arkDepthRenewBtn: 'Renew now',
- arkSpentElsewhere: 'Spent on another device',
- arkSpentElsewhereN: '{n} coins',
+ arkReconSent: 'Sent',
+ arkReconTag: 'synced',
+ arkReconCoins: '{n} coins',
+ arkReconExplain: 'This device has no record of this payment — the coins left your wallet in a session this device didn’t see. That usually means another device or browser you use, or history that didn’t survive a restore; it can also be a renewal the server handled for you. Your balance is correct — this entry keeps the history adding up to it.',
arkCoinsTitle: 'Spending coins',
arkCoinsIntro: 'Your Spending balance lives in {n} coins totalling {total}. Each can be pulled on-chain without the server’s help — at a cost that grows with the coin’s history.',
arkCoinsIntroOne: 'Your Spending balance lives in a single coin of {total}. It can be pulled on-chain without the server’s help — at a cost that grows with the coin’s history.',