Skip to content

Conversation

@0xApotheosis
Copy link
Member

feat: portals cross-chain swaps (#11281)
feat: turn on gridplus flag (#11334)
feat: change cetus to cetus aggregator (#11335)
feat: add monad near intents support (#11317)
fix: ensure nonce is always fresh in WalletConnect dApps transactions (#11313)
fix: cetus missing execution price (#11309)
fix: gridplus derivation and signing (#11333)
fix: throttle monad rpc calls and fix multicall (#11316)
fix: ledger utxo/native tron derivation (#11328)
feat: regenerate asset data 12/09/2025 (#11331)
Merge branch 'main' into develop
revert: disable gridplus (#11330)
fix: disable solana on vultisig (#11329)
fix: zcash no support for MM/Trezor (#11327)
feat: handle thorchain LP PAUSE mimirs (#11322)
fix: re-enable thorchain lp global flags (#11320)
fix: utxo estimate fees (#11319)

kaladinlight and others added 17 commits December 8, 2025 20:09
Revert "feat: turn gridplus flag on (#11267)"

This reverts commit ec3fca5.
* docs: add Portals cross-chain implementation plan

Comprehensive implementation plan for adding cross-chain swap support
to the Portals swapper integration.

Key changes outlined:
- Remove cross-chain rejection in quote/rate fetching
- Implement Axelarscan GMP tracking for bridge status
- Add cross-chain metadata handling (expiry, steps, route)
- Create custom checkTradeStatus for cross-chain detection
- Update execution time estimates for bridge operations

Implementation follows patterns from ButterSwap and ArbitrumBridge
cross-chain integrations. Uses Axelarscan public API for tracking
bridge progress without requiring additional dependencies.

Estimated implementation time: 8-11 hours
Testing coverage: unit, integration, and manual testnet swaps

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>

* feat: almost there

* feat: implement Portals cross-chain swap tracking with dual fallback

Add comprehensive cross-chain tracking for Portals swaps using both
Axelar GMP and Squid Router APIs with automatic fallback.

Changes:
- Dual tracking strategy: Axelarscan first, Squid API fallback
- Support for both GMP and non-GMP cross-chain transactions
- Handle express_executed, executed, and destination_executed statuses
- Return destination tx hash and tracking links for both systems
- Use fromChainId() utility for proper chain ID mapping
- Simplified fallback logic without upfront contract detection

Tracking flow:
1. Check Axelarscan GMP for most cross-chain swaps
2. If Axelarscan returns error, fall back to Squid Router API
3. Both paths return destination tx hash when available

This handles Portals' dynamic routing between Axelar-based (GMP)
and Squid Spoke contract (non-GMP) cross-chain mechanisms.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>

* fix: correct Portals cross-chain tracking fallback logic

Fix fallback detection to properly trigger Squid API when Axelarscan
returns no data (empty array). Previously only checked for API errors.

Changes:
- fetchAxelarscanBridgeStatus returns undefined when data is empty
- Check both isErr() and undefined result before falling back to Squid
- Add null check after unwrap to handle undefined case

This ensures non-GMP Squid transactions (like Spoke contract calls)
properly fall back to Squid API tracking instead of getting stuck
in pending state.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>

* fix: return explorer links instead of API endpoint in Squid tracking

Previously getSquidTrackingLink returned the Squid API status URL
(v2.api.squidrouter.com/v2/status) which displays JSON when clicked.
This provided poor UX compared to Axelarscan's human-readable explorer.

Changes:
- Updated getSquidTrackingLink to accept squidStatus and explorer links
- Returns destination chain explorer for confirmed swaps with dest tx hash
- Returns source chain explorer for pending/failed swaps
- Updated call site in endpoints.ts to pass correct parameters

For non-GMP Portals cross-chain swaps tracked via Squid, users now see
proper blockchain explorer links instead of raw API responses.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>

* fix: remove SVG module script MIME type error in splashscreen

Remove the .svg?url import and isFirefox ternary that was causing
"Expected a JavaScript module script but server responded with MIME type
image/svg+xml" error. Use static PNG for all browsers.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>

* fix: use minOutputAmount for Portals cross-chain swaps

Portals API returns economically nonsensical outputAmount values for
cross-chain swaps (e.g., 57 USD output for 10 USD input). The
minOutputAmount is always correct as it's used for on-chain validation.

This fix uses minOutputAmount instead of outputAmount for cross-chain
swaps to prevent showing inflated/incorrect quotes to users.

Same-chain swaps continue using outputAmount as they don't have this bug.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>

* Revert "fix: remove SVG module script MIME type error in splashscreen"

This reverts commit 919a496.

* fix: scheisse

* fix: tackle @coderabbitai comment

Fix incorrect chainId in error details for buy chain unsupported guard.
The buy chain guard was incorrectly reporting sellAsset.chainId instead
of buyAsset.chainId when the buy chain was unsupported, making debugging
harder. Now correctly reports the actual unsupported buy chain ID.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>

---------

Co-authored-by: Claude <noreply@anthropic.com>
@coderabbitai
Copy link
Contributor

coderabbitai bot commented Dec 10, 2025

Important

Review skipped

Draft detected.

Please check the settings in the CodeRabbit UI or the .coderabbit.yaml file in this repository. To trigger a single review, invoke the @coderabbitai review command.

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

✨ Finishing touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Post copyable unit tests in a comment
  • Commit unit tests in branch release

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 and usage tips.

@0xApotheosis 0xApotheosis merged commit 64ef770 into main Dec 10, 2025
12 checks passed
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.

5 participants