diff --git a/src/index.html b/src/index.html index bd0648b..5539463 100644 --- a/src/index.html +++ b/src/index.html @@ -4363,6 +4363,10 @@

+ @@ -5643,7 +5647,8 @@ const ok = confirm( `Unlock "${row.title || '(untitled)'}" for ${min} sats?\n\n` + `• Creator (${shortPubkey(row.e.pubkey)}): ${creatorSats} sats\n` + - `• Artstr platform fee: ${platformSats} sats (${(PLATFORM_FEE_BPS / 100).toFixed(0)}%)` + `• Artstr platform fee: ${platformSats} sats (${(PLATFORM_FEE_BPS / 100).toFixed(0)}%)\n\n` + + `Soft-gate, not strong DRM — once unlocked you can save / export / share the design like any other Artstr file.` ); if (!ok) return; // Live status line; reuses the toast system for simplicity. @@ -17862,6 +17867,11 @@ toggle.checked = !!pub.zapGate; minInput.value = Math.max(10, Math.floor(Number(pub.zapMin) || 100)); details.style.display = toggle.checked ? '' : 'none'; + // Soft-gate ack always resets to unchecked on each modal open — we + // want the creator to acknowledge it deliberately every time, not + // accidentally inherit it from a previous publish. + const ack = $('publishConfirmSoftGateAck'); + if (ack) ack.checked = false; // Update split note + validate. const min = Math.max(10, Math.floor(Number(minInput.value) || 100)); const { creatorSats, platformSats } = platform.splitZapAmount(min); @@ -17963,6 +17973,15 @@ if (btn) { btn.disabled = false; btn.textContent = 'Publish'; } return; } + // PREMIUM_DESIGNS_FEATURE.md §9.1 — creator must acknowledge that + // this is a soft-gate, not strong DRM. The checkbox lives in the + // premium-details panel; we hard-block publish without it. + const ack = $('publishConfirmSoftGateAck'); + if (ack && !ack.checked) { + if (errEl) { errEl.textContent = 'Tick the soft-gate acknowledgement above before publishing a premium design.'; errEl.style.display = ''; } + if (btn) { btn.disabled = false; btn.textContent = 'Publish'; } + return; + } } try { await target.onConfirm();