Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
85 commits
Select commit Hold shift + click to select a range
18257b4
feat: add script for local dependency linking
troykessler Jan 16, 2026
70d8ebb
feat: reset package.json
troykessler Jan 16, 2026
20ea4f1
feat: readd pnpm-lock.yaml
troykessler Jan 16, 2026
537634c
feat: restore pnpm-lock.yaml
troykessler Jan 16, 2026
aafe751
feat: resolve pr comments
troykessler Jan 19, 2026
3e072f8
Merge branch 'main' into feat/local-linking
troykessler Jan 20, 2026
e0e5670
fix: add provider-sdk
troykessler Jan 20, 2026
9325dc8
ci: add Claude code review workflow (#920)
paulbalaji Jan 30, 2026
57e6b69
Add AGENTS.md as duplicate of CLAUDE.md (#922)
paulbalaji Feb 3, 2026
ff99a2b
chore: enable wasm-unsafe-eval and upgrade hyperlane packages (#923)
Xaroz Feb 3, 2026
9b994ee
chore: load page in bg color (#924)
Xaroz Feb 5, 2026
fb722de
chore(ci): update Claude model to opus 4.6 (#927)
paulbalaji Feb 5, 2026
5b78ce5
fix(build): disable Sentry source map upload to prevent build hangs (…
paulbalaji Feb 5, 2026
11921d7
perf(build): skip lint/typecheck during Vercel build (#929)
paulbalaji Feb 5, 2026
cc07efd
feat(ci): use skills for claude review workflows (#931)
paulbalaji Feb 5, 2026
63f46e4
chore: update Hyperlane deps (#902)
hyper-gonk[bot] Feb 5, 2026
8de29bb
feat: aleo nexus support (#933)
troykessler Feb 9, 2026
3c93229
feat: sync merge
troykessler Feb 9, 2026
686d606
Merge pull request #899 from hyperlane-xyz/feat/local-linking
troykessler Feb 9, 2026
f22296a
merge: pull latest origin/main into pbio/ui-rebrand-temp
paulbalaji Feb 9, 2026
d280581
feat(ui): add swap page shell with token selection and form layout
paulbalaji Feb 9, 2026
1508a6c
feat(ui): add swap token cards, quote display, and quote fetching hooks
paulbalaji Feb 9, 2026
05ec6ca
chore(ui): add Base USDC address to swap config
paulbalaji Feb 9, 2026
a3cf5f8
feat(ui): add swap status tracking and error handling
paulbalaji Feb 9, 2026
5cbd641
feat(ui): implement swap transaction flow with commitment posting and…
paulbalaji Feb 9, 2026
cf00378
feat(ui): wire up end-to-end swap flow with status tracking and revie…
paulbalaji Feb 9, 2026
0fde942
feat(ui): add ICA balance display and send-from-ICA functionality
paulbalaji Feb 9, 2026
1139cf0
fix: resolve lint errors and apply prettier formatting
paulbalaji Feb 10, 2026
22183c7
chore: update SDK to beta, add ethers dep, update swap config
paulbalaji Feb 10, 2026
4c6d0eb
feat(swap): add swap-bridge transfer hooks and route detection
paulbalaji Feb 10, 2026
18cf61d
feat(ui): integrate swap-bridge into unified transfer page
paulbalaji Feb 10, 2026
cbc38db
feat(ui): add ICA panel to home page and remove swap nav link
paulbalaji Feb 10, 2026
11fdeea
chore: remove separate swap page and unused swap components
paulbalaji Feb 10, 2026
9432a1f
refactor(swap): replace hardcoded chain config with generic per-chain…
paulbalaji Feb 10, 2026
2cc79cd
fix(swap): correct ICA router addresses from registry, add Base unive…
paulbalaji Feb 10, 2026
99eb683
feat(swap): add Arbitrum universal router address
paulbalaji Feb 10, 2026
605f043
chore: use offsite-swap explorer branch for demo
paulbalaji Feb 10, 2026
2e4a802
fix: match loading screen to dark rebranded theme
paulbalaji Feb 10, 2026
abe779c
fix: improve route label to show chain names, add ICA derivation logging
paulbalaji Feb 10, 2026
970ac4a
feat(swap): wire on-chain quotes, contextual ICA panel, Phase 2 gas p…
paulbalaji Feb 10, 2026
4c5fbab
fix: use token decimals instead of hardcoded values in swap quote dis…
paulbalaji Feb 10, 2026
b2d2aae
fix: use on-chain getLocalInterchainAccount for ICA address, remove T…
paulbalaji Feb 11, 2026
f3f6c55
chore: update SDK to trimmed beta, add quoterV2 config, remove @hyper…
paulbalaji Feb 11, 2026
a20b7e1
refactor: use SDK InterchainAccount class for all ICA operations
paulbalaji Feb 11, 2026
72d52cf
fix: pass plain address (not bytes32) as ICA owner
paulbalaji Feb 11, 2026
305827d
debug: add diagnostic logging to swap-bridge flow
paulbalaji Feb 11, 2026
8b53a21
fix: use toWei instead of viem parseUnits to fix e.split error, pass …
paulbalaji Feb 11, 2026
90cee9d
fix: resolve swappable token address from warp route token type
paulbalaji Feb 11, 2026
d34fc69
fix: use bytes32 zero for ISM address to avoid addressToBytes32 rejec…
paulbalaji Feb 11, 2026
fafd964
fix: switch wallet to origin chain and create chain-specific publicCl…
paulbalaji Feb 11, 2026
1fa376c
chore: bump SDK beta to 9abab0973 with CONTRACT_BALANCE fix
paulbalaji Feb 11, 2026
ee32519
fix: pass isNativeOrigin to SDK, remove manual native value addition
paulbalaji Feb 11, 2026
ef98483
chore: bump SDK beta to ffb4f4308 with WRAP_ETH fix
paulbalaji Feb 11, 2026
1ec2dd9
fix: pass bridge token fee and expected swap output to SDK
paulbalaji Feb 11, 2026
17fd0f8
chore: bump all hyperlane packages to beta d0df9dfe7 with amountOutMi…
paulbalaji Feb 11, 2026
eb97041
chore: bump hyperlane packages to beta 52c02ed63 with slippage fix
paulbalaji Feb 11, 2026
c3b60d9
fix: conditional ICA dispatch, proper dest swap calls, and crossChain…
paulbalaji Feb 11, 2026
8143f77
perf(build): conditional Sentry, parallel builds, optimizePackageImports
paulbalaji Feb 11, 2026
158a932
fix: resolve destination token to swappable address for dest chain swap
paulbalaji Feb 11, 2026
d146fe9
fix: enforce demo swap path and ICA return flow
paulbalaji Feb 11, 2026
9cd111e
fix: lock demo route and disable cross-chain router command
paulbalaji Feb 11, 2026
28e10d6
fix: aleo wallet popup (#942)
troykessler Feb 11, 2026
77a1fa1
fix: autoswitch ICA return chain and harden fee quoting
paulbalaji Feb 11, 2026
9f02bf0
fix: use route quote tokenPull for ICA return approvals
paulbalaji Feb 11, 2026
2660853
fix: derive demo USDC route config from registry
paulbalaji Feb 11, 2026
bfbb84d
fix: re-enable cross-chain command with ICA fee hard-fails
paulbalaji Feb 11, 2026
9c687d4
chore: bump hyperlane packages to beta 3d935ca
paulbalaji Feb 11, 2026
7c80366
Merge remote-tracking branch 'origin/main' into pb/offsite-swap
paulbalaji Feb 11, 2026
2488eb0
fix: wire real ICA commitment payloads for swap-bridge demo
paulbalaji Feb 11, 2026
c6ce9eb
chore: bump sdk beta and use commitment helper APIs
paulbalaji Feb 11, 2026
f41f265
chore: disable warp route whitelist for demo token discovery
paulbalaji Feb 11, 2026
0acdaee
fix: prefer demo-compatible token selection for URL symbol params
paulbalaji Feb 11, 2026
fee7797
fix: relax demo swap path route-address check
paulbalaji Feb 11, 2026
189f983
fix: validate swap-bridge addresses and set explicit ISM zero address
paulbalaji Feb 11, 2026
81ed8e6
fix: harden swap-bridge demo path and pass velo quote params
paulbalaji Feb 12, 2026
ce18b21
chore: bump hyperlane deps to sdk beta e959e2b
paulbalaji Feb 12, 2026
c289013
fix: accept deduped base usdc tokens for demo swap-route gating
paulbalaji Feb 12, 2026
9863f5e
fix: align optimism demo swap dex flavor with quoter
paulbalaji Feb 12, 2026
79e9b76
fix: buffer swap-bridge bridge and ICA fees at submit
paulbalaji Feb 12, 2026
a8a6563
fix: retry swap-bridge simulation with adaptive fee buffers
paulbalaji Feb 12, 2026
5cf17db
fix: quote swap-bridge fee for actual destination recipient
paulbalaji Feb 12, 2026
c0cd2a2
fix: quote ICA commit-reveal fees in ui fallback
paulbalaji Feb 12, 2026
a33a752
latest
paulbalaji Feb 12, 2026
8a6597e
fix: cache ICA address and stabilize swap query state
paulbalaji Feb 12, 2026
e115ab6
fix: fetch ICA address when cache is empty
paulbalaji Feb 12, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
42 changes: 42 additions & 0 deletions .claude/skills/claude-review/SKILL.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@
---
name: claude-review
description: Review code changes using Hyperlane Warp UI coding standards. Use when reviewing PRs, checking your own changes, or doing self-review before committing.
---

# Code Review Skill

Use this skill to review code changes against Hyperlane Warp UI standards.

## When to Use

- Before committing changes (self-review)
- When asked to review a PR or diff
- To check if changes follow project patterns

## Instructions

Read and apply the guidelines from `.github/prompts/code-review.md` to review the code changes.

### For PR Reviews

When reviewing a PR, deliver feedback using `/inline-pr-comments` to post inline comments on specific lines.

**Delivery format:**

1. **Inline comments** - For all issues on lines IN the diff
2. **Summary body** - For:
- Overall assessment
- Architecture concerns
- Issues found OUTSIDE the diff (use "## Observations Outside This PR" section)

GitHub API limitation: Can only post inline comments on changed lines. Issues in unchanged code go in the summary body.

### For Self-Review

When reviewing your own changes before committing:

1. Run `git diff` to see changes
2. Apply the code review guidelines
3. Fix issues directly rather than commenting

Security issues should use `/claude-security-review` instead.
25 changes: 25 additions & 0 deletions .claude/skills/claude-security-review/SKILL.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
---
name: claude-security-review
description: Security-focused review for frontend/Web3 code. Use for XSS, wallet security, CSP, and dependency checks.
---

# Security Review Skill

Use this skill for security-focused code review of frontend Web3 code.

## When to Use

- Reviewing wallet integration code
- Checking for XSS vulnerabilities
- CSP header changes
- Dependency updates

## Instructions

Read and apply the security guidelines from `.github/prompts/security-scan.md` to review the code changes.

Report findings with severity ratings (Critical/High/Medium/Low/Informational) and suggested fixes.

### For PR Reviews

When reviewing a PR, deliver feedback using `/inline-pr-comments` to post inline comments on specific lines.
86 changes: 86 additions & 0 deletions .claude/skills/inline-pr-comments/SKILL.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,86 @@
---
name: inline-pr-comments
description: Post inline PR review comments on specific lines. Use this skill to deliver code review feedback as inline comments rather than a single summary.
---

# Inline PR Comments Skill

Use this skill to post code review feedback as inline comments on specific lines in a PR.

## When to Use

- After completing a code review (use with /claude-review, /claude-security-review)
- When you have specific line-by-line feedback to deliver
- To make review feedback more actionable

## Instructions

Post a review with inline comments using `gh api`:

```bash
gh api repos/{owner}/{repo}/pulls/{pr_number}/reviews --input - << 'EOF'
{
"event": "COMMENT",
"body": "Optional summary of overall findings",
"comments": [
{
"path": "path/to/file.ts",
"line": 42,
"body": "Issue description and suggested fix"
},
{
"path": "another/file.ts",
"start_line": 10,
"line": 15,
"body": "Multi-line comment spanning lines 10-15"
}
]
}
EOF
```

### Comment Fields

- `path` - File path relative to repo root
- `line` - Line number in the NEW version of the file (right side of diff)
- `start_line` + `line` - For comments spanning multiple lines
- `body` - Markdown-formatted feedback

### Limitations

- Can only comment on lines that appear in the diff (changed/added lines)
- Comments on unchanged lines will fail with "Line could not be resolved"

### Handling Non-Diff Findings

When you discover issues in code NOT changed by the PR:

1. **Include in summary body** - Always report in the `"body"` field
2. **Format clearly** - Use a dedicated section "## Observations Outside This PR"
3. **Be actionable** - Include file:line references so author can follow up
4. **Don't block** - These are informational; don't use `REQUEST_CHANGES` for non-diff issues

Example structure:

```json
{
"event": "COMMENT",
"body": "## Review Summary\n[inline feedback summary]\n\n## Observations Outside This PR\nWhile reviewing, I noticed:\n- `src/utils/foo.ts:142`: Pre-existing null check missing\n- `src/core/bar.ts:78-82`: Similar pattern to line 45 issue - consider deduping",
"comments": [
// Only lines IN the diff
]
}
```

### Feedback Guidelines

| Feedback Type | In Diff? | Where to Put It |
| ----------------------------- | -------- | --------------------------------------------------------- |
| Specific code issue | Yes | Inline comment on that line |
| Pattern repeated across files | Yes | Inline on first occurrence + note "same issue in X, Y, Z" |
| Related issue found | No | Summary body under "Observations Outside This PR" |
| Pre-existing bug discovered | No | Summary body (consider separate issue if critical) |
| Overall architecture concern | N/A | Summary body |
| Approval/changes requested | N/A | Use `event: "APPROVE"` or `event: "REQUEST_CHANGES"` |

Be concise. Group minor style issues together.
44 changes: 44 additions & 0 deletions .github/prompts/code-review.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,44 @@
Review this pull request. Focus on:

## Code Quality

- Logic errors and potential bugs
- Error handling and edge cases
- Code clarity and maintainability
- Adherence to existing patterns in the codebase
- **Use existing utilities** - Search codebase before adding new helpers
- **Prefer `??` over `||`** - Preserves zero/empty string as valid values

## Architecture

- Consistency with existing architecture patterns
- Breaking changes or backward compatibility issues
- API contract changes
- **Deduplicate** - Move repeated code/types to shared files
- **Extract utilities** - Shared functions belong in utils packages

## Testing

- Test coverage for new/modified code
- Edge cases that should be tested
- **New utility functions need unit tests**

## Performance

- Unnecessary re-renders or computations
- Bundle size impact of new dependencies

## Frontend-Specific

- **Use existing utilities** - Check `src/utils/` before adding (normalizeAddress, etc.)
- **Chain-aware addresses** - Only lowercase EVM hex; Solana/Cosmos are case-sensitive
- **CSP updates required** - New external scripts/styles need `next.config.js` CSP updates
- **Avoid floating promises** - In useEffect, use IIFE or separate async function
- **Use useQuery refetch** - Don't reinvent; use built-in refetch from TanStack Query
- **Flatten rendering logic** - Avoid nested if; use early returns instead
- **Zustand patterns** - Follow existing store patterns in `src/features/store.ts`
- **Constants outside functions** - Move config/constants outside component functions

Provide actionable feedback with specific line references.
Be concise. For minor style issues, group them together.
Security issues are handled by a separate dedicated review.
38 changes: 38 additions & 0 deletions .github/prompts/security-scan.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
## Frontend Security Focus Areas

This is a Web3 frontend application. Pay special attention to:

### XSS & Content Security
- Input sanitization before rendering user data
- Dangerous patterns: dangerouslySetInnerHTML, eval(), innerHTML
- URL validation (javascript: protocol, data: URLs)
- CSP headers and inline script risks

### Web3 Wallet Security
- Blind signature attacks (signing data without user understanding)
- Transaction simulation before signing
- Clear message display before signature requests
- Proper origin/domain verification for wallet connections
- **Chain-aware address validation** - EVM hex can lowercase; Solana base58/Cosmos bech32 are case-sensitive
- **Don't collapse addresses** - Normalizing non-EVM addresses can create security issues

### Dependency & Supply Chain
- Known vulnerabilities in dependencies
- Malicious packages, typosquatting
- Outdated critical security packages

### API & Token Security
- CORS configuration
- Token storage (avoid localStorage for sensitive tokens)
- API key exposure in client-side code

### Private Key Handling
- NEVER expose private keys client-side
- Check for hardcoded keys or mnemonics
- Wallet connection patterns should not request keys

### Content Security Policy
- New external resources (scripts, styles, frames) need CSP header updates
- Check `next.config.js` for script-src, style-src, connect-src, frame-src
- Third-party integrations (Intercom, analytics, wallets) need explicit allowlisting
- Test with CSP enabled in production mode
24 changes: 10 additions & 14 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
@@ -1,18 +1,15 @@
name: ci

on:
# Triggers the workflow on push or pull request events but only for the main branch
push:
branches: [main, nautilus, nexus, injective, trump, ousdt]
pull_request:
branches: [main, nautilus, nexus, injective, trump, ousdt]
merge_group:

# Allows you to run this workflow manually from the Actions tab
workflow_dispatch:

jobs:
install:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v6
Expand All @@ -34,7 +31,7 @@ jobs:
restore-keys: |
${{ runner.os }}-pnpm-store-

- name: pnpm-install
- name: Install dependencies
run: |
pnpm install --frozen-lockfile
CHANGES=$(git status -s)
Expand All @@ -44,9 +41,13 @@ jobs:
exit 1
fi

build:
- name: build
run: pnpm run build
env:
NEXT_PUBLIC_WALLET_CONNECT_ID: ${{ secrets.NEXT_PUBLIC_WALLET_CONNECT_ID }}

typecheck:
runs-on: ubuntu-latest
needs: [install]
steps:
- uses: actions/checkout@v6
- uses: pnpm/action-setup@v4
Expand All @@ -70,14 +71,11 @@ jobs:
- name: Install dependencies
run: pnpm install --frozen-lockfile

- name: build
run: pnpm run build
env:
NEXT_PUBLIC_WALLET_CONNECT_ID: ${{ secrets.NEXT_PUBLIC_WALLET_CONNECT_ID }}
- name: typecheck
run: pnpm run typecheck

prettier:
runs-on: ubuntu-latest
needs: [install]
steps:
- uses: actions/checkout@v6
- uses: pnpm/action-setup@v4
Expand Down Expand Up @@ -112,7 +110,6 @@ jobs:

lint:
runs-on: ubuntu-latest
needs: [install]
steps:
- uses: actions/checkout@v6
- uses: pnpm/action-setup@v4
Expand Down Expand Up @@ -141,7 +138,6 @@ jobs:

test:
runs-on: ubuntu-latest
needs: [build]
steps:
- uses: actions/checkout@v6
- uses: pnpm/action-setup@v4
Expand Down
Loading