Agents Builders

Buy USDC account buttons

Archived
buy-usdc-account-buttons

Created

Jun 26, 02:58

Started

Jun 26, 02:59

Completed

Jun 26, 05:05

DevOps handoff

Type

Feature

Shape

ui-only

Worktree Slug

buy-usdc-account-buttons

Repositories

turf-monster

Release Train

Branch

feat/buy-usdc-account-buttons

QA URL

Production URL

payments,ui

Acceptance Criteria

  • Buy USDC button with logo on /account
  • Visible for web2 managed and web3 connected
  • Geo-blocked state disables button with note
  • Reuses cdp-ramp modal via shared partial

Expected Test Plan

  • component

Checks Run

  • [component] accounts_buy_usdc_button_test: web2+web3 enabled button w/ logo, geo-blocked disabled+note, flag-off/no-wallet hidden
  • [component] /wallet refactor to shared partial stays green (wallets_cdp_ramp_test, 5 cases)
  • [full-suite@836407985c9f589fcdc4be2967453db6991f22fe] bin/rails test green
  • [rubocop@836407985c9f589fcdc4be2967453db6991f22fe] bin/rubocop clean

Agent Context

Operator wants a 'Buy USDC' button (with the /usdc-mark.svg logo) on the /account page (app/views/accounts/show.html.erb), placed in the wallet actions row right after the Refresh Wallet button (~lines 203-228). 'Both Web3 and Web2' = a single button shown to any solana_connected user; managed (web2) and Phantom (web3) use the SAME button/flow (no per-mode distinction). Reuse the existing /wallet flow exactly: gate on AppFlags.cdp_ramp? && @user.solana_connected?; when geo_blocked? render the disabled variant + 'isn't available in your state' note; else the active button opens the global cdp-ramp modal via @click="$store.modals.open('cdp-ramp', { flow: 'buy', step: 'preflight' })". The button markup is currently copy-pasted inline in wallets/show.html.erb:73-90 and 4 other places with NO shared partial — extract app/views/shared/_buy_usdc_button.html.erb (rendering the gated active/disabled button + optional geo note, with the usdc-mark.svg icon) and consume it from BOTH /account and /wallet (DRY; gives the partial a second real consumer). Component test: request GET /account for a connected user asserts the button renders; geo-blocked stub asserts disabled + note. Logo: <img src="/usdc-mark.svg"> already used elsewhere on the page. Operator wants a live local preview before prod ship (visual-change live-preview rule).

Stage Timeline

Who handled each stage, the time it took (measured), and the model / tokens / cost reported (best-effort) — plus who's on it right now. means the agent didn't report that metric.

Sizing Avi · PO Dev Actual XL
  1. Created Designed
    M Meowth
    Meowth
    Model
    Duration
    Tokens
    Cost
    Completed Jun 26, 02:58 · 1 day ago
    api
  2. Designed Building
    M Meowth
    Meowth
    Model
    claude-opus-4-8
    Duration
    under a minute
    Tokens
    Cost
    Started Jun 26, 02:58
    Completed Jun 26, 02:59 · 1 day ago
    cli
  3. Building Submitted
    M Meowth
    Meowth
    Model
    claude-opus-4-8
    Duration
    19 minutes
    Tokens
    13,665,574
    Cost
    ~$9.51
    Started Jun 26, 02:59
    Completed Jun 26, 03:18 · 1 day ago
    cli
  4. Submitted Reviewed
    S Shannon
    Shannon primary
    C Carl
    Carl light
    Model
    claude-opus-4-8
    Duration
    about 1 hour
    Tokens
    5,526,778
    Cost
    ~$4.63
    Started Jun 26, 03:18
    Completed Jun 26, 04:31 · 1 day ago
    cli
  5. Reviewed Assembled
    S Steffon
    Steffon
    Model
    claude-opus-4-8
    Duration
    1 minute
    Tokens
    733,350
    Cost
    ~$0.54
    Started Jun 26, 04:31
    Completed Jun 26, 04:32 · 1 day ago
  6. Assembled Shipped
    A Avi
    Avi
    Model
    claude-opus-4-8
    Duration
    33 minutes
    Tokens
    35,335,471
    Cost
    ~$24.13
    Started Jun 26, 04:32
    Completed Jun 26, 05:05 · 1 day ago
  7. Shipped Archived
    Model
    Duration
    about 14 hours
    Tokens
    Cost
    Started Jun 26, 05:05
    Completed Jun 26, 18:43 · about 15 hours ago

Conversation

QA review feedback, agent handoffs, and follow-up notes for this task.

No task feedback has been recorded yet.

Sealed-bid sizing

Edit →

Alex (PM)

Avi (PO)

Dev

Actual

XL