From 017fa4ea4484f9eee988f1f73ed982ec34519748 Mon Sep 17 00:00:00 2001 From: Adam Soltys Date: Tue, 18 Aug 2026 00:04:55 -0700 Subject: The on-chain send from Spending shows both doors: the cooperative exit it always was, with the unilateral hatch one quiet link away — promoted to a button the moment the server stops cooperating MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-Authored-By: Claude Fable 5 Claude-Session: https://claude.ai/code/session_01JtaatFfAbx91Nh3xqKVqKz --- src/features/ark.js | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) (limited to 'src/features') diff --git a/src/features/ark.js b/src/features/ark.js index cdac6c4..11ebc5c 100644 --- a/src/features/ark.js +++ b/src/features/ark.js @@ -1747,7 +1747,19 @@ export function arkFeature(ctx) { const sats = parseInt(o.amount, 10) || spendable; if (!sats || sats <= 0 || sats > spendable) { ui.arkError = t('enterValidAmtForN', { n: 1 }); render(); return; } doArkOffboard(sats >= spendable ? 0 : sats, o.address); - } }, t('send')))); + } }, t('send'))), + // This send IS the cooperative exit. The trustless door stays visible — + // quiet while things work, promoted to a button the moment the server + // fails to cooperate (that being the whole point of a unilateral exit). + ui.arkError && ui.arkBusy !== 'offboard' + ? h('button', { + class: 'btn-block', + onClick: () => { ui.arkOffboardSend = null; ui.arkError = ''; ui.arkExitPage = true; render(); }, + }, t('arkUniOffer')) + : h('button', { + class: 'linklike small', style: 'align-self:center', + onClick: () => { ui.arkOffboardSend = null; ui.arkError = ''; ui.arkExitPage = true; render(); }, + }, t('arkUniOfferQuiet'))); } async function doArkOffboard(amountSat, destAddress = null) { -- cgit v1.2.3