diff --git a/PRIVACY.md b/PRIVACY.md index cfed3b5e56..cc4dafdf8d 100644 --- a/PRIVACY.md +++ b/PRIVACY.md @@ -33,9 +33,57 @@ The information you share is publicly visible to anyone reading from relays that Information shared on Nostr should be assumed permanent for privacy purposes. There is no way to guarantee deleting or editing any content once posted. -## Child safety standards +## Child Safety Standards -Amethyst does not knowingly collect information from children. The app has no age verification because it collects no personal information from anyone. The application is 17+. We rely on Google Play's age verification to make sure the user downloading the app is an adult. Since we do not control which relays the user connects to, there is no content moderation beyond the standard block post, block account, and report post and/or account that will hide the content from the user. +Amethyst, published on Google Play by Vitor Pamplona, is committed to protecting children from sexual abuse and exploitation. These standards apply to the Amethyst app for Android. + +### How Amethyst Works (and Why That Matters Here) + +Amethyst is a decentralized Nostr client. **The app itself does not host, store, or moderate any user-generated content.** All content is hosted by independent third-party servers called **relays** that the user freely chooses to connect to. Amethyst is a viewer and a publisher; it has no central database, no upload servers, and no ability to delete content from the network. Content moderation, takedowns, and legal reporting are the responsibility of the **relay operators** who actually host the content. + +What Amethyst provides — and what these Standards cover — is (1) a clear prohibition of CSAE, (2) in-app tools that let users report content, hide content, and disconnect from abusive relays, and (3) a contact point for escalation. + +### Prohibition of Child Sexual Abuse and Exploitation (CSAE) + +Amethyst strictly prohibits the use of the app to create, upload, share, solicit, or distribute child sexual abuse and exploitation (CSAE) material, including child sexual abuse material (CSAM), in any form, or to groom, exploit, endanger, or otherwise harm minors. Users who use Amethyst for these purposes are in violation of these Standards and of the laws of essentially every jurisdiction. + +### In-App User Feedback and Reporting Mechanism + +Amethyst provides in-app mechanisms for users to flag, hide, and disconnect from harmful content: + +- **Report Post** — use the dropdown menu on any note to report it as illegal content, nudity, impersonation, spam, profanity, or other violations. The report is published as a signed Nostr report event so that relay operators and other clients can act on it. +- **Report Account** — open a user's profile and use the report action to flag the account, with the same publication behavior. +- **Block Post / Block Account** — hide a note or a user locally on your device. +- **Block Relay (NIP-51 Blocked Relay List)** — if a particular relay is hosting CSAE/CSAM or refuses to act on reports, add it to your Blocked Relay List so Amethyst will no longer fetch from or publish to it. This is the strongest tool the app provides: it cuts your client off from servers that won't moderate. +- **Mute Words and Hashtags** — filter out unwanted content from your feeds. + +### Addressing CSAM + +Because Amethyst does not host content, CSAM cannot be removed by Amethyst — it can only be removed by the relay operator who is actually hosting it, and reported to authorities by that operator under the laws that apply to them (in the United States, 18 U.S.C. §2258A makes hosting providers — not viewer applications — the entities required to report to the National Center for Missing & Exploited Children). + +If you become aware of CSAM accessible via Amethyst, please: + +1. **Report the content in-app** (select "Illegal Content") so the report propagates to relays and other clients, and +2. **Block the relay** that is hosting the content using the in-app Blocked Relay List, so your client disconnects from it, and +3. **Report the relay and the material directly to the authorities** who have jurisdiction over the hosting provider — for content reachable from the United States that is the **National Center for Missing & Exploited Children (NCMEC) CyberTipline** at https://report.cybertip.org/. For other jurisdictions see INHOPE members at https://www.inhope.org/. +4. **Optionally email the contact below** with the relay URL and event ID. We cannot remove the content from the relay, but we can amplify the report to other relay operators we know, and where appropriate we will recommend that the offending relay be removed from any default relay list shipped with Amethyst. + +### Compliance with Child Safety Laws + +Amethyst is built and distributed to comply with applicable child safety laws and regulations, including Google Play's Child Safety Standards policy. Where Amethyst itself is subject to a legal obligation (for example, as a distributor on Google Play), we will cooperate with lawful requests from child-safety authorities. Obligations that attach to the **hosting** of content (such as 18 U.S.C. §2258A NCMEC reporting in the U.S.) apply to the relay operators, not to the viewer application. + +### Child Safety Point of Contact + +Questions, reports of relays hosting CSAE/CSAM, or requests related to child safety on Amethyst should be sent to: + +- **Name:** Vitor Pamplona (developer, Amethyst for Android) +- **Email:** amethyst@vitorpamplona.com +- **What we can do:** acknowledge the report, forward it to relay operators we are in contact with, and consider removing the offending relay from any default/suggested relay list shipped with Amethyst. We cannot delete content from third-party relays — that is the relay operator's responsibility. +- **What you should also do:** report directly to NCMEC (https://report.cybertip.org/) or your local INHOPE hotline, who can compel the actual hosting provider to act. + +### Age Rating + +Amethyst is rated 17+. The app does not knowingly collect information from children and has no account-creation flow that targets minors. We rely on Google Play's age-gating to restrict downloads to users 17+. ## Terms of Use diff --git a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/settings/AllSettingsScreen.kt b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/settings/AllSettingsScreen.kt index 4988276dde..ba17fa04d9 100644 --- a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/settings/AllSettingsScreen.kt +++ b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/settings/AllSettingsScreen.kt @@ -42,6 +42,7 @@ import androidx.compose.runtime.rememberCoroutineScope import androidx.compose.runtime.setValue import androidx.compose.ui.Modifier import androidx.compose.ui.platform.LocalContext +import androidx.compose.ui.platform.LocalUriHandler import androidx.compose.ui.text.style.TextAlign import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.dp @@ -77,6 +78,7 @@ fun AllSettingsScreen( nav: INav, ) { val context = LocalContext.current + val uriHandler = LocalUriHandler.current val scope = rememberCoroutineScope() var showResetMarmotDialog by remember { mutableStateOf(false) } var isResettingMarmot by remember { mutableStateOf(false) } @@ -261,6 +263,32 @@ fun AllSettingsScreen( ) } + SettingsSection(R.string.about_legal) { + SettingsItem( + title = R.string.privacy_policy, + icon = MaterialSymbols.Lock, + onClick = { + runCatching { + uriHandler.openUri( + "https://github.com/vitorpamplona/amethyst/blob/main/PRIVACY.md", + ) + } + }, + ) + SettingsDivider() + SettingsItem( + title = R.string.child_safety_standards, + icon = MaterialSymbols.Shield, + onClick = { + runCatching { + uriHandler.openUri( + "https://github.com/vitorpamplona/amethyst/blob/main/PRIVACY.md#child-safety-standards", + ) + } + }, + ) + } + SettingsSection(R.string.danger_zone, isDanger = true) { if (hasPrivateKey) { SettingsItem( diff --git a/amethyst/src/main/res/values/strings.xml b/amethyst/src/main/res/values/strings.xml index 827d73674a..e9897200d3 100644 --- a/amethyst/src/main/res/values/strings.xml +++ b/amethyst/src/main/res/values/strings.xml @@ -1318,6 +1318,8 @@ Posting policy Privacy Policy Terms & Conditions + Child Safety Standards + About & Legal N/A Errors and Notices from this Relay Relay Monitor Reports