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
Pull Request
https://github.com/amcritchie/turf-monster/pull/166Acceptance Criteria
Expected Test Plan
Checks Run
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.
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
We emailed a one-tap sign-in link to . It expires shortly and can only be used once.
No email? Check spam, or close this and try again.