Skip to content

Ux touchups#10

Open
Corantin wants to merge 202 commits into
devfrom
ux-touchups
Open

Ux touchups#10
Corantin wants to merge 202 commits into
devfrom
ux-touchups

Conversation

@Corantin

@Corantin Corantin commented Jul 8, 2026

Copy link
Copy Markdown
Collaborator

No description provided.

pglavin2 and others added 30 commits May 7, 2026 04:32
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- CSP: add vercel.live to script-src to unblock Vercel feedback widget
- views: guard against empty message to stop /api/views 400 errors
- reactions: fix GET endpoint to scan all reactions:v2:* keys when no
  markeeAddress supplied — hook was always getting empty array on load
- detail page: remove Names tab, rename Funding→Funds Added and
  Messages→Message History, merge message+name events into single
  time-sorted combined history without strikethrough old values

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Markee Cooperative, Gardens, Clawchemy, and Superfluid are in the
legacy OI factory's getLeaderboards() list but had no KV meta, so
they were landing in Unverified with status:pending. Hardcode their
verified status, URLs, and logos directly in the OI leaderboards API
so they always appear in the Verified section without a KV write.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
The SF migration leaderboard (0xb6CC...) is a partner leaderboard
migrated from v0.1, not a new Superfluid project. It comes through
the SF API, but the ecosystem aggregator strips status from all SF
entries, so it landed in Unverified. Override that one address to
platform:website + status:verified so it joins Cooperative, Gardens,
and Clawchemy in the Verified section.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- reactions: replace kv.scan (unreliable in @vercel/kv v2) with a
  set-index approach — POST writes sadd reactions:markees, GET reads
  smembers + hgetall per markee; no more 500 on page load
- CSP: add vercel.live to frame-src to stop iframe violation warning
- detail page: wrap history tabs in ModeratedContent so flagged markees
  blur the full message history for non-admin users

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
TokenBalance gated on wagmi isConnected which lags behind Privy's
authenticated state. Adding the Privy authenticated check means the
balance hides as soon as Privy logs out, matching ConnectButton behaviour.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- New /api/eth-price endpoint (CoinGecko + 5-min KV cache)
- useEthPrice hook for client-side price lookups
- formatUsd utility for consistent dollar formatting
- EthBalance component in header showing ETH balance + USD value
- FixedPriceModal: USD-primary price + balance, Fund with card button
- TopDawgModal: USD-primary preset buttons + balance, Fund with card button
- Home page and create-a-markee stats show USD primary with ETH secondary

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Superfluid points:
- Add legacy TopDawg (FundsAddedToMarkee) scan from block 41984295
- Add dedicated SF migration leaderboard scan with own KV block key
- Give each address family its own last-processed block so late additions
  don't silently skip historical events
- uniqueId (txHash-logIndex) deduplication makes all scans safe to re-run

GitHub delimiter grandfathering:
- Add GITHUB_NEW_TO_OLD map in linkedFiles.ts covering all 11 v1.0→v1.1
  GitHub leaderboard migrations from markee-migrations.csv
- verify-markee-file and register-markee now accept old-address delimiters
  as verified when the new-address delimiter is absent
- update-markee-file uses migrate-on-write: if only old delimiters are
  found it replaces them with the new-address markee block on next update

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
The hardcoded v1.0→v1.1 map doesn't cover files from before the v1.0
migration (e.g. delimiter address 0x56c5f6ce... in honeyswap-interface).

verify-markee-file and register-markee now accept any
<!-- MARKEE:START:0x{40} --> / <!-- MARKEE:END:0x{40} --> pair as valid,
regardless of which address is embedded. Push access to the repo was
already verified on registration so this doesn't weaken the security model.

update-markee-file gains a matching last-resort regex pass: it finds any
address-shaped delimiter pair and replaces the block with the current
leaderboard's content + new-address delimiters (migrate-on-write).

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Partners with leaderboardAddress=null (Bread Cooperative, RevNets, Juicebox,
Giveth, Flow State) had their old TopDawg strategy addresses fall through as
strategyAddress in TopDawgModal. Those old strategies route to RevNet v5
(project 119, compromised terminal) so any purchase would send a portion of
ETH there.

Changes:
- Hide "Buy a Message" and "Be the First!" buttons when leaderboardAddress is null,
  showing "Purchases coming soon" instead
- Remove the strategyAddress fallback to partner.strategyAddress in TopDawgModal
  (now passes undefined when no leaderboard, preventing any purchase call)

Completing migration for these 5 partners requires deploying new v1.1 leaderboards
via the OpenInternet factory and setting leaderboardAddress in PARTNERS.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
The Superfluid factory deployed early leaderboards from a v1.0
Leaderboard implementation that hardcodes the deprecated RevNet v5
terminal (0x2dB6d704...) — routing 38% of every purchase to it.

Read VERSION() on each individual leaderboard page and gate all
purchase buttons behind isLegacyContract check (VERSION !== '1.1.0').
Legacy leaderboards show a warning banner instead of Buy a Message.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
…rboards

Deploys a new v1.1 Superfluid LeaderboardFactory and migrates all 96 existing
v1.0 leaderboards from the old factory (0x45Ce642d...). Per-leaderboard: creates
v1.1 clone via new factory, removes automation seed, runs migrateFromLegacy() for
each markee, transfers admin back to original creator. Resolves original admins
from old factory's LeaderboardCreated event logs rather than admin() (which returns
zero on the deployed pre-v1.0 bytecode). Outputs JSON and CSV rows for follow-up
frontend updates.

Fund automation wallet 0x000D356bB4D1E81CAb7cFA47D8707cdBDfEDE5af with ~0.05 ETH
before running live. After running, update FACTORIES.SUPERFLUID and the two API
routes per the script's NEXT STEPS output.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Deploys new v1.1 LeaderboardFactory for Superfluid
(0x1E1b0C22e2C6C7b46ABb0F25231c7eecD4f0A2d8) and migrates all 96
v1.0 leaderboards to v1.1 counterparts with correct RevNet routing.

- Update SUPERFLUID_FACTORY_ADDRESS and FACTORY_DEPLOY_BLOCK across
  leaderboards API and points cron to point at new factory
- Add old→new redirect map in [address]/page.tsx so legacy URLs
  transparently redirect to v1.1 leaderboard addresses
- Update addresses.ts and CLAUDE.md with new factory address
- Record new factory address in migrations CSV

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Replaces hardcoded MIGRATIONS array with auto-loading from
/tmp/migration-sf-factory-results.json so all 149 markee address
pairs from the v1.0→v1.1 factory migration are migrated in one run.
Switches SET → INCRBY so re-runs accumulate safely.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
…Superfluid markee addresses

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
…views route

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
…tion, and health endpoint

- Add topMarkeeAddress to API fields docs
- Add view tracking section: proxy route + useRef-gated POST on first display
- Add moderation section: proxy route + flagged Set + per-tab filtering behavior
- Add optional health endpoint route for integration dashboard verification
- Update platform/moderation banner copy (no longer mentions @vercel/kv)

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
…factory

SUPERFLUID_FACTORY_ADDRESS now points to FACTORIES.SUPERFLUID (v1.1,
0x1E1b0C22e2C6C7b46ABb0F25231c7eecD4f0A2d8) instead of the old
0x45Ce642d factory. Both the writeContract call and the receipt log
parser use the same constant, so both are fixed.

GitHub and create-a-markee factories were already correct.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- FACTORIES.GITHUB: 0xb1E2dC95b50b4Ee3b1BD4F4F87e6B07b41bE4e07 was wrong,
  corrected to 0xb1E2dC9582810124Fed3Cdb4B8Bb944A5495D85a (matches
  GitHub platform page and user-confirmed address)
- Fixed-price CSV rows: old addresses moved to v10_address column,
  current addresses.ts values added to v11_address column

Note: Superfluid factory row (line 4) was already correct in the CSV.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- addresses.ts: populate REVNET_V6_CONFIG (terminal 0x27da30..., project 152);
  correct OI factory labels (0x3f9f7C = v1.0, 0xb9922E = v1.1)
- abis.ts: expand LeaderboardV11ABI with full admin write surface
  (setRevNetTerminal, setRevNetProjectId, setPercentToBeneficiary,
  setRevNetEnabled, setPlatformFeeReceiver, setBeneficiaryAddress, setAdmin)
  and routing view getters
- scripts/enable-revnet.mjs: generates Safe Transaction Builder batch JSONs
  for all 20 v1.1 leaderboards — Coop multisig batch (4) and Paul's wallet
  batch (16 OI + GitHub). Run: node scripts/enable-revnet.mjs
- MIGRATION.md: fix factory version labels, fill in real terminal/projectId
  in checklist, mark completed Superfluid work, scope v1.0 exclusions

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
… enabled

BuyMessageModal and TopDawgModal now conditionally show a MARKEE token count
card when revNetEnabled is true on the leaderboard contract. Revenue split
updates from 100% to 62%/38% (beneficiary / Markee Cooperative) accordingly.
Token count uses the live phase schedule (50k/ETH through 2026-06-21).

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
The initial enable-revnet batch used the wrong JB terminal address.
The correct terminal for RevNet project 152 on Base is 0x2dB6d704...
(confirmed from a successful on-chain pay tx to the same project).

Coop multisig needs to run the fix-terminal-coop.json Safe batch to
correct the 4 already-enabled leaderboards. Paul's 16 leaderboards
have not yet been enabled so they are unaffected.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Multicall3 from EOA doesn't preserve msg.sender, so onlyAdmin calls
would revert. This script sends 64 sequential cast send transactions
(4 per leaderboard) directly from the EOA private key instead.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
ACCOUNT=revnet-admin is now preferred over raw PRIVATE_KEY.
Create keystore once with: cast wallet import revnet-admin --interactive

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Adds 3s sleep between cast send calls to avoid replacement-tx-underpriced
errors. Adds revNetEnabled check before each leaderboard so re-runs are
safe and idempotent.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
v1.2 fixes a governance hole where individual leaderboard admins could
redirect the 38% RevNet cut to any project. Terminal and project ID are
now stored on the factory (Coop-only setter) and read by all leaderboards
at pay-time — one tx updates every leaderboard simultaneously.

- New contracts: Leaderboard v1.2, LeaderboardFactory v1.2, Markee v1.2
- 3 factories deployed (OI, GitHub, Superfluid) with RevNet v6 baked in
- 21 leaderboards migrated, 107 Markees cloned, 4 handed to Coop multisig
- All frontend address references updated to v1.2

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
@vercel

vercel Bot commented Jul 8, 2026

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated (UTC)
markee Ready Ready Preview, Comment Jul 8, 2026 6:35pm

@Corantin Corantin changed the base branch from main to dev July 8, 2026 16:14
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants