Skip to content

Update the Coinhub buy and sell menus - #6165

Open
j0ntz wants to merge 7 commits into
coinhubfrom
jon/coinhub-buy-menu-updates
Open

Update the Coinhub buy and sell menus#6165
j0ntz wants to merge 7 commits into
coinhubfrom
jon/coinhub-buy-menu-updates

Conversation

@j0ntz

@j0ntz j0ntz commented Aug 19, 2026

Copy link
Copy Markdown
Contributor

Description

Coinhub buy/sell changes requested by the Coinhub team, plus the app-name
question they raised.

Asana: https://app.asana.com/0/1215088146871429/1216998636347236

Coinhub now runs the ramps buy/sell flow like every other build. The
useLegacyBuySell shim that pinned it to GuiPluginListScene is gone, and the
partner destinations are ramp plugins instead of buyPluginListOverride.json
rows.

New ramp plugins (src/plugins/ramps/coinhub/), all built on the existing
createExternalRampPlugin factory:

Plugin Direction Payment type Destination
coinhubatm buy + sell cash coinhubbitcoinwallet.app/buy-atms, /sell-atms (in-app WebView)
coinhubexchange buy + sell wire coinhubexchange.com (device browser)
coinhubfunded buy wire coinhubfunded.com (device browser)

coinhubfunded is what replaces the originally-requested "Trade" bottom-tab
button, per the 2026-08-19 note on the task: "we will not add a new 'trade'
button to the menu option but will instead add the CoinHub-funded site into the
buy menu."

MoonPay ACH sell needs no new code and no info-server change on the ramps
side: moonpayRampPlugin already quotes ach in both directions, and ramps
reads rampQuoteFilter, not the legacy fiatPluginPriority document that
EdgeApp/edge-info-server#162
was opened to fix. That PR is no longer a dependency of this one.

Supporting changes

  • createExternalRampPlugin gains two things these plugins need: it hands the
    URI to the device browser when the backing GuiPlugin sets externalBrowser
    (composed by the existing makePluginUri, so baseQuery, deepQuery,
    lockUriPath and queryPromoCode behave as they do for the WebView), and
    cryptoAssets is now optional, since an ATM takes whatever the customer
    brings.
  • Ramp plugins that hold no credentials load without a RAMP_PLUGIN_INITS
    entry.
  • AppConfig.rampPluginIds lets a white-label build name the providers it sells
    through. Coinhub lists its own three plus moonpay, which is exactly what the
    info server already allowed the app under fiatPluginPriority.
  • The edge://plugin/<id> deep-link path honors externalBrowser, so those
    links no longer hand a full third-party site the EdgeProvider wallet bridge.
  • Plain-tap rejections in the legacy list scene now reach the region-aware error
    handler, which previously ran only on long-press.

The legacy buyPluginListOverride.json / sellPluginListOverride.json rows stay
as they are. pluginListBuyOld / pluginListSellOld are still registered and
reachable from DevTestScene, and Coinhub's own rows are what should render
there rather than Edge's default list.

App name. iOS PRODUCT_NAME and the Android app_name resource already read
Coinhub Wallet; only coinhubConfig.ts still said Coinhub Bitcoin Wallet, so
the in-app copy now matches the home-screen name. The App Store / Play Store
listing titles are console fields, not code, and the bundle id
app.coinhubatm.wallet is permanent.

Base is coinhub, which was first rebased onto develop (94 commits, base was
2026-07-21) at the operator's direction.

CHANGELOG

Does this branch warrant an entry to the CHANGELOG?

  • Yes
  • No

The CHANGELOG tracks user-facing edge-app changes; this is white-label Coinhub
configuration on a branch that never merges to develop.

Dependencies

None. The Coinhub build box needs a RAMP_PLUGIN_INITS.moonpay entry in its
env.json for the MoonPay quotes (the legacy PLUGIN_API_KEYS.moonpay key the
old flow used is not read by the ramp plugin); the three Coinhub plugins need no
credentials.

Requirements

If you have made any visual changes to the GUI. Make sure you have:

  • Tested on iOS device
  • Tested on Android device
  • Tested on small-screen device (iPod Touch)
  • Tested on large-screen device (tablet)

@j0ntz

j0ntz commented Aug 19, 2026

Copy link
Copy Markdown
Contributor Author

📸 Test evidence

buy menu teller removed

buy menu teller removed

buy menu scrolled

buy menu scrolled

exchange opens browser

exchange opens browser

funded opens browser

funded opens browser

sell menu ach and exchange

sell menu ach and exchange

ach no provider toast

ach no provider toast

app name coinhub wallet

app name coinhub wallet

Captured by the agent's in-app test run (build-and-test).

@j0ntz
j0ntz marked this pull request as ready for review August 19, 2026 01:05
@j0ntz
j0ntz force-pushed the jon/coinhub-buy-menu-updates branch from 4d88472 to 8651c18 Compare August 19, 2026 01:05
@chatgpt-codex-connector

Copy link
Copy Markdown

You have reached your Codex usage limits for code reviews. You can see your limits in the Codex usage dashboard.

Comment thread src/components/scenes/GuiPluginListScene.tsx
@j0ntz
j0ntz force-pushed the jon/coinhub-buy-menu-updates branch from 8651c18 to fd233e1 Compare August 19, 2026 01:12
@j0ntz

j0ntz commented Aug 19, 2026

Copy link
Copy Markdown
Contributor Author

📸 Test evidence (after fix)

exchange opens browser after fix

exchange opens browser after fix

Captured by the agent's in-app test run (build-and-test).

Comment thread src/constants/plugins/GuiPlugins.ts

@cursor cursor Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Cursor Bugbot has reviewed your changes using high effort and found 1 potential issue.

Fix All in Cursor

❌ Bugbot Autofix is OFF. To automatically fix reported issues with cloud agents, enable autofix in the Cursor dashboard.

Reviewed by Cursor Bugbot for commit a66f964. Configure here.

Comment thread src/actions/DeepLinkingActions.tsx
@j0ntz

j0ntz commented Aug 19, 2026

Copy link
Copy Markdown
Contributor Author

📸 Test evidence (deep-link fix)

deeplink opens browser

deeplink opens browser

Captured by the agent's in-app test run (build-and-test).

j0ntz added 5 commits August 18, 2026 18:24
The legacy buy/sell list could only launch a row into the in-app WebView or
a native fiat plugin. Rows that point at a whole partner website rather than
an embedded purchase flow belong in the device browser, so add an
`externalBrowser` flag to `GuiPlugin` and hand those rows to
`openBrowserUri`.
Removes the Bitcoin Teller buy row, adds Coinhub Exchange / OTC bank-wire
rows to both menus and a Coinhub Funded row to the buy menu, all of which
open in the device browser, and restores the ACH sell row so MoonPay and the
other ACH providers can quote a sell.
The iOS `PRODUCT_NAME` and the Android `app_name` resource already read
Coinhub Wallet, so the config strings behind every in-app mention were the
only place still saying Coinhub Bitcoin Wallet.
Only the long-press path forwarded rejections to the region-aware error
handler, so a plain tap that failed (a payment method with no available
provider, an unopenable partner URL) left the user on the list with no
feedback at all.
A partner-website plugin reached over `edge://plugin/<id>` still pushed the
EdgeProvider WebView, which both contradicts the row's stated behavior and hands
a full third-party site the wallet bridge.
@j0ntz
j0ntz force-pushed the jon/coinhub-buy-menu-updates branch from a66f964 to 9f5201d Compare August 19, 2026 01:25
@j0ntz

j0ntz commented Aug 19, 2026

Copy link
Copy Markdown
Contributor Author

📸 Test evidence (makePluginUri fix)

row tap after makepluginuri

row tap after makepluginuri

deeplink funded after makepluginuri

deeplink funded after makepluginuri

Captured by the agent's in-app test run (build-and-test).

@j0ntz

j0ntz commented Aug 19, 2026

Copy link
Copy Markdown
Contributor Author

📸 Test evidence (MoonPay ACH sell quote, with the info-server fix served locally)

sell asset picker moonpay assets

sell asset picker moonpay assets

moonpay ach sell quote

moonpay ach sell quote

Captured by the agent's in-app test run (build-and-test).

j0ntz added 2 commits August 20, 2026 17:37
Coinhub's ATM network, exchange/OTC desk and Funded prop-trading site become
external ramp plugins so the app can retire the legacy buy/sell list.

The external ramp factory gains two things they need: a device-browser launch
for partner destinations that are whole websites of their own, and an optional
crypto asset list, since a cash ATM takes whatever the customer brings.

These carry no credentials, so they load without a RAMP_PLUGIN_INITS entry,
and an app config can now name the ramp plugins it sells through.
The buy and sell tabs now open the ramp create scenes like every other build,
so the legacy scene shim and its useLegacyBuySell config flag come out.

Coinhub sells through its own three destinations plus MoonPay, which is what
the info server already allowed the app under the legacy plugin priority.

@claude claude Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Claude Code Review

Claude Code Review is paused for this repository. To reconnect it, an admin of this repository's GitHub organization (or the account owner, for personal repositories) who can also manage your Claude organization's Code Review settings needs to re-link GitHub in Code Review settings. This is a one-time step.

Tip: disable this comment in your organization's Code Review settings.

@j0ntz

j0ntz commented Aug 21, 2026

Copy link
Copy Markdown
Contributor Author

📸 Test evidence (ramps migration)

buy quotes coinhub providers

buy quotes coinhub providers

coinhub exchange browser

coinhub exchange browser

coinhub funded browser

coinhub funded browser

coinhub atm webview

coinhub atm webview

moonpay ach sell quote

moonpay ach sell quote

sell quotes coinhub providers

sell quotes coinhub providers

coinhub atm sell webview

coinhub atm sell webview

Captured by the agent's in-app test run (build-and-test).

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