Skip to content

feat(095): Phase 1 — EIP-681 deep-links as tier-1 mobile pay CTA - #324

Open
ignromanov wants to merge 8 commits into
developfrom
095-p1-eip681-primary
Open

feat(095): Phase 1 — EIP-681 deep-links as tier-1 mobile pay CTA#324
ignromanov wants to merge 8 commits into
developfrom
095-p1-eip681-primary

Conversation

@ignromanov

Copy link
Copy Markdown
Owner

Spec 095 Phase 1 — Mobile Pay Flow v2 (epic #322)

EIP-681 deep-links become the primary mobile payment path; QR demoted to cross-device secondary; WalletConnect kept as deprioritized fallback with iOS note.

Changes

  • Per-wallet EIP-681 builders (build-wallet-deeplink.ts) — MetaMask branded + generic ethereum: (research: Trust/Coinbase/Rainbow have no reliable branded EIP-681 entry; AC-10 amended to honest 2-button shape)
  • Amount-parity assert (assert-amount-parity.ts) — Shade S1: deep-link amount must byte-match displayed exact total
  • WalletDeepLinkButtons — tier-1 mobile CTA component (text-sm per Iris F2)
  • PaymentPanel integration — mobile-only render above SmartPayButton/WC (AC-10), QR cross-device relabel in PanelFooter, mobile WC iOS note (OQ-3); desktop path unchanged (AC-8)
  • Mobile DOM-ordering regression test (compareDocumentPosition)

Gate (Iris, Task 1.5)

  • type-check:build + lint: 0 errors
  • 162/162 payment-panel/pay tests, 58/58 payment-qr; new files 100% stmt/func/line coverage
  • v3 mobile smoke 375×812: tier-1 ordering confirmed, no overflow, desktop unchanged
  • Iris F1 (ordering test "absent") — false positive, test exists; F2 fixed a3e49b8

Refs #322. Spec/plan: .ai/ops/specs/095-mobile-pay-flow-v2/

@vercel

vercel Bot commented Jun 12, 2026

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated (UTC)
voidpay Ready Ready Preview, Comment Jun 12, 2026 6:42pm

… token-invoice suppressed

Replaces 2-button equal-tier grid with:
- One full-width "Open in MetaMask" button (tier-1, branded EIP-681 prefill)
- Text link "Use a different wallet" (raw ethereum: URI) — native-asset invoices only
- Generic link suppressed entirely on ERC-20 token invoices (address-only parsers
  pre-fill native-ETH to token contract address — unacceptable failure mode per spec)

Tests updated: native invoice → MM button + generic text link; token invoice → MM only;
DOM-order assert (MM before ActionSlot) preserved.
@ignromanov

Copy link
Copy Markdown
Owner Author

AC-10 v2 amendment folded in (e5b74eb, Ignat decision 2026-06-12 post scout+wiki research): single dominant «Open in MetaMask» CTA; generic ethereum: demoted to «Use a different wallet» text link and suppressed on ERC-20 token invoices (address-only EIP-681 parsers pre-fill native-ETH sends to the token contract — wiki/concepts/eip-681-wallet-adoption-2026.md). 224/224 tests, type-check/lint clean. Spec AC-10 v2 updated in .ai. Research artifact: scout-mobile-payment-cta-20260612.yaml.

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