Skip to content

feat(rescue-token): add /rescue-token page to recover stuck USDC (qa)#2104

Merged
MusabShakeel576 merged 2 commits into
qafrom
claude/trusting-tesla-xaC2V-qa
May 28, 2026
Merged

feat(rescue-token): add /rescue-token page to recover stuck USDC (qa)#2104
MusabShakeel576 merged 2 commits into
qafrom
claude/trusting-tesla-xaC2V-qa

Conversation

@MusabShakeel576
Copy link
Copy Markdown
Contributor

Summary

  • Adds a /rescue-token page that lets users move USDC accidentally sent to their Turnkey signer address (user.walletAddress) into their Safe (user.safeAddress) on Ethereum mainnet, signed by their existing passkey.
  • New useRescueToken hook builds a viem walletClient from the Turnkey-stamped account (same path useUser.safeAA uses) and calls USDC.transfer(safeAddress, amount).
  • Records the rescue as a RESCUE_TOKEN activity (PENDING → PROCESSING → SUCCESS/FAILED) so it shows in the activity feed.
  • Displays stuck USDC balance with icon, destination Safe address, and required ETH gas with an info tooltip pointing users to the Solid team if they can't cover gas.

This is the qa-targeted version of #2102 — rebased on top of qa so it doesn't pull in unrelated default-branch commits. Replaces #2103.

Test plan

  • Sign in on a test account, visit /rescue-token, confirm balance + destination + gas amount render
  • With an EOA holding USDC and ETH, click Rescue tokens, complete passkey, confirm the tx and that funds land at the Safe
  • With an EOA holding USDC but no ETH, confirm the button is disabled and shows "Insufficient ETH for gas"
  • Confirm the activity row appears in the feed with the right status transitions and Etherscan link
  • Back arrow returns to /

https://claude.ai/code/session_01U9boKN8kBrUytLY72BfSbB


Generated by Claude Code

claude added 2 commits May 28, 2026 08:27
Adds a /rescue-token screen that lets users move USDC accidentally
sent to their Turnkey signer address (user.walletAddress) into their
Safe (user.safeAddress) on Ethereum, signed via the existing passkey
flow. Displays the stuck balance, destination Safe address, and the
ETH gas required with an info tooltip explaining users can reach out
to the Solid team if they can't cover gas.

https://claude.ai/code/session_01U9boKN8kBrUytLY72BfSbB
Adds a RESCUE_TOKEN transaction type (incoming wallet transfer) and
wires useRescueToken through createActivity/updateActivity so the
recovery shows up in the activity feed: PENDING when the user signs,
PROCESSING once the tx hash is broadcast (with Etherscan link), then
SUCCESS or FAILED based on the receipt.

https://claude.ai/code/session_01U9boKN8kBrUytLY72BfSbB
@vercel
Copy link
Copy Markdown

vercel Bot commented May 28, 2026

The latest updates on your projects. Learn more about Vercel for GitHub.

2 Skipped Deployments
Project Deployment Actions Updated (UTC)
solid-app Ignored Ignored May 28, 2026 8:28am
solid-app-staging Ignored Ignored May 28, 2026 8:28am

Request Review

@MusabShakeel576 MusabShakeel576 merged commit 5936928 into qa May 28, 2026
4 of 5 checks passed
@MusabShakeel576 MusabShakeel576 deleted the claude/trusting-tesla-xaC2V-qa branch May 28, 2026 09:01
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.

2 participants