Training: feature 'polhunter' entries appear at the launch moment; launch card links the feeder video
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
This commit is contained in:
+2
-1
@@ -1415,7 +1415,8 @@
|
|||||||
const card = $('phLaunch'); if (!card || phShown) return; phShown = true; card.hidden = false;
|
const card = $('phLaunch'); if (!card || phShown) return; phShown = true; card.hidden = false;
|
||||||
card.innerHTML = '<div class="card-head"><h3>\u{1F3AF} New today: PolHunter</h3><span class="sub">Launch-day surprise</span></div>'
|
card.innerHTML = '<div class="card-head"><h3>\u{1F3AF} New today: PolHunter</h3><span class="sub">Launch-day surprise</span></div>'
|
||||||
+ '<p>Missions across our sites. Visit the site, find your personal code on the page, type it in, and a random drip of POL lands in the wallet on this account, on chain, with a link to prove it. Three missions a day, a leaderboard with weekly POL prizes, and badge cards you can share. Your PolHunter share link puts sign-ups on your InstantAdPay line.</p>'
|
+ '<p>Missions across our sites. Visit the site, find your personal code on the page, type it in, and a random drip of POL lands in the wallet on this account, on chain, with a link to prove it. Three missions a day, a leaderboard with weekly POL prizes, and badge cards you can share. Your PolHunter share link puts sign-ups on your InstantAdPay line.</p>'
|
||||||
+ '<a class="btn" href="/api/my/polhunter">Open my PolHunter board</a> <a class="btn sec" href="https://polhunter.com/" target="_blank" rel="noopener">Watch the 30-second teaser</a>';
|
+ '<a class="btn" href="/api/my/polhunter">Open my PolHunter board</a> <button class="btn sec" type="button" id="phTrain">Watch: how it feeds your line (70 s)</button> <a class="btn sec" href="https://polhunter.com/" target="_blank" rel="noopener">The teaser</a>';
|
||||||
|
const tb = $('phTrain'); if (tb) tb.addEventListener('click', () => { const m = document.querySelector('.bo-menu [data-pane="training"]'); if (m) m.click(); });
|
||||||
} catch (e) {}
|
} catch (e) {}
|
||||||
}
|
}
|
||||||
launchReveal(); setInterval(launchReveal, 30000);
|
launchReveal(); setInterval(launchReveal, 30000);
|
||||||
|
|||||||
+1
-1
@@ -1040,7 +1040,7 @@
|
|||||||
<script src="/assets/common.js?v=20260916a"></script>
|
<script src="/assets/common.js?v=20260916a"></script>
|
||||||
<script src="/assets/wallet.js?v=20260911a"></script>
|
<script src="/assets/wallet.js?v=20260911a"></script>
|
||||||
<script src="/assets/promo.js?v=20260911a"></script>
|
<script src="/assets/promo.js?v=20260911a"></script>
|
||||||
<script src="/assets/my.js?v=20260921b"></script>
|
<script src="/assets/my.js?v=20260922b"></script>
|
||||||
<script src="/assets/chat.js?v=20260907l"></script>
|
<script src="/assets/chat.js?v=20260907l"></script>
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
|
|||||||
@@ -2256,7 +2256,8 @@ const server = http.createServer(async (req, res) => {
|
|||||||
let items = [];
|
let items = [];
|
||||||
try { const j = JSON.parse(fs.readFileSync(path.join(DATA_DIR, 'training.json'), 'utf8')); if (Array.isArray(j)) items = j; } catch (e) {}
|
try { const j = JSON.parse(fs.readFileSync(path.join(DATA_DIR, 'training.json'), 'utf8')); if (Array.isArray(j)) items = j; } catch (e) {}
|
||||||
// a card with feature:'pipeline' waits for the switch, so the video can be ready before the tab opens (Marty, 2026-09-15)
|
// a card with feature:'pipeline' waits for the switch, so the video can be ready before the tab opens (Marty, 2026-09-15)
|
||||||
const scT = siteConfig(); items = items.filter(it => !it.feature || (it.feature === 'pipeline' && pipeline.visible(scT.pipelineMode, s.email, ADMIN_EMAIL)));
|
const scT = siteConfig(); const launched = scT.launchAt && Date.now() >= new Date(scT.launchAt).getTime(); // feature:'polhunter' waits for the launch moment (Marty, 2026-09-20)
|
||||||
|
items = items.filter(it => !it.feature || (it.feature === 'pipeline' && pipeline.visible(scT.pipelineMode, s.email, ADMIN_EMAIL)) || (it.feature === 'polhunter' && launched));
|
||||||
if (!items.length) items = [{ title: 'Getting started with InstantAdPay',
|
if (!items.length) items = [{ title: 'Getting started with InstantAdPay',
|
||||||
desc: 'How the platform works, how every payout splits on-chain to real wallets, and how to build your line.',
|
desc: 'How the platform works, how every payout splits on-chain to real wallets, and how to build your line.',
|
||||||
docUrl: 'https://instantadpay.com/' }];
|
docUrl: 'https://instantadpay.com/' }];
|
||||||
|
|||||||
Reference in New Issue
Block a user