fix(compliance): disclose email collection in Play Data Safety + align privacy docs (#146)
* fix(compliance): disclose email collection in Play Data Safety + align privacy docs (closes #143) Google Play rejected cc.agentlabs.opencode (2026-07-22) because the Data Safety declaration did not disclose collection of Email Address. Root cause: the optional "OpenCode Connect" waitlist card on the Connect screen (app/connection/add.tsx -> src/lib/waitlist.ts) collects an email and forwards it to Brevo (email marketing/CRM) via the beta-signup backend. Audited all other PII surfaces and confirmed no other undisclosed collection: Chatwoot support reports stay anonymous (no email/name), Sentry strips URLs/tokens and sends no default PII, and PostHog analytics uses only a random anonymous ID with coarse event properties. Updates: - distribution/play-listing.md: Data Safety table now declares Personal info / Email address (collected, shared with Brevo, optional, purpose account management); embedded privacy-policy draft and app description updated to match. - distribution/privacy-policy.md/.html + docs/privacy/index.html: new section 3c discloses the waitlist email collection, third-party services list adds Brevo, retention/rights sections and the Apple Privacy Nutrition Label table updated accordingly. - docs/playstore.md: checklist entry documents the rejection and points to the fix. - PUBLISHING.md: adds exact Play Console resubmission steps (Data types -> Personal info -> Email address -> collected/shared/purpose) plus a note on the earlier unrelated "Missing sign-in details" App access blocker in case it resurfaces. No app code changed; npm test (209 pass) and tsc --noEmit are clean. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> * fix(ci): run required checks on docs-only PRs (unblock branch protection) ios-ci.yml (which emits the required 'Typecheck and unit tests' check) had paths-ignore for docs/**, docs-site/**, distribution/**, **/*.md. A required status check that is path-filtered never runs on docs-only PRs, so those PRs sit permanently in mergeStateStatus=BLOCKED (missing required check). Remove the paths-ignore so required checks always run. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> --------- Co-authored-by: test <test@test.local> Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
@@ -79,7 +79,7 @@ Then open the app, tap Connect, paste your server URL, and you're in. Your AI co
|
||||
OpenCode Mobile is MIT licensed. Source code, issue tracker, and community at github.com/dzianisv/opencode-mobile. Contributions welcome.
|
||||
|
||||
<b>PRIVACY</b>
|
||||
OpenCode Mobile does not collect your code, prompts, or AI responses. All traffic goes directly from the app to YOUR opencode server — never through our infrastructure. With your opt-in consent we use Sentry for crash diagnostics and PostHog for anonymous usage analytics (no PII, no message content, off by default). Diagnostic reports you share are also delivered to our support inbox.
|
||||
OpenCode Mobile does not collect your code, prompts, or AI responses. All traffic goes directly from the app to YOUR opencode server — never through our infrastructure. With your opt-in consent we use Sentry for crash diagnostics and PostHog for anonymous usage analytics (no PII, no message content, off by default). Diagnostic reports you share are also delivered to our support inbox. If you choose to join the optional OpenCode Connect waitlist, we collect the email address you enter to notify you at launch.
|
||||
|
||||
Support: support@agentlabs.cc
|
||||
Issues: github.com/dzianisv/opencode-mobile/issues
|
||||
@@ -168,10 +168,10 @@ Issues: github.com/dzianisv/opencode-mobile/issues
|
||||
Suggested path: `https://dzianisv.github.io/opencode-mobile/privacy/`
|
||||
|
||||
Privacy policy must cover:
|
||||
- What data is collected (Sentry crash diagnostics: device model, OS version, stack trace; PostHog usage analytics: activation-funnel events with coarse properties; Chatwoot shared support reports: scrubbed diagnostic reports sent only when the user taps "Share Report"; no user content in any of them)
|
||||
- How data is used (debugging crashes; measuring whether new users successfully connect/activate; responding to user-initiated support reports)
|
||||
- Third-party SDKs (Sentry — https://sentry.io/privacy/; PostHog — https://posthog.com/privacy) and our own self-hosted Chatwoot support inbox (support.agentlabs.cc — not a third-party vendor)
|
||||
- Data retention (Sentry default 90 days; PostHog standard retention; Chatwoot support conversations retained until resolved, then periodically purged)
|
||||
- What data is collected (Sentry crash diagnostics: device model, OS version, stack trace; PostHog usage analytics: activation-funnel events with coarse properties; Chatwoot shared support reports: scrubbed diagnostic reports sent only when the user taps "Share Report"; **email address: only if the user opts into the optional "OpenCode Connect" waitlist on the Connect screen** — no other user content in any of them)
|
||||
- How data is used (debugging crashes; measuring whether new users successfully connect/activate; responding to user-initiated support reports; **notifying waitlist signups when the hosted service launches**)
|
||||
- Third-party SDKs (Sentry — https://sentry.io/privacy/; PostHog — https://posthog.com/privacy; **Brevo — https://www.brevo.com/legal/privacypolicy/, used only for the optional waitlist**) and our own self-hosted Chatwoot support inbox (support.agentlabs.cc — not a third-party vendor)
|
||||
- Data retention (Sentry default 90 days; PostHog standard retention; Chatwoot support conversations retained until resolved, then periodically purged; **waitlist emails retained in Brevo until the user unsubscribes or requests deletion**)
|
||||
- User rights (delete request via email, contact us)
|
||||
- Contact: support@agentlabs.cc
|
||||
|
||||
@@ -205,24 +205,37 @@ Via our own Chatwoot support inbox (support.agentlabs.cc), only when you tap
|
||||
- A random per-install identifier links follow-up reports into the same
|
||||
support conversation; not linked to your name, email, or account
|
||||
|
||||
Separately, and independent of the consent toggle above, if you choose to
|
||||
join the optional "OpenCode Connect" waitlist on the Connect screen:
|
||||
- We collect the email address you type into that field
|
||||
- We send it to Brevo, a third-party email marketing/CRM platform, to add
|
||||
you to the waitlist and notify you when the hosted service launches
|
||||
- This is entirely optional — nothing is collected unless you open the
|
||||
waitlist card and submit an email
|
||||
|
||||
Data is sent to Sentry (sentry.io, ~90 days retention), PostHog
|
||||
(eu.i.posthog.com, standard retention), and our Chatwoot instance
|
||||
(eu.i.posthog.com, standard retention), Brevo (waitlist emails, retained
|
||||
until you unsubscribe or request deletion), and our Chatwoot instance
|
||||
(support.agentlabs.cc, retained until the conversation is resolved and
|
||||
periodically purged thereafter).
|
||||
|
||||
Third-party services:
|
||||
- Sentry — crash reporting. https://sentry.io/privacy/
|
||||
- PostHog — usage analytics. https://posthog.com/privacy
|
||||
- Brevo — waitlist email management (only if you join the waitlist).
|
||||
https://www.brevo.com/legal/privacypolicy/
|
||||
|
||||
Self-hosted infrastructure:
|
||||
- Chatwoot support inbox (support.agentlabs.cc) — we operate this
|
||||
ourselves; it is not a third-party vendor.
|
||||
|
||||
Data sharing: none beyond Sentry, PostHog, and our own Chatwoot support inbox.
|
||||
Data sharing: Sentry, PostHog, Brevo (waitlist only), and our own Chatwoot
|
||||
support inbox.
|
||||
|
||||
User rights:
|
||||
- Email support@agentlabs.cc to request deletion of crash records, analytics
|
||||
records, or shared support-report conversations associated with your device.
|
||||
records, waitlist email records, or shared support-report conversations
|
||||
associated with your device.
|
||||
|
||||
Contact: support@agentlabs.cc
|
||||
```
|
||||
@@ -236,7 +249,7 @@ Google requires this before publishing. Answers for OpenCode Mobile current stat
|
||||
| Question | Answer |
|
||||
|---|---|
|
||||
| Does your app collect or share any of the required user data types? | Yes |
|
||||
| Is all of the user data collected by your app encrypted in transit? | Yes (HTTPS to Sentry, PostHog, and our Chatwoot support inbox) |
|
||||
| Is all of the user data collected by your app encrypted in transit? | Yes (HTTPS to Sentry, PostHog, Brevo, and our Chatwoot support inbox) |
|
||||
| Do you provide a way for users to request that their data is deleted? | Yes — via support@agentlabs.cc |
|
||||
|
||||
### Data types collected
|
||||
@@ -247,7 +260,7 @@ Google requires this before publishing. Answers for OpenCode Mobile current stat
|
||||
| App interactions (App activity) | Yes | Yes (PostHog) | **Yes (opt-in, default OFF, same toggle)** | Analytics (activation funnel: app opened, connection attempted/succeeded/failed, message sent, response received) | Yes |
|
||||
| Device or other IDs | Yes | Yes (Sentry/PostHog anonymous IDs) | **Yes (opt-in, default OFF)** | Diagnostics, analytics — random app-generated IDs, not linked to identity | Yes |
|
||||
| User-submitted diagnostic reports (Diagnostics) | Yes | Yes (delivered to our own self-hosted Chatwoot support inbox) | **Yes (opt-in, default OFF, same toggle; also requires the user to manually tap "Share Report")** | Customer support — troubleshooting a connection failure or crash the user chose to report; server address always redacted first | Yes |
|
||||
| Personal info (name, email, etc.) | No | – | – | – | – |
|
||||
| Personal info — Email address | **Yes** | **Yes (Brevo, third-party email marketing/CRM platform)** | **Yes — entirely optional; only collected if the user opens the "OpenCode Connect" waitlist card on the Connect screen and submits an email. Independent of the Sentry/PostHog consent toggle.** | **Account management (waitlist signup for the not-yet-launched "OpenCode Connect" hosted service) / App functionality** | Yes |
|
||||
| Financial info | No | – | – | – | – |
|
||||
| Health / fitness | No | – | – | – | – |
|
||||
| Messages | No | – | – | – | – |
|
||||
|
||||
Reference in New Issue
Block a user