fab41179d0
Add double-click to reset chart zoom on all charts
2026-06-10 20:27:00 +00:00
e163f83963
Fix chart accumulation bug: render daily balance instead of cumulative sum
2026-06-10 20:05:58 +00:00
e28e66b29f
fix: scan all snapshots for oldest timestamp in fetchAllWalletData
...
snapshotsToDaily returns results sorted newest-first, so allSnaps[0] was
the newest timestamp. This caused fetchPrices to compute a near-zero date
range, resulting in $0 values for all but the most recent rows.
Also removed redundant refreshPrices() call from init flow (fetchAllWalletData
already fetches full-range prices). Added table data flow doc to AGENTS.md.
2026-06-10 19:52:11 +00:00
b659d26ad1
fix: Date.UTC spread operator and EMA for rolling sats chart
2026-06-10 19:17:32 +00:00
0ad8f03990
fix: 30-day rolling average for Avg BTC acquired/day chart with continuous daily timeline
2026-06-10 18:52:03 +00:00
d9e0c1b89c
Remove redundant revoke button from wallet sidebar
2026-06-10 12:03:15 +00:00
6473d3cedf
Fix EIP-712 chainId dynamic resolution; improve add-wallet modal
...
- Replace hardcoded chainId:1 with per-chain EIP-712 domain (base→8453, etc.)
- Add hyperliquide (chainId 998) as supported EVM chain
- Auto-fill wallet address and chain from eth_requestAccounts + eth_chainId
- Auto-pick unused color when adding wallet
- Remove chain dropdown and address input; add readonly displays
- Rename localStorage key to tracked_wallets
2026-06-10 11:31:10 +00:00
5ab9cb4b5c
Enforce verified-only wallet monitoring
...
- Restore persistent verification: wallets.js loadWallets() now preserves
isVerified, signature, messageData from localStorage (was reset to false).
Only restores verification when messageData is present (anti-tampering).
- Add WalletManager.getVerifiedWallets() for EVM-only verification gating.
- Remove all hardcoded embedded data (walletCumulData, walletsMetadata,
walletCosts, walletBuys, dailySatsData, aaveCumulData, totalCumulData).
- Derive all chart data dynamically from API snapshots.
- Rewrite calculateAggregatedSeries, calculateCurrentHoldings, setupSatsCard,
setupBreakdownCard to source from addressSnapshots.
- Replace fetchAaveSnapshots with fetchAllWalletData (verified wallets only).
- Replace pollAaveUpdate with pollVerifiedWallets polling loop.
- Add inline EIP-712 verification (verifyOwnership, handleVerifyWallet,
handleRevokeVerification) with MetaMask integration.
- Sidebar shows verified/unverified badges per wallet with verify/revoke buttons.
- Non-EVM wallets (btc, solana, bitcoin) auto-verify on add (trust-based).
- Update fallback WalletManager class identically with persistent verification.
2026-06-10 08:22:39 +00:00
c573e58e0f
feat: add neon color picker for wallet management
...
- Replace muted Tailwind palette with 16-color neon palette
- Add clickable color dot in sidebar that opens a popup swatch grid
- Allow color override for all wallets (including embedded)
- Fix getColorForWallet to respect localStorage override
- Fix duplicate renameWallet in wallets.js
- Update Dockerfile to serve ESM modules via nginx
2026-06-10 07:10:24 +00:00
5716f34967
revert top nav layout: tracked wallets inline with hamburger menu
2026-06-10 06:40:15 +00:00
a61e0b0457
feat: multi-wallet architecture with localStorage state, EIP-712 verification, cross-tab WS leadership
...
- wallets.js: WalletManager state management with chain validation
- verifier.js: WalletVerifier EIP-712 signing via window.ethereum
- stream.js: WalletStreamManager with BroadcastChannel leader election, backoff + jitter
- AGENTS.md: updated with coding guidelines
2026-06-06 12:16:41 +00:00