aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAdam Soltys <[email protected]>2026-06-23 22:37:58 -0700
committerAdam Soltys <[email protected]>2026-06-23 22:37:58 -0700
commitca7d85e8603ad5ee6a31afbf56777cedfc3931b5 (patch)
tree5311eaa3c6b6f95fc10bda5ae4e59297ce0fc9eb
parent800fa6a0ce8da92a9142af62fee0657011fc45aa (diff)
downloadcoinosv3-ca7d85e8603ad5ee6a31afbf56777cedfc3931b5.tar.gz
coinosv3-ca7d85e8603ad5ee6a31afbf56777cedfc3931b5.zip
Allow signed-tx export when online; clarify it isn't sent
- Add a "Sign & export (broadcast elsewhere)" action on the online review screen so you can sign here and broadcast from another device, not just in offline mode. - The signed-result screen now reads as an amber caution ("Signed, but not sent yet… it will not send on its own") instead of a green success banner, so it can't be mistaken for a completed send. Co-Authored-By: Claude Opus 4.8 (1M context) <[email protected]>
-rw-r--r--src/app.js9
-rw-r--r--src/i18n.js3
2 files changed, 9 insertions, 3 deletions
diff --git a/src/app.js b/src/app.js
index 86a2811..11f0589 100644
--- a/src/app.js
+++ b/src/app.js
@@ -1079,7 +1079,12 @@ function reviewView() {
: wallet.offline
? h('button', { class: 'btn-primary grow', onClick: signForExport }, t('signTx'))
: h('button', { class: 'btn-primary grow', onClick: broadcast }, t('signBroadcast'))
- )
+ ),
+ // Online: also allow signing without broadcasting, to relay the signed tx
+ // from another device (air-gapped, or a different network).
+ !wallet.offline && !ui.busy
+ ? h('button', { class: 'btn-block', style: 'margin-top:8px', onClick: signForExport }, t('signExport'))
+ : null
);
}
@@ -1122,7 +1127,7 @@ function sendResultView() {
return h(
'div',
{ class: 'card col' },
- h('div', { class: 'notice ok' }, t('txSignedNote')),
+ h('div', { class: 'warn-box' }, t('txSignedNote')),
h('div', { class: 'small muted' }, t('transactionId')),
h('div', { class: 'addr-box' }, r.txid),
h('div', { class: 'small muted mt8' }, t('signedTxRaw')),
diff --git a/src/i18n.js b/src/i18n.js
index ba85819..9a02afe 100644
--- a/src/i18n.js
+++ b/src/i18n.js
@@ -103,10 +103,11 @@ const STR = {
offlineSignNote: 'Offline: sign now, then broadcast the signed transaction from an online device.',
signBroadcast: 'Sign & broadcast',
signTx: 'Sign transaction',
+ signExport: 'Sign & export (broadcast elsewhere)',
broadcastFailed: 'Broadcast failed: {msg}',
signingFailed: 'Signing failed: {msg}',
done: 'Done',
- txSignedNote: '✓ Transaction signed. Broadcast the code below from any online device (e.g. mempool.space → Broadcast).',
+ txSignedNote: 'Signed, but not sent yet. To actually send it, broadcast the code below from any online device (e.g. mempool.space → Broadcast). It will not send on its own.',
transactionId: 'Transaction ID',
signedTxRaw: 'Signed transaction (code)',
copyHex: 'Copy code',