Skip to content

chore: release v1.9.0 - #109

Merged
0xApotheosis merged 5 commits into
mainfrom
release
Sep 23, 2026
Merged

0xApotheosis merged 5 commits into
mainfrom
release

Conversation

@0xApotheosis

Copy link
Copy Markdown
Member

fix(developers): address swap widget QA findings (#108)
Merge branch 'main' into develop
fix: hide the /developers swap widget behind a feature flag (#107)

0xApotheosis and others added 3 commits September 17, 2026 15:56
The live embed failed QA; keep it off so the rest of the page can ship.

Co-authored-by: Cursor <cursoragent@cursor.com>
* fix(csp): allow the swap widget's RPC, mempool and Solana endpoints on /developers

The widget polls EVM transaction status through viem clients pointed at
ShapeShift's per-chain RPC proxies (api.<chain>.shapeshift.com) and at
viem's default RPCs for Monad, MegaETH, HyperEVM, Plasma and Katana. It
reads Bitcoin balances and tx status from mempool.space, and falls back to
api.mainnet-beta.solana.com for Solana when AppKit has no connection.

None of those origins were in connect-src, so every status poll failed
and was retried forever (the widget maps RPC errors to 'pending'), leaving
a swap that had already confirmed on-chain stuck on 'Confirming
Transaction'. BTC and SOL balances failed the same way and rendered as
nothing.

Allow *.shapeshift.com so new chain proxies don't need a CSP change each
time, and list the remaining third-party RPCs explicitly.

Co-authored-by: Cursor <cursoragent@cursor.com>

* fix(csp): restore the Onramper iframe on /trade

The Buy Crypto card on /trade embeds buy.onramper.com. Its frame-src
allowance lived in a route-level Content-Security-Policy header in
next.config.ts, which only ever took effect because the middleware's own
CSP header was being dropped on the /trade -> /en/trade rewrite. #104
fixed that header loss, so the middleware CSP (chatwoot-only frame-src)
now reaches /trade and replaces the next.config one, and the iframe is
blocked with a broken-page glyph on develop.

Move the Onramper origins into the middleware CSP, scoped to /trade with
or without a locale prefix, and drop the now-dead CSP entries from
next.config.ts (the COOP header there still does its job).

Co-authored-by: Cursor <cursoragent@cursor.com>

* feat(developers): initialise AppKit host-side with chain icons and ShapeShift RPCs

Let the page own the Reown AppKit instance instead of the swap widget's
self-init. The widget documents this mode (it detects the singleton and
reuses its wagmi config), and it gives us two knobs the widget doesn't
expose:

- chainImages: AppKit has no preset icons for MegaETH, HyperEVM, Plasma
  or Katana, so its network picker showed a generic globe for them. Feed
  it the same icon set the widget draws in its own chain sidebar so both
  surfaces match.
- customRpcUrls: route wallet balance reads and the Solana connection
  through ShapeShift's RPC proxies (api.<chain>.shapeshift.com), the same
  endpoints the widget already uses for status polling, with Reown's
  Blockchain API kept as the fallback.

The network list, adapters and features mirror the widget's own
config/appkit.ts so wallet support is unchanged.

Co-authored-by: Cursor <cursoragent@cursor.com>

* docs(developers): spell out the Reown allowed-origins requirement

The blank WalletConnect QR on staging is the relay rejecting the origin:
the Reown project's allowlist only contains the *-widget.shapeshift.com
demo hosts, and the same project ID is baked into the website bundle.
Nothing in this repo can fix that; document exactly what to add and how
to check the current list, and note the new host-owned AppKit init.

Co-authored-by: Cursor <cursoragent@cursor.com>

* docs(developers): note the website origins are now on the Reown allowlist

Co-authored-by: Cursor <cursoragent@cursor.com>

* fix(developers): let the widget own AppKit and unblock WalletConnect signing

Host-side AppKit plus a pinned WC CSP dropped echo/secure-mobile hosts, so
session requests never reached the wallet. Match the stock embed path and
allow WalletConnect/Reown wildcards on /developers.

Co-authored-by: Cursor <cursoragent@cursor.com>

---------

Co-authored-by: Cursor <cursoragent@cursor.com>
@coderabbitai

coderabbitai Bot commented Sep 18, 2026

Copy link
Copy Markdown
Contributor

Important

Draft PR not reviewed

Draft PRs are not automatically reviewed by default.

  • Trigger a manual review

To automatically review draft PRs, update your CodeRabbit configuration:

reviews:
  auto_review:
    drafts: true

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.

Merge was re-deriving regular vs hotfix from develop..release, which misfires when the same change exists on both branches as different SHAs.

Co-authored-by: Cursor <cursoragent@cursor.com>
@railway-app
railway-app Bot temporarily deployed to website-frontend / develop September 18, 2026 04:35 Inactive
@0xApotheosis 0xApotheosis changed the title chore: release v1.8.0 chore: release v1.9.0 Sep 18, 2026
@0xApotheosis

Copy link
Copy Markdown
Member Author

Retitled to v1.9.0. Completing #106 tagged v1.7.1 instead of v1.8.0 because merge inferred a hotfix from a duplicate #107 SHA; that tag is now v1.8.0. Merge now uses this PR title for the version (5163043).

CSP stays with the first document, so a /trade-only frame-src never applied when Trade was opened from another page.

Co-authored-by: Cursor <cursoragent@cursor.com>
@0xApotheosis
0xApotheosis merged commit 0b55fd1 into main Sep 23, 2026
2 checks passed
@railway-app
railway-app Bot temporarily deployed to website-frontend / production September 23, 2026 00:59 Inactive

This branch was previously deployed

2 inactive (1 outdated) deployments
website-frontend / production — 0b55fd18 Deployed Sep 23, 2026 by railway-app[bot]
website-frontend / develop — 51630434 Deployed Sep 18, 2026 by railway-app[bot]
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