aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAdam Soltys <[email protected]>2026-08-18 00:04:55 -0700
committerAdam Soltys <[email protected]>2026-08-18 00:04:55 -0700
commit017fa4ea4484f9eee988f1f73ed982ec34519748 (patch)
tree437af1c37afa3ce6088a709eac0945378ff62cdb
parent3a0e45efce65c368dcb38e8f92a250379fc0e39a (diff)
downloadcoinosv3-017fa4ea4484f9eee988f1f73ed982ec34519748.tar.gz
coinosv3-017fa4ea4484f9eee988f1f73ed982ec34519748.zip
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
Co-Authored-By: Claude Fable 5 <[email protected]> Claude-Session: https://claude.ai/code/session_01JtaatFfAbx91Nh3xqKVqKz
-rw-r--r--src/features/ark.js14
-rw-r--r--src/i18n.js2
2 files changed, 15 insertions, 1 deletions
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) {
diff --git a/src/i18n.js b/src/i18n.js
index 56da989..14e6d14 100644
--- a/src/i18n.js
+++ b/src/i18n.js
@@ -199,6 +199,8 @@ const STR = {
onbBoardTitle: 'Top up Spending',
onbBoardBody: 'Move some sats from Savings into Spending — payments there are instant, with no mining fees.',
topUpFromSavings: 'Top up from Savings',
+ arkUniOffer: 'Exit without the server instead',
+ arkUniOfferQuiet: 'Server not cooperating? Unilateral exit',
msgPushOffer: 'Get notified when you receive payments and messages, even with coinos closed.',
msgPushEnable: 'Enable notifications',
msgPushOn: 'Notifications on',