Draft
Conversation
- Added new API endpoint /api/ism-details for server-side ISM config derivation with 30-minute TTL caching for ISM and hook configs - Enhanced IsmDetailsCard to show which validators have signed vs pending - Added validator signature details including checkpoint indices and signatures - Enhanced TimelineCard with validator signature status visualization - Updated SDK to preview version with MetadataBuilder validator status support - Performance: cold cache ~4.2s, warm cache ~230ms (down from 60+ seconds) Note: All validator signature fetching is done server-side via the SDK's MetadataBuilder - no client-side S3/GCS access needed.
Add a collapsible card that visualizes the entire warp route when viewing warp transfer messages. Shows all chains in the route with their token type (collateral, synthetic, native, xERC20), addresses, owners, and collateral balances for EVM chains. Features: - Graph visualization with origin/destination highlighted - Token type badges with color coding - Collateral balances and synthetic supply display - Transfer amount shown on edge between origin/destination - Block explorer links for addresses - Manual refresh button for balances - Collapsed view for routes with >6 chains - Destination marked red if insufficient collateral Limitations: - Balance fetching only supported for EVM chains (Solana/StarkNet adapters require native dependencies that don't bundle for browser)
Add support for decoding and displaying Interchain Account (ICA) messages: - Decode all 3 ICA message types: CALLS, COMMITMENT, REVEAL - Detect ICA messages by checking sender/recipient against known ICA routers - Compute derived ICA addresses using the SDK - Fetch CCIP Read ISM URLs for REVEAL messages - Link related COMMITMENT and REVEAL messages bidirectionally - Add IcaDetailsCard component with: - Status sections (delivered/pending) with commitment hash - Owner, Account, ISM, Salt, User fields - CCIP Read Gateway info for pending REVEAL messages - Call details with execution status - Update debugger to use new ICA decoding API
- Move duration from destination card to status header - Simplify header title (remove message ID truncation) - Move explorer link inline with transaction hash - Add explorer link to From address (async fetch) - Remove Mailbox field from transaction cards - Rename 'Tx hash:' to 'Tx:' for consistency - Fix label widths in ContentDetailsCard (w-16 → w-20) - Rename 'Message Content:' to 'Body:' - Collapse 'Raw bytes:' by default
- Fix ESLint errors for missing queryKey dependencies with disable comments - Use nullish coalescing (??) for decimals to preserve zero values - Use clsx for conditional classNames in WarpRouteVisualizationCard - Fix case-folding for non-hex addresses (preserve base58 case) - Sync expanded state when tokens load asynchronously in WarpRouteGraph - Apply prettier formatting
- Add /tx/[txHash] page showing all messages dispatched in a transaction - Add auto-redirect from search: single result → message page, tx hash match → tx page - Add 'View all messages in tx' link on message detail page when tx has multiple messages - Add SearchRedirecting state for smoother UX during redirects - Add useTransactionMessageCount hook for efficient message count queries - Make TransactionCard and KeyValueRow more responsive
Co-authored-by: Xaroz <xaroz@users.noreply.github.com>
- P1: Fix ICA decode crash for payloads >32 bytes by moving zero check inside try block and using safe regex instead of BigNumber.isZero() - P2: Prevent auto-redirect on homepage when latest messages has 1 result - P2: Gate tx page redirect on GraphQL results (not PI) since tx page only queries GraphQL - P3: Increase message count query limit from 10 to 1000 for accurate 'View all N messages' link - P3: Increase related ICA message lookup limit from 10 to 1000 to find related COMMITMENT/REVEAL in large fan-out transactions
- Fix P1: Wrap BigNumber.from() in try/catch to prevent crashes on invalid data - Fix P2: Remove risky fallback to first process call, return null instead - Cleanup: Remove unused IcaMessageDetails type and icaRouterAddressMap store - UI: Fix link icon alignment in KeyValueRow - Add computeIcaAddress() to get real ICA address for accurate debugging - Include call.value in gas estimation for ICA calls - Add failed call indicator (red/amber) in IcaDetailsCard UI - Return structured IcaDebugResult with failedCallIndex from debugger
- Replace custom formatCompactBalance with formatAmountCompact from utils/amount.ts - Replace custom truncateAddress with shortenAddress from @hyperlane-xyz/utils - Replace synchronous getExplorerAddressUrl with async tryGetBlockExplorerAddressUrl - Use refetch from useQuery instead of custom refresh callback via queryClient - Change origin border color from green to blue (both use same color now) - Remove Origin/Destination text labels (arrow direction is self-explanatory) - Add stopPropagation to CopyButton wrapper in header to prevent toggle on copy
The async useExplorerUrls hook was causing excessive network requests on every render due to the tokens array being a new reference each time. Reverted to the original synchronous approach that builds URLs from local chain metadata without making network calls.
- Use fixed width (w-[140px]) for CompactChainNode and (w-[80px]) for MinimalChainNode - Use chain displayName from metadata instead of chainName - Add text-center for better text alignment - Replace custom normalizeAddress with normalizeAddressToHex from utils/yamlParsing Co-authored-by: paulbalaji <paulbalaji@users.noreply.github.com> Co-authored-by: Xaroz <xaroz@users.noreply.github.com>
…d RPC leak Added refetchOnMount, refetchOnWindowFocus, and refetchOnReconnect: false to match useWarpRouteBalances configuration. Changed staleTime from 5min to Infinity since warp route config doesn't change frequently.
- Import TokenType from @hyperlane-xyz/sdk for type-safe token type labels - Update COLLATERAL_TOKEN_TYPES to use TokenType enum values - Add isZeroishAddress check to getExplorerAddressUrl to match tryGetBlockExplorerAddressUrl behavior from utils/url.ts Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Remove custom getExplorerAddressUrl function and use the shared utility from utils/url.ts directly. Explorer URLs are now fetched asynchronously in a useEffect and stored in state. Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Use chain metadata displayName instead of chainName in the expanded view, consistent with CompactChainNode and MinimalChainNode. Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Only show insufficient balance indicator for destination in collapsed view - Use Promise.allSettled for explorer URL fetching to handle failures gracefully Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Change xERC20 token type color from green to indigo for better differentiation from synthetic (purple) and collateral (blue) - Use clsx for conditional classNames instead of template literals Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Address CodeRabbit nitpick to include the error object when logging registry fetch failures for better debugging. Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
The warp route visualization was making RPC calls (deriveWarpRouteConfig and getBridgedSupply) immediately when any warp transfer message was viewed, even when the visualization card was collapsed. This caused excessive RPC load since every page view triggered multiple RPC calls per token in the warp route. Fix: Add `enabled` flags to both hooks and only fetch when the card is expanded by the user. Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
The warp route visualization hooks had unstable query keys causing react-query to refetch on every render: 1. useWarpRouteBalances: queryKey depended on tokensToFetch array reference. Even though the array content was the same, a new array reference triggered queryKey recalculation. Fixed by extracting a stable string key from the tokens. 2. useWarpRouteVisualization: warpRoute memo depended on the whole warpRouteDetails object. Extracted primitive values (address, chain) for stable memoization. Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
The warp route visualization was making expensive deriveWarpRouteConfig RPC calls for each token in the route. This caused rate limiting (429s) and excessive load. Changes: - Use token.standard from registry instead of fetching tokenType via RPC - Remove deriveWarpRouteConfig calls entirely (owner, feeType, feeBps) - Defer balance fetches until user expands the card (isExpanded gating) - Simplify types by removing unused fields Result: Zero RPC calls on page load. Balance RPCs only when expanded. Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Remove fully connected graph expansion per Jason's feedback. Keep only simple view: origin/destination at top with transfer amount arrow, remaining chains below in compact view. Add xERC20 support with total supply and lockbox balance display. Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Keep both warpRouteConfigs (for visualization) and warpRouteIdToAddressesMap (for main's functionality). Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Remove unnecessary balancesWithSufficiency memo in useWarpRouteBalances - Fix CopyButton toggle issue by moving route ID pill outside toggle button Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
|
Review the following changes in direct dependencies. Learn more about Socket for GitHub.
|
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Replace hardcoded blue/indigo with primary/accent palette across timeline, warp route visualization, transaction page, ISM details. Use SectionCard where appropriate. Remove problematic scrollbars. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Bump tailwind border-radius values (~2x) and increase row spacing from space-y-2 to space-y-3 in detail cards to reduce visual density. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Remove leftover duplicate Identifier/Sender/Nonce/Recipient grid and move Body + Raw bytes inside the space-y-3 wrapper. Revert spacing bump in TransactionCard, WarpTransferDetailsCard, and GasDetailsCard. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Add webpackBuildWorker, parallelServerCompiles, and parallelServerBuildTraces to the existing experimental block.
Resolve conflicts in next.config.js (take main's asyncWebAssembly approach) and regenerate lockfile. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Replace default Tailwind amber/green with the app's custom blue/green palette at reduced opacity. Pending states use blue, success uses muted green, errors use muted red — all consistent with the purple theme. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Blue clashed with the purple theme. Pending cards now use primary-25/200/300 which blends naturally with the rest of the UI. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
ecdd2b3 to
0e8315c
Compare
Decode known function selectors (approve, transfer, transferRemote, Uniswap execute) and show a human-readable summary next to each call. For transferRemote, resolves the destination domain to a chain name. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Decode Universal Router execute() to extract swap token addresses from the V3 path, then resolve token symbols via ERC20 symbol() RPC calls (cached indefinitely). Shows e.g. "swap() — Swap WETH → USDC" instead of just "Uniswap swap". Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
DO NOT MERGE
This is a combined working branch for offsite demos. It stacks on
ui-rebrand-moreand merges in several feature PRs.Included PRs
nam/validator-signature-status)nam/warp-route-visualization)feat/ica-decoding)feat/tx-page)Review and merge those PRs individually — this branch just combines them with the rebrand styling for demo purposes.
🤖 Generated with Claude Code