- Traefik wildcard HostRegexp for <space>.r*.online subdomains
- Middleware subdomain extraction and path rewriting
- Provision endpoint with owner_did acknowledgement
- Registry enforces space ownership via EncryptID JWT
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Adds the unified rStack app switcher as pure HTML/CSS/JS with pastel
badges, emoji icons, and categorized navigation across all 17 rStack apps.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Switch to all-transactions API endpoint for proper tokenInfo with correct
decimals (fixes ERC20 amounts like USDC/6 decimals being treated as 18).
Fix flow scale to use maxTx instead of maxBalance so individual flows are
visible. Change waterfall flows from vertical to diagonal down-right curves.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Inject rdata.online/collect.js tracking script in layout
- Add rData link to ecosystem footer
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Fix 429 rate limiting by making chain detection and data fetching
sequential with delays. Update waterfall viz to use bezier curves with
widths proportional to river width at entry/exit points.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Replace 261-line custom IIFE with SDK browser bundle import.
Keep localStorage migration from old rwallet_encryptid key.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Add requireAuth() gate to all visualization pages. Unauthenticated users
are redirected to the home page with a login prompt and auto-redirect
back after signing in.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Users can now switch between Multi-Chain Flow, Balance River, and
Single-Chain Sankey views without returning to the homepage — wallet
address is preserved across navigation. Added d3.zoom() to Sankey
and multi-chain flow charts with pan, scroll-zoom, and reset controls.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- 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>
- Chain buttons now serve as both selector and color legend (dot + name)
- Removed redundant color-bar and logo circle, replaced with simple dot
- Moved spam warning below transfer tables, made it subtle
- Added "tx" suffix to transfer counts for clarity
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
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>
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>
- 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>
- 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>
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>