Contract: add MIN_DEPOSIT (500e6) + BelowMinimum error, checked against the
combined credit (stable leg + valued stock leg) in _deposit, so it covers
single- and dual-sided deposits. Tests updated (sub-$500 fixtures raised,
fuzz bounds lifted) plus three new cases; 33/33 pass. ABI regenerated.
Frontend: pre-submit validation in AppBoard and DepositPanel — button
disables with a "Min. deposit $500" label and an inline error below the
minimum, so users get feedback before signing. Shared MIN_DEPOSIT_USD /
MIN_DEPOSIT_UNITS constants. Also refreshes the local anvil addresses in the
dev deployment block (dev-only; prod uses the seed).
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
- Translate every Japanese kana/kanji glyph on the page to Simplified
Chinese: side rail, CyberGrid lexicon rail, folios, footer, scramble pool,
partner header (e.g. 流動性デスク -> 流动性交易台, katakana terms -> 哈希/流动性/深度/…).
- Remove em-dashes from the remaining code comments.
- Tighten two thesis lines that read as AI filler.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Each market panel gains a full-width depth-fill meter (depth vs target),
an expanded stat column (spread est, fee/reward/net APR alongside the
existing figures) and a micro-stat stack under the health dial (target,
fill %, ends-in, boost). Fills the previously empty card interior.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
- Remove the drop-shadow blur from SlippageCurve/DepthHistory/HealthRadial so
the segmented meter, depth trace and health dial render crisp.
- CyberGrid: add a dotted survey field, two targeting reticles, a katakana
lexicon rail, corner brackets and a coordinate header alongside the existing
survey lines and decoding labels.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
- SlippageCurve: segmented depth-charge meter with a volt redline at the 2%
slippage limit, replacing the flat bar.
- DepthHistory: area trace with survey grid, peak marker and a pulsing live
'now' node.
- HealthRadial: ticked radial dial with reticle crosshairs instead of the
plain arc.
- Faucet/action copy: "Get test hUSD" -> "Get hUSD", "Get test {SYM}" ->
"Get {SYM}", "test hUSD minted" -> "hUSD minted".
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
DepthChart maps the mouse to SVG space with getBoundingClientRect, which
assumes the drawing fills the container. The viewBox (960x380) is narrower
than the container, so preserveAspectRatio centers it with ~127px of side
padding and the crosshair drifted ~100px from the cursor near the edges.
Map through the SVG's own getScreenCTM().inverse() so it stays exact
regardless of letterboxing.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
The public build sets ACTIVE_CHAIN_ID to Arbitrum Sepolia (421614), which has
no deployment and isn't in the prod wagmi config, so useReadContracts never
resolved -> Campaigns/Markets/Positions hung on skeletons forever.
Add CAMPAIGN_SEED (mirrors script/Deploy.s.sol's launch set) and HAS_LIVE_VAULT.
When no vault is reachable, useCampaigns returns the seeded launch set instead
of reading on-chain, and the position/balance reads are disabled so they can't
hang against an unreachable chain. Live anvil/dev path is unchanged.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
- Switch wallet connect default to Robinhood Chain mainnet (4663); keep testnet
and anvil selectable. Header chip and hero folio now read Mainnet.
- New CyberGrid fx layer: survey lines, cross marks, corner locators, vertical
kanji + scramble glyphs across Markets/Campaigns/Positions/Partners/AppBoard,
echoing the hero's cyberpunk instrumentation.
- New DepthCanyon: 2D isometric voxel crater hero, single contained core glow
(no bleed onto copy).
- Real per-token market data via Dexscreener /tokens/{mint} on canonical xStock
mints; realistic prices/volume/liquidity.
- Remove VAULT address line from footer.
- Deploy target -> hoodquidity.com.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>