aboutsummaryrefslogtreecommitdiffstats
path: root/src/ark
diff options
context:
space:
mode:
authorAdam Soltys <[email protected]>2026-07-04 07:15:52 -0700
committerAdam Soltys <[email protected]>2026-07-04 07:15:52 -0700
commit6cc0dd619e71099675a7cb1b1566cbe2c06b7bc1 (patch)
treeb672290c5c628eb33bfcb27dff12a2c14f69a6a9 /src/ark
parentd39aa82e0e97f1f3373980cb28f04e0415965723 (diff)
downloadcoinosv3-6cc0dd619e71099675a7cb1b1566cbe2c06b7bc1.tar.gz
coinosv3-6cc0dd619e71099675a7cb1b1566cbe2c06b7bc1.zip
Ark: history rows open a detail view
Ark movements are clickable like on-chain txs. The detail view shows amount, date, status, the destination address (sends, copyable), the vtxo id, and for boards the funding txid with copy + explorer link. Movements now record those fields at completion time; older records without them still render (amount/date/status only). Co-Authored-By: Claude Fable 5 <[email protected]> Claude-Session: https://claude.ai/code/session_01QFAcD4V284DvYZZHP7Rxxy
Diffstat (limited to 'src/ark')
-rw-r--r--src/ark/manager.js11
1 files changed, 7 insertions, 4 deletions
diff --git a/src/ark/manager.js b/src/ark/manager.js
index 1f21159..c2fd0c6 100644
--- a/src/ark/manager.js
+++ b/src/ark/manager.js
@@ -163,7 +163,7 @@ export class ArkManager {
throw e; // network errors etc: retry next sync
}
this._addVtxo(v, v._raw.bytes, 0);
- this._movement({ type: 'receive', amountSat: v.amountSat, status: 'complete' });
+ this._movement({ type: 'receive', amountSat: v.amountSat, status: 'complete', vtxoId: v.id });
changed = true;
}
changed = true;
@@ -211,7 +211,7 @@ export class ArkManager {
const changeSat = input.amountSat - amountSat;
const action = {
id: `send-${Date.now()}`, type: 'send', step: 'created',
- inputId: input.id, amountSat,
+ inputId: input.id, amountSat, destAddress: addrString,
destPubkey: dest.userPubkey, destBlindedId: mailboxDelivery.data,
changeIndex: changeSat > 0 ? this.state.nextKeyIndex++ : null, changeSat,
};
@@ -278,7 +278,10 @@ export class ArkManager {
if (change) change.state = 'spendable';
}
action.step = 'done';
- this._movement({ type: 'send', amountSat: action.amountSat, status: 'complete' });
+ this._movement({
+ type: 'send', amountSat: action.amountSat, status: 'complete',
+ to: action.destAddress, vtxoId: decodeVtxo(hex.decode(action.destBytes)).id,
+ });
this._save();
}
}
@@ -359,7 +362,7 @@ export class ArkManager {
const decoded = decodeVtxo(bytes);
this._addVtxo(decoded, bytes, action.keyIndex);
action.step = 'done';
- this._movement({ type: 'board', amountSat: decoded.amountSat, status: 'complete' });
+ this._movement({ type: 'board', amountSat: decoded.amountSat, status: 'complete', txid: action.fundingTxid, vtxoId: decoded.id });
this._save();
}
}