Commit Graph

6 Commits

Author SHA1 Message Date
Jeff Emmett 391db9aa20 Robust rate limiting: concurrency pool, graceful failures, longer backoff
- Add pooled() concurrency limiter (2 chains data, 3 chains detection)
- fetchJSON returns null on exhausted retries instead of throwing
- Backoff starts at 2s, doubles up to 32s, 5 retries
- fetchAllChainsData: failed chains skipped, partial data still renders
- fetchChainData: 300ms delay between requests within same chain
- Cache bust v4

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-13 07:51:40 -07:00
Jeff Emmett 9dc2b01896 feat: add optional EncryptID passkey authentication
Add passkey sign-in to the static wallet explorer:
- Add js/encryptid.js with WebAuthn registration/authentication
- Add auth button to hero section of index.html
- Persists auth state in localStorage
- No backend required — all client-side

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-13 07:34:41 -07:00
Jeff Emmett d7892f4404 Speed up data fetching: parallel across chains, sequential within
Each chain has its own API server (different subdomain) so rate limits
are independent. Now fetches all chains in parallel while keeping
requests within each chain sequential. Removes unnecessary sleep()
delays between requests to the same server.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-13 07:17:36 -07:00
Jeff Emmett 72efe9731b Fix persistent 429: bust JS cache, stagger all API calls sequentially
- Add ?v=2 cache busting to all JS script tags (old version was cached)
- Reduce nginx JS cache from 1y to 1h with must-revalidate
- fetchChainData now sequential (was 4 parallel requests per chain)
- Increase chain detection delay from 150ms to 300ms

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-13 07:12:02 -07:00
Jeff Emmett c6df6de6d3 Fix 429 rate limiting: add retry backoff and stagger API requests
- fetchJSON retries up to 4 times with exponential backoff on 429
- detectSafeChains checks chains sequentially with 150ms delay
- fetchAllChainsData fetches chains sequentially with 200ms delay

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-13 03:46:06 -07:00
Jeff Emmett d0c75aba8f Transform into generalized rWallet.online platform
Replace hardcoded single-wallet static site with a dynamic platform
that can explore any Safe multi-sig wallet across 7 chains via live
Safe Global API data.

New files:
- js/safe-api.js: Browser-side Safe Transaction Service API client
- js/data-transform.js: API response to D3 visualization transforms
- js/router.js: URL-based state management and shared address bar

Modified:
- index.html: Rich homepage with wallet input, ELI5, viz cards, demo CTA
- wallet-visualization.html: Dynamic single-chain Sankey from live data
- wallet-timeline-visualization.html: Dynamic Balance River from live data
- wallet-multichain-visualization.html: Dynamic multi-chain flow from live data
- Dockerfile: Copy js/ directory alongside HTML files
- docker-compose.yml: Add rwallet.online domain to Traefik routing

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-13 03:32:54 -07:00