diff --git a/carry.js b/carry.js
index d40021f..7e38a63 100644
--- a/carry.js
+++ b/carry.js
@@ -43,7 +43,8 @@ function signer() {
// ---- notices: email + on-site inbox, sent as the company account ----
async function tell(email, subject, text) {
- try { if (X.mailer && X.mailer.hasKey()) X.mailer.send(email, subject, text + '\n\nLinkSpin').catch(() => {}); } catch (e) {}
+ const emailOk = !(X.siteConfig && String(X.siteConfig().carryNotices || '1') === '0'); // test area: 0 = on-site notices only
+ try { if (emailOk && X.mailer && X.mailer.hasKey()) X.mailer.send(email, subject, text + '\n\nLinkSpin').catch(() => {}); } catch (e) {}
try {
const html = '
' + String(text).replace(/&/g, '&').replace(/$1').split('\n\n').join('
').replace(/\n/g, '
') + '
';
if (X.messages) await X.messages.deliver(1, X.adminEmail || 'house@linkspin.co', [email], subject, html);
diff --git a/server.js b/server.js
index c65b8f8..f9c894b 100644
--- a/server.js
+++ b/server.js
@@ -433,7 +433,8 @@ function siteConfig() {
telegramAdminChatId: '', // private chat for admin alerts (sign-up guard bursts); falls back to ADMIN_EMAIL
launchAt: '', // public launch moment, ISO 8601 with offset (e.g. 2026-09-18T19:00:00-05:00): countdown on /launch + dashboard mark
aiCreditsPerGen: 10, aiFreeSurge: 20, aiFreeCircuit: 60, aiFreeNexus: 150, // AI Copy Engine: free generations per month by badge, then credits per generation
- carryClaimDays: '3', // sponsor with no wallet: days to link one before a downline seat walks up (LinkSpin)
+ carryClaimDays: '3',
+ carryNotices: '1', // 0 = carry-over notices stay on-site (test area), 1 = email too // sponsor with no wallet: days to link one before a downline seat walks up (LinkSpin)
linkDomains: '', // comma list of short link domains this server answers for (each gets a real mini-site + /r/ redirects)
snapshotEnabled: '1', snapshotHourUtc: '14', snapshotTargets: 'feed,echo', // daily growth snapshot: 14 UTC = 9 AM Central; feed = proof channel, echo = shared payments topic
pipelineMode: 'off', // Pipeline board: off = 'coming soon' card, preview = only the admin account sees the live board, on = everyone (Marty, 2026-09-15)