Five Dollar Friday: +20% purchased-grade credits on any $5+ package bought on a Friday (Central), live wave on the landing strip and Overview card, Telegram every ten packs + Friday kickoff + midnight wrap-up, Thursday notice + email, Five Fridays badge, promo posts + swipe, chatbot; first Friday 2026-09-25
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
This commit is contained in:
+18
-1
@@ -73,7 +73,8 @@
|
||||
{ key: 'payouts', label: 'Spark', sub: 'payouts on', img: '/badges/badge-spark.jpg', ribbonY: 0.728 },
|
||||
{ key: 'firstBuyer', label: 'Surge', sub: 'first qualifying buyer', img: '/badges/badge-surge.jpg?v=2', ribbonY: 0.76 },
|
||||
{ key: 'level2', label: 'Circuit', sub: '2 qualifying buyers', img: '/badges/badge-circuit.jpg?v=2', ribbonY: 0.72 },
|
||||
{ key: 'level3', label: 'Nexus', sub: 'fully qualified', img: '/badges/badge-nexus.jpg?v=2', ribbonY: 0.73 }
|
||||
{ key: 'level3', label: 'Nexus', sub: 'fully qualified', img: '/badges/badge-nexus.jpg?v=2', ribbonY: 0.73 },
|
||||
{ key: 'fridays', label: 'Five Fridays', sub: 'five Five Dollar Fridays in a row', img: '/badges/badge-fridays.jpg', ribbonY: 0.719 }
|
||||
];
|
||||
let lastMilestones = [];
|
||||
function renderBadges(d) {
|
||||
@@ -1404,6 +1405,22 @@
|
||||
}));
|
||||
} catch (e) {}
|
||||
}
|
||||
// Five Dollar Friday card on the Overview: the live wave on Fridays, the date the rest of the week
|
||||
async function loadFridayCard() {
|
||||
const card = $('fdfCard'); if (!card) return;
|
||||
try {
|
||||
const f = await (await fetch('/api/friday')).json(); if (!f.on) { card.hidden = true; return; }
|
||||
card.hidden = false;
|
||||
if (f.live && f.today) card.innerHTML = '<div class="card-head"><h3>\u{1F4B5} It\u2019s Five Dollar Friday</h3><span class="sub">+' + f.pct + '% credits on any pack today</span></div>'
|
||||
+ '<p><b>' + f.today.packs + '</b> pack' + (f.today.packs === 1 ? '' : 's') + ' so far today from <b>' + f.today.buyers + '</b> buyer' + (f.today.buyers === 1 ? '' : 's') + ', <b>' + f.today.polPaid.toFixed(2) + ' POL</b> paid to members in the same transactions. Every $5+ package bought before midnight Central earns +' + f.pct + '% bonus credits the moment it settles. Your pack pays your sponsor line instantly; your line\u2019s packs pay you.</p>'
|
||||
+ '<button class="btn" type="button" id="fdfBuy">Buy my Friday pack</button> <a class="btn sec" href="/ledger" target="_blank" rel="noopener">Watch the wave</a>';
|
||||
else card.innerHTML = '<div class="card-head"><h3>\u{1F4B5} Five Dollar Friday</h3><span class="sub">every Friday</span></div>'
|
||||
+ '<p>Every Friday (Central time), any ad package from $5 up earns <b>+' + f.pct + '% bonus credits</b>, added the moment it settles. The whole network buys on the same day, so every line gets paid at once. Next one: <b>' + (f.nextLabel || 'soon') + '</b>.</p>'
|
||||
+ '<button class="btn sec" type="button" id="fdfBuy">See the packages</button>';
|
||||
const b = $('fdfBuy'); if (b) b.addEventListener('click', () => { const m = document.querySelector('.bo-menu [data-pane="buy"]'); if (m) m.click(); });
|
||||
} catch (e) {}
|
||||
}
|
||||
loadFridayCard(); setInterval(loadFridayCard, 120000);
|
||||
// launch-day surprise (Marty, 2026-09-20): PolHunter appears at siteConfig.launchAt, not a minute before.
|
||||
// The card and the menu entry flip on their own if the dashboard is already open.
|
||||
let phShown = false;
|
||||
|
||||
Reference in New Issue
Block a user