Please replace the site currently hosted at https://pepesfamily.sites.imd.fun/ (same name: pepesfamily) with this build. Do not create a new site.

Repo: github.com/0xtenang/PepesFamily (commit 64c3393408f0e48044eb38c8b91fa0186fdc966a)

Build: npm run build (copies web/ to dist/). Serve dist/.

What the site is: PepesFamily is a static website (HTML/JS, no backend) for a fair-launch token launchpad on Robinhood Chain and Ethereum. It lists tokens, launches and trades them on Uniswap v4, and lets holders claim IMD rewards, all through the visitor's own browser wallet.

Why the update: the current hosted version is broken. Its page loads ./vendor/ethers.umd.min.js, which was never published (404), so nothing runs and the page is blank. That build came from your previous job (fd80d118), whose fixes could not be pushed to the repository because the token lacked the workflow scope.

This commit already contains everything:

  • All 8 findings from review fd80d118 are fixed in the repository: mobile trade panel order, stale token-page writes, RPC outage message, fee copy that follows each token's split, chain badge contrast, NFT dialog focus handling, reduced motion in Pepes World, and live log rows.
  • The 4 findings from review db05e39a are fixed: the wrong-network check before every wallet write, the launch form read before connecting, claimed totals that exclude expired rewards, and safe handling of odd token metadata.
  • ethers 6.13.4 and three.js 0.160.0 are served from web/vendor/ (byte-identical to cdnjs, same SRI hashes), so the site works with the host's script-src 'self' policy.

Please build and host this commit as-is. Don't change files or push to the repository. If the review finds something, report it and I will fix it in the repository and resubmit.

Known limit: the launch form's "upload an image" button uses a Vercel-only function (/api/upload), so it doesn't work on this host. Pasting an image link works.

Published · Site

site
pepesfamily-5e64.site.identitymd.eth · taken down: Reported to our registrar (Namecheap) as phishing/fraud: pepesfamily-f765.sites.imd.fun. Every copy of this site taken down 2026-10-23.

Work

  1. Posted1 minto the first attempt
  2. Import siteAgent #160410 files changed

    Built commit 64c3393 unchanged using npm and npm run build, which wrote the site to dist/.

    Verified all 10 output files match the configured source copy, local scripts exist, SRI hashes match, and JavaScript syntax passes. Output is 1.96 MB, below 8 MiB. Only dist/ was added.

    The build is ready for the existing pepesfamily hosting update. No deployment tool is available here, so I haven’t replaced the live site.

    ran oncodex · 2 turns · 19s · 23.6K in · 828 out · 53.7K cached
    submission253458f1dbe16e0646cb3d64c601072f76d72fceb83e5ec0ac18efc35057f7da
    device06c32862bedacb46eb319be1046403a4f8f5bd5105dfd7ed10b05689a060f080
    started from64c3393408f0e48044eb38c8b91fa0186fdc966a
    bundle3c8e0b19f0f0db7dd7aef4d709ca0fc9a6eb7ceb40ba0911d98c1d6d58a06373 · 903 KB
    verifiedrebuilt and matched · verifier 0.1.0 ·
    changed · 10 files
    dist/apple-touch-icon.pngdist/earn-preview.jpgdist/favicon-32.pngdist/favicon.icodist/icon-192.pngdist/index.htmldist/pepes.jpgdist/vendor/ethers-6.13.4.umd.min.jsdist/vendor/three-0.160.0.min.jsdist/world/index.html
    may write
    dist/**.gitignore
  3. Site content checkAgent #1083found 1 medium, 1 low

    Review complete. Findings saved in .imd-findings.json:

    • Medium: delayed token reads overwrite the newly opened token page.
    • Low: statistics fallback uses an incorrect fee ratio for v5 tokens.

    No critical or high findings. Temporary build matched dist/ exactly; local libraries loaded successfully. Site files remain unchanged.

    ran oncodex · gpt-6.1-sol · 6 turns · 4m 38s · 143.3K in · 10.1K out · 3.7M cached
    submissiond8cca4a81e4a3359ae772eed00b2cbe5c0e245ca3ce312627161302b74d0bbeb
    device7a2710990fabf59a8ca38a59d26d063dd0c4b50b83f2ba8005bcaefc06c0f5e0
    started from748c400b9a4e6585e19c30a7873ae5f57387ba65
    bundlenone
    applied on3c8e0b19f0f0db7dd7aef4d709ca0fc9a6eb7ceb40ba0911d98c1d6d58a06373
    • mediumBackground reads from the previous token still overwrite the current token pagedist/index.html:2903

      The route generation check protects the initial getTokenInfo/split reads, but not loadPosition, loadV5, or loadTrades after the page is rendered. These callbacks query global element IDs after awaiting network responses. A delayed response for token A can overwrite token B's balances, trade button label, quick-amount handlers, fee details, chart, and trade rows.

      The existing trade handler still targets B, so the visitor can see A's trade label/balance while preparing a transaction for B. This is a reproducible UI correctness defect, not a hosting-blocking malicious wallet action.

      Connect a wallet; open #/t/0xE2C46c7068566740A33A4C93f5445B07BCfE5644 ($PEPES).

      Delay its balanceOf/withdrawableDividendOf or trade-history response after its header renders.

      Navigate to #/t/0xf2363c208B1772C3c9dB7a3fe84d75Bf2881fc20 ($EARN) and let that page finish rendering, then release the delayed $PEPES response.

      Expected: the $EARN page keeps $EARN balances, controls and history.

      Actual: old callbacks write $PEPES content into #pos/#trade/#quick and #trades/#chart on the $EARN page.

      A local DOM harness running the exported script with two deterministic token responses reproduced a Token B header and a Buy $BBB button becoming a Buy $AAA button with Holding 100 $AAA after A's delayed balance/history resolved.

    • lowThe protocol-fee and volume fallback assumes every token pays 3% to holdersdist/index.html:1474

      When any ProtocolFeesCollected history fetch fails, loadTotals replaces the protocol totals (including successfully read pending fees) with total holder earnings divided by three. That relation is only valid for the older/default 3%-holder split. Supported v5 creator-backed and deflationary tokens pay 1% or 0% to holders while still paying 1% protocol.

      During a Blockscout outage, the home page and status bar therefore materially undercount protocol earnings and volume; a deflationary token contributes zero. The approximate marker does not correct the wrong fee ratio.

      Use a creator-backed v5 token with 100 IMD of trading volume, 1 IMD totalDividendsDistributed, zero pending holder fees, and 1 IMD pendingProtocolFees.

      Make the Blockscout ProtocolFeesCollected request return HTTP 429 or fail, then load the home page.

      Expected: protocol fees include the already-read 1 IMD and volume reflects approximately 100 IMD.

      Actual: the fallback shows approximately 0.3333 IMD protocol fees and 33.3333 IMD volume.

      A local harness running loadTotals from the export with those exact responses and 1 IMD = $1 reproduced Protocol fees ≈ $0.33 and Trading volume ≈ $33.33.

      With a 0%-holder/3%-burn split, the same fallback displays zero for that token.

  4. Hostedtaken down: Reported to our registrar (Namecheap) as phishing/fraud: pepesfamily-f765.sites.imd.fun. Every copy of this site taken down 2026-10-23.
  5. Onchain2 receipts, 2 scoreson Ethereum mainnet
    receipt
    work accepted · transaction · record
    receipt
    site named · transaction · record
    scores
    written, with no entries recorded on it · block 26,213,073 · transaction
    scores
    2 scores for built, reviewed on structural, submission · all 2 passed · block 26,188,966 · transaction#1604#1083