Commit Graph
5 Commits
Author SHA1 Message Date
Kevin Codex 2eaa192c13 bridge: drop an unused export; record the wallet test and its findings
otherBridgeChain had no callers. docs/bridge.md now records the
maintainer's Base USDC to Arc transfer on 2026-09-16 and what the wallet
test surfaced: Phantom cannot add Arc or Robinhood, the proxy's whole-batch
403 on eth_fillTransaction, public-node rate limits, and why publicnode is
unsuitable as a proxy upstream.
2026-09-16 19:56:59 +08:00
Kevin Codex 945d57134c bridge: proxy Arc reads and make the RPC proxy retry-friendly
Public Base and Arc nodes rate-limit a single quote's burst of reads. They
answer inside a 200 body, sometimes with one object where a batch array was
due, which viem cannot use ("unknown RPC error" or a TypeError in its
batch scheduler). The proxy now maps rate-limit and malformed replies to
HTTP 429/502 so viem retries with backoff, and Arc reads go through the
proxy (ARC_RPC_URL upstream, else the official node) instead of straight
from every browser. The Arc origin leaves the CSP; a dev override
NEXT_PUBLIC_RPC_URL_ARC is allowed like the other chains.
2026-09-16 19:37:35 +08:00
Kevin Codex 1cb3c26eeb bridge: drop the design-tool artifacts (DESIGN.md, bridge-surface.md)
Neither file is read by code or tests. They are output templates from the
contributor's design tooling and duplicate theme tokens that already live in
the stylesheet. docs/bridge.md remains the bridge documentation.
2026-09-16 18:49:58 +08:00
Kevin Codex 7ec59657a5 bridge: unstick stranded records, anchor quote expiry, drop AbortSignal.any
Review fixes on the Relay bridge:

- A sped-up or cancelled-and-replaced deposit no longer blocks tracking
  forever. When the wallet's hash is unmined and Relay reports a different
  source hash, that hash is verified as this wallet's exact deposit for the
  same order and adopted.
- A record with no deposit anywhere can be discarded after 15 minutes, only
  while Relay still reports "waiting" with no hashes and the source chain
  has no receipt, observed within the last minute. Unmined approvals get the
  same bounded discard; a late-mined approval only grants the exact
  allowance every deposit re-reads.
- A wallet chain change during a quote no longer leaves the form locked on
  "Finding your route…".
- Quote validity travels as ttlMs and is anchored on the browser clock at
  request time, so device clock skew cannot expire or extend a quote.
- Fetch timeouts use a hand-linked signal instead of AbortSignal.any, which
  older in-app wallet browsers lack.
- Relay's chain catalogue is cached per fetcher for a minute instead of
  re-downloaded on every quote; an unverifiable copy is dropped.
- The USDC approval is no longer gated on the 45 s quote TTL, since a fresh
  quote is required after it anyway.
- Wallet and RPC errors go through friendlyError; the dialog states that
  Openlaunch does not operate Relay or hold funds in transit.

Unit tests cover the hash adoption rule, the quoting-lock reset, expiry
anchoring, the linked timeout signal, both discard gates and the catalogue
cache. 621 tests, lint, typecheck, build and the read-only live route suite
pass.
2026-09-16 18:35:55 +08:00
Vasanth T 4ae0a6ceff feat(bridge): add Relay funding across three chains
Let users fund the same wallet across Base, Robinhood and Arc without leaving Openlaunch or deploying new contracts. Validate Relay orders and deposits, require exact USDC approvals, and preserve uncertain transfers for recovery instead of resending.

Include route, approval, recovery and UI regression tests, official asset provenance, and rollout documentation. Keep Robinhood USDC disabled because current routes fail the deposit and impact safeguards.
2026-09-16 13:39:13 +05:30