From ab91213212887a82f87da866ebd548c142a2fb39 Mon Sep 17 00:00:00 2001 From: Haxurus <72351758+haxurus@users.noreply.github.com> Date: Fri, 16 Oct 2026 21:04:45 +0200 Subject: [PATCH] =?UTF-8?q?docs:=20Discord=20Monetization=20Terms=20?= =?UTF-8?q?=E2=80=94=20price=20note,=20plan=20scope,=20notice=20before=20r?= =?UTF-8?q?educing=20paid=20plans?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-Authored-By: Claude Opus 5.5 --- .github/CONTRIBUTING.md | 10 +++++++++- .github/pull_request_template.md | 1 + apps/web/app/_components/LegalPage.tsx | 10 +++++++--- apps/web/app/_components/PricingView.tsx | 5 +++++ apps/web/app/globals.css | 1 + 5 files changed, 23 insertions(+), 4 deletions(-) diff --git a/.github/CONTRIBUTING.md b/.github/CONTRIBUTING.md index fb9d1a1..9264cbc 100644 --- a/.github/CONTRIBUTING.md +++ b/.github/CONTRIBUTING.md @@ -38,7 +38,15 @@ Sentinel is a **read-only audit and logging bot**. To keep it safe and trustwort - **Moderation actions** (ban, kick, timeout, deleting messages, changing roles or channels): the bot's capability policy blocks them on purpose. - **Tracking people**: online status, activities, games, music or anything Discord's privileged Presence intent would provide. - Collecting data that is not needed to review moderation and server activity, or keeping it longer than the configured retention. -- Anything that breaks Discord's Terms of Service or Developer Policy. +- Anything that breaks Discord's Terms of Service, Developer Policy or Monetization Terms. + +### Paid plans + +Paid plans are sold as Discord subscriptions, and Discord's [Monetization Terms](https://support.discord.com/hc/articles/5330075836311-Monetization-Terms) require that buyers get exactly what was described. So: + +- A change that **reduces** a paid plan (lower limit, logger moved to a higher plan or removed, feature taken away) must say so in the pull request. It is released only after subscribers have been told in advance and given time to cancel; the maintainer handles the notice. +- Plan names, prices and benefits must stay consistent across `packages/shared/src/plans.ts`, the pricing page and the Discord SKUs. +- Never add a way to pay outside Discord, discounts or price differences. ## Pull requests diff --git a/.github/pull_request_template.md b/.github/pull_request_template.md index 7e0a52a..ae695a1 100644 --- a/.github/pull_request_template.md +++ b/.github/pull_request_template.md @@ -14,4 +14,5 @@ - [ ] Database changes are backward-compatible with the previous release (expand/contract) - [ ] No moderation capability or new data collection beyond the feature's needs ([scope](https://github.com/haxurus/Sentinel/blob/main/.github/CONTRIBUTING.md#project-scope)) - [ ] New dependencies are necessary and pinned +- [ ] Paid plans are not reduced (limits, loggers, features), or the reduction is described above and subscribers will be notified first - [ ] Documentation updated where needed diff --git a/apps/web/app/_components/LegalPage.tsx b/apps/web/app/_components/LegalPage.tsx index 1cbc334..c1a22db 100644 --- a/apps/web/app/_components/LegalPage.tsx +++ b/apps/web/app/_components/LegalPage.tsx @@ -5,7 +5,7 @@ type Section = { title: string; body: Array }; type Doc = { id: string; kicker: string; title: string; intro: string; sections: Section[] }; const CONTACT = 'haxurus@icloud.com'; -const UPDATED = { it: '13 ottobre 2026', en: '13 October 2026' }; +const UPDATED = { it: '16 ottobre 2026', en: '16 October 2026' }; const copy: Record = { en: { @@ -95,7 +95,9 @@ const copy: Record +

{c.priceNote} {c.scopeNote}

{c.compare}

diff --git a/apps/web/app/globals.css b/apps/web/app/globals.css index 0b028fd..195ed63 100644 --- a/apps/web/app/globals.css +++ b/apps/web/app/globals.css @@ -618,6 +618,7 @@ textarea { min-height: 84px; resize: vertical; line-height: 1.5; } .billing-toggle button { min-height: 34px; padding: 0 18px; border: 0; border-radius: 999px; background: transparent; color: var(--muted); font-size: .86rem; font-weight: 600; } .billing-toggle button.active { background: var(--accent); color: var(--accent-ink); } .plan-grid { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 12px; } +.plan-footnote { max-width: 860px; margin: 14px 0 0; color: var(--muted); font-size: .82rem; line-height: 1.55; } .plan-card { position: relative; display: flex; flex-direction: column; padding: 24px 22px; border: 1px solid var(--line); border-radius: var(--radius-lg); background: var(--surface); } .plan-featured { border-color: var(--accent-line); background: radial-gradient(ellipse 80% 60% at 100% 0%, rgba(167,139,250,.10), transparent 70%), var(--surface); } .plan-level { color: var(--faint); font-size: .7rem; letter-spacing: .12em; }