From 66bdb1124d2355b4e9ab75cdc985080af0bf0c98 Mon Sep 17 00:00:00 2001 From: Adam Soltys Date: Mon, 17 Aug 2026 23:04:41 -0700 Subject: The spending tap keeps its promise and then makes an offer: the account exists before the username and avatar prompts, so declining them costs nothing Co-Authored-By: Claude Fable 5 Claude-Session: https://claude.ai/code/session_01JtaatFfAbx91Nh3xqKVqKz --- src/app.js | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) (limited to 'src') diff --git a/src/app.js b/src/app.js index 0746160..459592f 100644 --- a/src/app.js +++ b/src/app.js @@ -3147,14 +3147,19 @@ function balanceCard() { ...(hasSpending ? featureAll('balanceActions') : []).map((a2) => h('button', { class: 'btn-sm', style: 'margin-top:10px', onClick: a2.onClick }, a2.label)), // A seed with only a Savings side is one tap from growing a Spending one: - // the offer sits right on the balance card, and the tap simply DOES it — - // same seed, a "Spending" side appears, no wizard in the way. (Explicit - // latches carry a timestamp; the self-heal only eats the legacy booleans.) + // the offer sits right on the balance card. The tap creates it outright — + // same seed, a "Spending" side, latched before any prompt so backing out + // of the niceties can't take it away — then walks the username + avatar + // steps, since a spending account is best enjoyed with a payment address. + // (Explicit latches carry a timestamp; self-heal only eats legacy booleans.) !hasSpending && !kindLocked && featureHook('arkReady') && !wallet.watchOnly && acc0 && acc0.type === 'full' ? h('button', { class: 'btn-sm', style: 'margin-top:10px', onClick: () => { acc0.spendingSetup = Date.now(); persistAccounts(); setAccountSel('spending', 'right'); + ui.onbError = ''; + ui.onb = { step: 'spend' }; + render(); } }, t('spendSetup')) : null, // A feature can unfold UI right on the card (ark's inline move panel). -- cgit v1.2.3