Conversation
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
- Primary purple scale (#9A0DFF base) - Accent pink scale (#FF4FE9 base) - Blue scale updated to complement purple - Default black changed to umbra (#3d304c) - Default white changed to glint white (#f8f8ff) - New gradient backgrounds for cards and accents
- PP Valve as primary sans-serif font - PP Fraktion Mono as monospace/secondary font - Remove old Neue Haas Display and Space Grotesk fonts - Add font-face declarations and widget overrides in global.css - Purple scrollbar and timeline styling - Gitignore public/fonts (fonts loaded at runtime)
- New purple Hyperlane logo shape - Purple/pink gradient arrow - Updated favicon in all sizes - Add HyperlaneGradientLogo component
- Update header and footer with new logo - Apply purple theme to buttons, cards, search bars - Update card icons to use black (#3d304c) - Softer code block backgrounds for glint white contrast - Update theme color meta tag
- Dark purple background (#110821) - Purple/pink gradient top border - PP Valve for titles, PP Fraktion Mono for technical values - Adjusted message ID background opacity - Chain-colored boxes with dynamic color extraction
- Update brand-gradient to radial ellipse (200% 150%) for smoother transition - Deepen widget timeline purple to #4c1d95 for better contrast - Simplify widget font overrides (PP Valve default, mono for technical) - Update favicon to transparent gradient logo - Remove legacy NeueHaasDisplay and SpaceGrotesk fonts - Add glint white (bg-white) to search inputs - Update CodeBlock background to #e5e7eb - Remove bold styling from footer links - Update icons to purple theme 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Scale favicon logo to fill more space (1.6x) - Desaturate OG arrow gradient for subtler appearance - Fix OG footer layout with flex: 1 for true centering - Add matching pill backgrounds to MESSAGE ID and SENT - Color delivery time green if <5m, gray otherwise - Fix SENT right alignment - Update filter clear button to pink-300/80 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- Add scripts/fetch-fonts.mjs to download fonts from S3 at build time - Add prebuild script that runs before 'pnpm build' - Add fetch-fonts script for manual font download with local env - Consolidate CSS to use variable fonts (reduces 8 font files to 2) - Add .env.example documenting required AWS credentials - Add @aws-sdk/client-s3 as devDependency Font files downloaded: - PPValve-PlainVariable.woff2 (CSS) - PPFraktionMono-Variable.woff2 (CSS) - PPValve-PlainMedium.ttf (OG image API) - PPFraktionMono-Regular.ttf (OG image API)
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
43c0281 to
5d6ccb1
Compare
f73679b to
3fc7c62
Compare
|
@claude review |
|
Claude finished @paulbalaji's task in 1m 43s —— View job Review Complete
Submitted a consolidated PR review with 2 inline suggestions:
Overall the feature looks solid — good fail-closed design, proper decimal normalization, and clean test coverage. Nothing blocking. |
There was a problem hiding this comment.
Review Summary
Clean, well-structured feature. The fee parsing logic is sound — normalizing SentTransferRemote amounts back to native decimals via getWarpRouteAmountParts/getEffectiveDecimals is the right approach, and the fail-closed design (return null on any anomaly) is appropriate. The cursor bugbot issues from the earlier revision have been addressed.
Two minor items below worth considering; nothing blocking.
Nits
- The formatting-only changes (AppLayout, QuestionMarkIcon, MessageTable, WarpRouteVisualizationCard, Footer, Header, og.tsx, global.css) are fine but could've been a separate commit to keep the feature diff focused.
There was a problem hiding this comment.
Cursor Bugbot has reviewed your changes and found 1 potential issue.
Bugbot Autofix is OFF. To automatically fix reported issues with cloud agents, enable autofix in the Cursor dashboard.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
5d6ccb1 to
8f62130
Compare
…nels The CSS rule `[data-headlessui-state].htw-bg-white` was applying the dark mobile nav background to all Headless UI panels including the chain search modal, time range popover, and status dropdown. Move the dark bg styling to the mobile nav menuClassname prop instead. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
8f62130 to
6c1a3d0
Compare
- Add leading and titleSize props to SectionCard - TransactionCard uses chain logo as leading element (size 24) - Transaction card headers use medium (text-base) title size Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
6c1a3d0 to
2d1d657
Compare
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Parse ERC20 Transfer events and SentTransferRemote events from the origin transaction receipt to compute warp fees. Displays "Warp fee" and "Total sent" rows in the Warp Transfer Details card when fees > 0. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- Fix decimals mismatch: normalize SentTransferRemote wireDecimals to native token decimals before computing fee - Switch useWarpFees to useQuery (fixes race condition, adds caching) - Export and test actual parsing helpers instead of inline math - Hoist interface objects to module scope - Remove unused bridgeFeeRaw field and unnecessary types.ts - Use formatAmountCompact for display - Warn instead of silent fallback for missing decimals/negative fees - Remove redundant isEvmChain check from hook Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Only count Transfer events emitted by the actual warp token contract, not any ERC20 in the tx. For collateral routes, use collateralAddressOrDenom; for synthetic routes, the router itself is the ERC20. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
SentTransferRemote emits localAmount * scale on scale routes, not wireDecimals-normalized amounts. Divide by scale before subtracting from ERC20 Transfer total to get correct fee. Also export and test normalizeDecimals. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Use existing getEffectiveDecimals() instead of hardcoded wireDecimals fallback. Handles Cosmos, scale, wireDecimals, and maxDecimals cases. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Delegate scale handling to existing getWarpRouteAmountParts instead of manual BigNumber.div. Combined with getEffectiveDecimals, all amount decoding logic now reuses shared utils. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Tx receipts are immutable once confirmed, so there's no need to refetch on remount. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2d1d657 to
26ee161
Compare

Summary
Transferevents (total tokens sent to router) vsSentTransferRemoteevent (net bridged amount)Changes
src/features/messages/warpFees/types.tsWarpFeeBreakdowntypesrc/features/messages/warpFees/fetchWarpFees.tssrc/features/messages/warpFees/useWarpFees.tssrc/features/messages/warpFees/fetchWarpFees.test.tssrc/features/messages/cards/WarpTransferDetailsCard.tsxHow it works
SentTransferRemote(uint32,bytes32,uint256)to get net bridged amountTransfer(from,to,value)events from sender → router for total tokens pulledTest plan
pnpm run typecheck— cleanpnpm run lint— cleanpnpm run test— 3 new tests pass, no regressions🤖 Generated with Claude Code
Note
Medium Risk
Adds new RPC-backed fee parsing by decoding origin transaction receipts and ERC20/router logs; incorrect assumptions about sender/router/token addresses or decimals could cause missing/incorrect fee display or extra RPC load. Changes are otherwise additive and gated to EVM ERC20 warp routes with graceful null fallbacks.
Overview
Warp transfers now surface bridge fees. The message details view fetches the origin transaction receipt for EVM ERC20 warp routes and computes a fee breakdown by comparing ERC20
Transfertotals into the router vs the router’sSentTransferRemoteamount (with decimal/scale normalization).When a non-zero fee is detected,
WarpTransferDetailsCardshows new Warp fee and Total sent rows, backed by a newuseWarpFeesreact-query hook and unit tests for the log parsing/decimal normalization helpers.Also includes small formatting-only tweaks (imports/line wrapping) and minor CSS hex-case cleanup.
Written by Cursor Bugbot for commit 26ee161. This will update automatically on new commits. Configure here.