Skip to content

feat(ui): shielded-transfer identity and status on the tx details sheet - #826

Merged
QuantumExplorer merged 3 commits into
swift-sdk-integrationfrom
feat/shielded-tx-details
Jul 16, 2026
Merged

feat(ui): shielded-transfer identity and status on the tx details sheet#826
QuantumExplorer merged 3 commits into
swift-sdk-integrationfrom
feat/shielded-tx-details

Conversation

@QuantumExplorer

Copy link
Copy Markdown
Member

What

Shielded transfers no longer masquerade as generic internal moves on the transaction detail sheet:

  • Header title: "Shielded transfer" for a Core → Shielded funding (or "Shielded transfer (pending)" while its asset lock is committed but unconsumed), and "Shielded withdrawal" for the Shielded → Core L1 payout — replacing "Moved to Address" / "Amount received".
  • Info card leads with the route: From: Transparent balance / To: Shielded balance (reversed for withdrawal receipts).
  • Live Status row for funding transfers: Broadcasting (lock built/broadcast), Funds locked — finishing transfer (IS/CL-locked, shield transition outstanding), or Completed (lock consumed) — read from ShieldedTxLookup's asset-lock status, the same source that drives the home list's pending treatment, so the row updates as the transfer progresses.

The existing address/fee/date rows, tax category, and the new raw transaction inspector (#824) are unchanged — the inspector remains the deep view of the Asset Lock payload itself.

Implementation

TxDetailModel.title prefers the shielded identity over direction.title; new shieldedInfo() rows + shieldedStatusText mapping of PersistentAssetLock.statusRaw (0/1/2–3/4). The table gains a single-item .shieldedInfo item case rendered by the existing info cell. Three new en strings.

Testing

Testnet smoke on QA-iPhone16 / iPhone 16 Pro sims: completed Core→Shielded transfer (title + route + "Completed"), shielded withdrawal receipt (title + reversed route), classic sends/receives unchanged. Unit-test target pre-existing-broken per CLAUDE.md.

🤖 Generated with Claude Code

A Core → Shielded transfer's detail sheet used the generic .moved
presentation — "Moved to Address" with bare L1 addresses — hiding what
the transaction actually is. The sheet now:
 - titles itself "Shielded transfer" ("… (pending)" while the asset
   lock is unconsumed), and "Shielded withdrawal" for the Shielded →
   Core payout instead of "Amount received";
 - leads the info card with the balance route (From Transparent balance
   / To Shielded balance — reversed for withdrawal receipts) and, for
   funding transfers, a live Status row (Broadcasting / Funds locked —
   finishing transfer / Completed) read from ShieldedTxLookup's
   asset-lock status, the same source that drives the home list's
   pending treatment.

The existing address, fee, and date rows are unchanged; the raw
transaction inspector remains the deep view of the asset-lock payload.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
@coderabbitai

coderabbitai Bot commented Jul 16, 2026

Copy link
Copy Markdown

Important

Review skipped

Auto reviews are disabled on base/target branches other than the default branch.

Please check the settings in the CodeRabbit UI or the .coderabbit.yaml file in this repository. To trigger a single review, invoke the @coderabbitai review command.

⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro

Run ID: 6ba20c08-08fe-4fb3-ba63-6b85347e1870

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch feat/shielded-tx-details

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

QuantumExplorer and others added 2 commits July 17, 2026 00:59
An asset-lock funding's owned outputs are only its change, so the
"Internally moved to <change address>" row read like the transfer's
destination. The From/To route rows carry that; the raw transaction
inspector still shows every output.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Asset-lock funding rows carry no persisted fee, so the detail sheet
showed "Đ 0" for a transfer that did pay one. When the row's fee is
missing/zero (and the tx isn't a receive), recover the consensus fee
from the stored raw transaction as Σ(input values) − Σ(output values) —
exact whenever every input is one of the wallet's own TXOs, which holds
for any tx the wallet authored; nil (row keeps showing 0) rather than a
guess when an input value is unknown.

Fees under 0.0001 DASH render as plain duffs ("226 duffs") — the
DASH-formatted amount reads as zero at a glance.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
@QuantumExplorer
QuantumExplorer force-pushed the feat/shielded-tx-details branch from db48ecd to 9603303 Compare July 16, 2026 18:03
@QuantumExplorer
QuantumExplorer merged commit 84ec128 into swift-sdk-integration Jul 16, 2026
2 checks passed
@QuantumExplorer
QuantumExplorer deleted the feat/shielded-tx-details branch August 7, 2026 08:23
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant