The column is narrow so these buttons stack. Left-aligned pills of different
widths read as a ragged edge, and a label that wraps inside a 999px radius
becomes a tall oval, which is what "Buy more views" was doing.
They are now centred, the same width, and cornered at 10px, so each label sits
on one line. Scoped to this table: everything else keeps the pill. The phone
card shares a row rather than stacking, as it did before, so that layout is
left alone.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
I gave it the class "ghost", which on PolHunter is a button and here is the
giant faded wordmark in the footer. That class sets color:transparent, so the
label was not dark, it was invisible. It now uses a new "quiet" variant, grey
on a muted outline, which reads clearly and sits below the mint actions rather
than competing with them.
The campaign actions also had no spacing on desktop. The mobile layout already
gapped them; the wide one leaned on a plain space between tags, so they sat
flush against each other.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
The PolHunter launch card, the Five Dollar Friday card and the "you came from
PolHunter" card repeat on a timer, so anyone who has read one had no way to
clear it. Each now carries a small close control in its heading: the card
stays hidden for the rest of that browser session and comes back at the next
sign-in, so a message nobody acted on is never lost for good.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
/api/my/polhunter signs a member across to polhunter.com with a five-minute single-use HMAC
token (memberId, email, wallet, username); PolHunter has no sign-up and no mailer, this is the
only way in. A PolHunter entry in the dashboard nav. The PolHunter embed on the public ledger
with one slot beside the payout feed; CSP allows polhunter.com.
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Marty (2026-09-19): once a membership gets large, My line and the other lists scroll forever.
One helper, pageList(), pages what each pane already renders: rows past the current page are
hidden and a solid-mint control bar (row range, Previous/Next 25, page count) goes under the
list. Row markup and bindings are untouched, so it goes on every growing list at once: My
line per level (the Activity drawer pages with its row, and a chip drill-down opens on the
right page), the Overview roster, the Campaigns table and its credit ledger, each Pipeline
column, and the Messages thread list. Asset tags bumped.
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
- Spark: one-tap banner/text campaign templates aimed at the member's link (POST /api/my/toolkit/template); printable QR handout at /handout/<username>
- Circuit: videomaker.js renders every promo video/short with the member's end card + QR via ffmpeg (Dockerfile adds ffmpeg + ttf-dejavu), hosted in Spaces; split tester compares join angles
- Nexus: Leader Ops (three-level triage, stalled flags, one-click nudges), AI team broadcast kind + Send to my team, credit grants from the leader's earned pool, co-branded join page (sponsor bio for level-3 sponsors), member-funded partner code (promo_codes.funder; redemption charges the funder) + /partners?ref=<username>
- toolkit ladder all live; chatbot updated; my.js v20260914e, site.css v20260914c, join.js/partners.js v20260914a
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
- accounts.wall_offers (JSON, up to 2 offers: label, https link, banner) set from
Profile > Your wall; upload supported; locks show the buyer threshold.
- /api/wall assembles: position 1 = own line banner; positions 2-3 = own offer
when unlocked and set, else upline banners (only uplines with a live banner),
else house ads. Response carries unlocked + buyerCount; wall labels show
"this wall" / "their line" / "InstantAdPay".
- Chatbot canned answer + facts, follow-up email 7 mention the ladder.
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
- /api/my/line sums TierPaid events per buyer for the signed-in member; the
downline rows show "+X POL" (what that person has paid you so far).
- AppKit featuredWalletIds: MetaMask, Phantom, SafePal, Coinbase first; Trust
Wallet stays available under All wallets.
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
- Social posts for X / Facebook / LinkedIn / Telegram-WhatsApp with post and
share buttons; 5 SMS-sized Text-a-friend messages (Text it / WhatsApp /
Telegram / Copy); email swipes short, standard, long, follow-up.
- Banner kit adds 1080x1080, 1080x1920 and 1280x720 (tools/gen-social-banners.cjs)
with Download buttons.
- Printable half-sheet handouts at /flyers with the member's QR + invite link
(qrlib.js, two per letter page, cut line, print-one).
- Objection handling bank: truth + ready-to-send reply per objection.
- Invite-link strip, Branded Voice CTA, pill menu covers every kit; chatbot
canned answer + prompt facts updated. Angle links carry ?v= for the
upcoming hook pages.
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
- wallet.js: fetch correct EIP-1559 fees from the network (Amoy/Polygon Bor
enforce a ~25-30 gwei priority floor MetaMask's estimate misses) via new
/api/gas; hard chain-guard before signing so a tx never lands on the wrong
network; accept the wallet's usual networks in AppKit so its modal stops
looping and drive add+switch ourselves.
- chain.js: suggestedFees() from eth_maxPriorityFeePerGas + base fee.
- Dashboard: move the Site links (Ad packages / Live ledger / The contract)
out of the sidebar into a page footer; hide the sidebar scrollbar.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
- New 125x125 (square button) and 336x280 (large rectangle) promo banners;
rectangle branch scales relative so both rectangles look right.
- 160x600 / 120x600 skyscrapers now filled with feature bullets (instant
payouts, 7 ad formats, earn by viewing, free to join) + CTA.
- Promo tools lists the new sizes; previews cache-busted (?v=3).
- Back-office sidebar is scrollable (overflow-y:auto) so the Legal links at the
bottom are reachable.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
- Logo lockup (mint lightning/arrow icon + InstantAdPay wordmark) replaces the
text wordmark in the back-office sidebar and public nav; icon added as the
favicon on every page. Assets: /logo.png, /logo-icon.png.
- Downline level captions (LEVEL 1 / LEVEL 2 …) are now a bold mint pill instead
of faint grey — far more readable.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
- New 125x125 "square button" banner size; ad serve now filters by width/height,
and the sidebar slot serves a 125x125 banner (empty until such inventory exists).
- Shorts reel gets a "report this short" link (posts to /api/report-ad).
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
"Your line at a glance": YOU + three levels of member chips with connectors,
your qualified directs highlighted in gold, and "+ open" placeholders on levels
1-2 showing what's next. Loads from /api/my/line.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
- QR is mint-green (still high-contrast for reliable scanning).
- The wall shows the owner's achievement badge next to their avatar.
- Positions 2 & 3 fill with upline line-banners, then ADMIN ADS when there's no
upline (configurable via data/admin-wall-ads.json; sensible default) so the
wall is never sparse.
- "Join free through this wall" is disabled until the visitor has viewed every
ad on the wall, with a "X/Y viewed" prompt.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
- Video watch-to-earn: a member can no longer re-earn from the same video the
same day. New video_seen table (dual-mode); serveVideo excludes today's
already-watched videos; videowatch double-checks before crediting.
- Featured card: equal top/bottom margin (no longer touches the stat cards) and
a gold border on the card + the rotating link.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
- Featured card moved to the top of Overview, centered, max 760px; the rotating
link is capped to 728px and centered (banner-sized, not a huge block).
- Served banner creatives cap at min(100%,728px), centered — kills the oversized
sample banner; ad slots center their creative + label.
- Featured self-sell: shows "N of C slots open today" + "Feature your link →"
that jumps to Campaigns with Featured preselected.
- Campaign target/image/video URL fields get autocomplete=off and clear when the
Campaigns pane opens, so no residual (e.g. massifly) URL carries over.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Each row was an independent flex line, so variable-width emails threw the date
column out of alignment across rows. Now a CSS grid with a shared template keeps
the date and Message columns lined up; long names/emails truncate; responsive
stack on narrow screens.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
The bottom-right bubble is the site's AI support chat — only one belongs there.
Sponsor/downline messaging now lives in the lower sidebar under Team → Messages
(unread badge on the link), opening the same threads drawer. Removed the FAB.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>