Changelog
Major moves only. Small design tweaks stay in git.
Creator tools — Edit page + Royalty earnings widget
- Royalty earnings widget added to the wallet tray, right below Sales earnings. Creators see every TransferPolicy<T> their wallet controls + a one-tap "Withdraw all" that routes accumulated SUI royalties back to the connected wallet.
- "Edit page" chip resurfaced in the collection hero, next to the ← All collections back chip. Visible only to creators — the same wallets that hold a Publisher cap OR a TransferPolicyCap for the collection.
- Sales earnings widget renamed from "Kiosk earnings" — same widget, plainer label.
Ownership fix + marketplace reliability foundation
- NFT ownership is now read from who actually holds the kiosk’s cap, not the kiosk’s opt-in `owner` field. NFTs whose caps were transferred without `set_owner` (common for community-handoff kiosks) finally show the correct owner everywhere — detail tray, profile, collection grids.
- The Owned + Listed filter on collection pages now catches items listed via direct kiosk listings too, not just Drip-marketplace listings. Sellers see their full active set.
- Self-healing reconciliation: Drip’s listings index now reconciles against the chain every 30 minutes. Stale entries (left behind when listings were cleared outside Drip’s UI) get pruned automatically.
- SSR safety net: whale-wallet profile loads no longer push past Safari’s abort window — the cap walk is capped at 1.5s and the cache populates in the background for the next visit.
Bundle creator paused for upgrades
- The bundle creation flow is temporarily paused while we stabilize the listing experience underneath it. The card on /create and the "Create a bundle" CTA on each collection’s Bundles tab now show a "Paused for upgrades" notice.
- Existing bundles stay live, tradable, and bid-able — the pause only affects creating new ones.
- Re-enables when the marketplace + listing path is locked in.
Detail tray polish + inline price composers
- Make Offer and Relist replace their old popup dialog with an inline price composer that opens in the tray itself — fewer modals, more consistent with the rest of the app.
- Owner row on the detail tray resolves more reliably for kiosk-held NFTs (uses the listing record as a fast-path when the connected wallet is the seller).
- Owner-side actions (Send, List, Delist, Relist) paint instantly when opening from a context that knows you own the item, instead of waiting for the on-chain resolve.
Home redesign + marketplace UX
- Home reorganized: the bundle hero + grid get parked while bundles are revamped, replaced by a two-column New Users + Leaderboard layout.
- Featured Collections grid widened to 5 across with a crown on the top spot.
- NFT detail tray gets a dual Buy/Bid action row with an inline bid composer — no dialog interrupt, mobile pinned-bottom.
- SUI/USD price chip pinned in the header so prices everywhere have a live exchange reference.
- Tokens surface in global search alongside collections and SuiNS handles.
NFT collections index — every registered collection
- /nfts now lists every collection in the Drip registry, not just the top-trending slice — long-tail entries surface alongside the marquee names.
- Each row carries a 7-day floor-price sparkline, USD market cap, and historical USD volume (sum of per-sale dollar values, not current-rate × cumulative SUI).
- Lifetime $ traded across the visible set pinned next to the page header — a single vanity number for total marketplace activity.
- Admin-curated cover images and verified badges now respected across the table.
Three-mode trading widget on token pages
- /tokens/[coinType] gets a new widget supporting Instant swap, Limit order, and DCA modes — each in Drip’s native styling.
- Price chart redesigned with gradient fill, cursor-driven price readout on hover, and timeframe pills moved below the chart for clearer hierarchy.
- Token list + tile readers move to a snapshot-first pipeline — faster page loads, less flicker on cold paint.
Image recovery + CDN reliability
- Admin tool for overriding broken NFT images — upload a replacement when the upstream host is dead.
- CDN image worker now fans out across Walrus + multiple IPFS gateways before giving up.
- Background cron retries previously-dead images so they self-heal as upstream hosts recover.
Profile + collection page speedups
- Profile pages now hit a stale-while-revalidate snapshot — warm cold-loads land in well under a second on most wallets.
- A background cron keeps the snapshot fresh; transaction events bust and re-warm it in real time.
- Owner-tray buttons (Send, List, Delist) paint with the page instead of after a delay.
- Rarity rank chips get tier-aware coloring; centralized rarity tokens for consistency across surfaces.
Independence from TradePort for rarity + listings
- Rarity ranks now computed from our own collection manifests — no TradePort calls in the per-NFT render path.
- Collection pages no longer wait on TradePort to render listings; everything flows through our manifest pipeline.
- /tools/migrate launched — wizard for bulk-relisting your collection from TradePort to Drip in one flow.
Drip Arcade + send-flow upgrades
- /games page launched — 16 curated Sui games + leaderboard hooks.
- Click any trait pill inside the NFT detail tray to filter the collection by that value.
- Send flow supports locked NFTs (via TransferPolicy self-purchase) and mixed batches of direct-owned + kiosk-held items.
- Security baseline shipped: CSP, security headers, secret-scanning pre-commit hook, weekly dependency updates.
Global chat + Rewards v1 + page-speed rewrite
- Global chat tray opens from the header — auth-gated read and write, polling backend.
- Rewards system live: XP from $ volume, level pills, badges, daily streak tracking, referral links with /r/<name> claim UI.
- Every transaction surface fires a UI event on confirm — buys, listings, offers, accepts, bids all reflect across pages without a refresh.
- Streaming SSR across home, collection, and profile pages — first paint arrives well before data does, cutting perceived load time.
Header pill + search expansion
- Header rebuilt with a PFP+name pill on the right; wallet tray now opens with a View Profile button.
- Site-wide search covers every collection in the registry (previously capped at the top-200 trending slice).
- First-time profile visits auto-open the edit drawer; the welcome interstitial is retired.
- CDN image warmer moves to hourly shards with rotating cursors — big collections always make progress per tick.
Auctions v1 + Marketplace + Bids on mainnet
- English auction contract live — reserve price, anti-snipe extension, Place Bid button on every collection and profile.
- Drip-native marketplace + bids modules promoted to mainnet after testnet hardening.
- Per-collection active-auctions view + per-wallet pending-bids view sourced from on-chain event readers.
Drip-native marketplace UI
- List / Delist / Relist actions on profile NFTs, plus Place Bid + Offers on NFTs and collections.
- Collection page reshaped into a 6-tab shelf: NFTs · Offers · Bundles · Activity · Holders · About.
- Profile page expanded to 7 tabs: NFTs · Coins · Feed · Offers · Bids · Favs · Hidden.
- Multi-select tooling on collection and profile grids — Hide/Unhide, batch actions wiring.
- Activity feed filterable by Sales / Listings / Bids / Transfers.
Collection page polish
- Persistent left-side filter rail on desktop (max 360px); a Filters drawer on mobile.
- NFT detail tray capped at 600px so the page stays visible behind it.
- Friendly-slug routing — every verified collection gets a clean `/<slug>` URL.
NFT-only collections table + token detail overhaul
- /collectibles (now /nfts) launched — NFT-only filter that drops DeFi + LP shapes, three-state density toggle, mobile-first redesign.
- /tokens index revived with Noodles-backed rows: market cap, transactions, liquidity, sparkline, Buy button.
- Token detail page rebuilt for token-native data — chart-first on mobile with swap below; full layout on desktop.
- NFT tray surfaces on-chain metadata: description, project URL, traits, creator.
- Admin Users tab with Verify / Ban / Delete actions; daily metrics snapshotter feeding the Admin Overview charts.
URL restructure + speed pass
- Permanent URLs for every collection and profile via friendly slugs.
- Collection detail rewired through BlockVision with cursor pagination — handles 50K+ item collections without choking.
- TradePort listings overlay surfaced through the new Buy tab on collection pages.
- Image proxy with Walrus aggregator fallback unblocks NFTs whose upstream host is rate-limited or offline.
Profile redesign + image recovery
- Profile NFT grid rebuilt: real collection names, full wallet on first paint, grouped + value-sorted with a Holding/Listed split.
- Kiosk Manager shipped — read + write actions for kiosk-held NFTs.
- Per-package image rescue with IPFS gateway fallback for collections whose original CDN is dead.
- Profile banner + avatar upload via Vercel Blob; edit drawer slides out from the side.
Bundle contracts v3 — royalties enforced
- New coordinator lists each NFT via per-item PurchaseCaps, so creator royalty bps are paid out to every collection in a mixed bundle on settle.
- Bundle price is split evenly across items at list time; the module asserts divisibility to keep per-item math exact.
- All live listings (Pawtato Land, Doonies, Prime Machin + Rootlets) relisted on v3; the v2 kill-switch retired the old bundles in place.
Sign in with Sui
- Right-side auth tray replaces the default wallet modal — Slush pinned on top, other Sui wallets auto-detected.
- Wallet-only sign in: a free personal-message signature (no gas, no approval) mints a 30-day httpOnly JWT session.
- Only /create is gated for now; browsing, collection pages, and token pages stay fully public.
Trending lists are live
- Homepage now ranks the top 18 NFT collections in real time via TradePort — order mirrors tradeport.xyz for the 24h window.
- Top 15 trending tokens sourced from Noodles' internal trending score (volume + price action + tx count).
- Sui Puppets is force-verified on our end until TradePort flips the flag.
Rebrand to beta.drip.market
- Canonical domain moved from bundles.drip.market to beta.drip.market across every page.
- New site-wide share card + homepage meta: "Drip Market. Trade anything on Sui Network."
- Global header trimmed to just the wordmark (Browse/Collections return when their pages are ready).
Homepage redesign
- Pawtato Land added as the featured hero banner, with the full bundle grid below it.
- Filters simplified to Collection + Mixed — a single switch for the two bundle types we ship today.
- Header goes flat at rest and blurs on scroll; mobile hero padding + stat bar tightened.
Token swap pages
- Dedicated /tokens/[coinType] pages with an Aftermath-powered swap box; modal retired.
- Swap routing via GeckoTerminal, Birdeye fallback, unrouted-pair logging for debugging.
- OpenSea-style trending tokens table with real images, live prices, and 24h change.
Collections index
- /collections route launched with a 3-column trending grid, timeframe toggle, and % change pills.
- Shared image resolver handles walrus://, ipfs://, and data: schemes through reliable gateways.
- Multi-bundle trait-floor snapshots added — bundles can now reference discovered floor values per trait.
Bundle creator shipped
- In-app flow for packaging multiple NFTs into a single listing — pick items, set a price, publish atomically.
- Supports mixed-collection bundles end-to-end, including royalty preservation per collection.
Bundle contracts v2
- Rewrote the on-chain bundle module for atomic multi-NFT purchases; cleaner capability model, lower gas per item.
- Validated on Sui testnet across single-collection and mixed-collection bundles ahead of the frontend integration.
- v1 listings migrated; v2 is the format all new bundles ship on.