docs(distribution): cite live GitHub Pages privacy URL for store submissions (unblocks Play/IzzyOnDroid)
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
16
HANDOFF.md
16
HANDOFF.md
@@ -69,15 +69,13 @@ Goal: bug-free E2E + published on F-Droid & Play + 1k downloads.
|
|||||||
commit, then `git tag v0.4.4 && git push origin main --tags`. The `v*` tag fires
|
commit, then `git tag v0.4.4 && git push origin main --tags`. The `v*` tag fires
|
||||||
`publish-fdroid.yml` and `publish-play-store.yml` automatically.
|
`publish-fdroid.yml` and `publish-play-store.yml` automatically.
|
||||||
|
|
||||||
1. **Publish privacy policy live (blocks Play production).** `https://opencode.vibebrowser.app/privacy`
|
1. **Privacy policy is live (Play-production blocker cleared).** Canonical privacy URL is
|
||||||
currently fails to resolve (curl exit 6 / host not found — not deployed). The Play
|
now `https://dzianisv.github.io/opencode-mobile/privacy/` — live & verified (HTTP 200) on
|
||||||
"App content" answers and the IzzyOnDroid request both cite this exact URL, so it
|
the gh-pages branch, serving `distribution/privacy-policy.html`. This GitHub Pages URL is
|
||||||
must serve `distribution/privacy-policy.html` at the path `/privacy`. Steps:
|
the canonical privacy URL cited across all store-submission docs (Play "App content"
|
||||||
(a) confirm/create DNS for `opencode.vibebrowser.app`; (b) host the file — easiest is
|
answers, IzzyOnDroid request). If the owner later deploys the branded
|
||||||
any static host (e.g. add a `privacy.html`/`/privacy` route on the existing
|
`opencode.vibebrowser.app/privacy`, it can replace the GitHub Pages URL — this change is
|
||||||
vibebrowser.app deployment, or a Vercel/Netlify/GitHub Pages site for this subdomain);
|
reversible. Source file: `distribution/privacy-policy.html` (markdown mirror:
|
||||||
(c) verify: `curl -sI https://opencode.vibebrowser.app/privacy` returns `200`.
|
|
||||||
Source file: `distribution/privacy-policy.html` (markdown source mirror:
|
|
||||||
`distribution/privacy-policy.md`).
|
`distribution/privacy-policy.md`).
|
||||||
|
|
||||||
2. **Google Play → production (biggest unlock, ~15 min).**
|
2. **Google Play → production (biggest unlock, ~15 min).**
|
||||||
|
|||||||
@@ -163,7 +163,7 @@ We welcome bug reports, feature requests, and pull requests. See [CONTRIBUTING.m
|
|||||||
|
|
||||||
OpenCode Mobile does not collect personal data. Optional Sentry crash reporting (opt-in, off by default) sends anonymised crash traces to Sentry. No analytics SDKs are bundled. Credentials are stored exclusively on-device in the OS keystore.
|
OpenCode Mobile does not collect personal data. Optional Sentry crash reporting (opt-in, off by default) sends anonymised crash traces to Sentry. No analytics SDKs are bundled. Credentials are stored exclusively on-device in the OS keystore.
|
||||||
|
|
||||||
Full privacy policy: [opencode.vibebrowser.app/privacy](https://opencode.vibebrowser.app/privacy)
|
Full privacy policy: [dzianisv.github.io/opencode-mobile/privacy](https://dzianisv.github.io/opencode-mobile/privacy/)
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
|
|||||||
@@ -16,7 +16,7 @@ App facts these answers derive from:
|
|||||||
---
|
---
|
||||||
|
|
||||||
## 1. Privacy policy
|
## 1. Privacy policy
|
||||||
- URL: `https://opencode.vibebrowser.app/privacy`
|
- URL: `https://dzianisv.github.io/opencode-mobile/privacy/`
|
||||||
|
|
||||||
## 2. Data safety
|
## 2. Data safety
|
||||||
**Does your app collect or share any required user data types?**
|
**Does your app collect or share any required user data types?**
|
||||||
|
|||||||
@@ -103,7 +103,7 @@ Alternative / supplemental terms to rotate in A/B: `code review`, `AI assistant`
|
|||||||
|---|---|
|
|---|---|
|
||||||
| Support URL | https://agentlabs.cc/opencode |
|
| Support URL | https://agentlabs.cc/opencode |
|
||||||
| Marketing URL | https://github.com/dzianisv/opencode-mobile |
|
| Marketing URL | https://github.com/dzianisv/opencode-mobile |
|
||||||
| Privacy Policy URL | https://opencode.vibebrowser.app/privacy |
|
| Privacy Policy URL | https://dzianisv.github.io/opencode-mobile/privacy/ |
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
@@ -339,7 +339,7 @@ To use: you need opencode running somewhere accessible (local Wi-Fi, Tailscale,
|
|||||||
- [ ] App icon 1024×1024 PNG (no alpha, no rounded corners)
|
- [ ] App icon 1024×1024 PNG (no alpha, no rounded corners)
|
||||||
- [ ] iPhone screenshots (6.7" minimum; 6.5" strongly recommended)
|
- [ ] iPhone screenshots (6.7" minimum; 6.5" strongly recommended)
|
||||||
- [ ] iPad screenshots (12.9" minimum)
|
- [ ] iPad screenshots (12.9" minimum)
|
||||||
- [ ] Privacy policy live at https://opencode.vibebrowser.app/privacy
|
- [ ] Privacy policy live at https://dzianisv.github.io/opencode-mobile/privacy/
|
||||||
- [ ] App Store Connect API key created (for CI — Key ID, Issuer ID, .p8 file)
|
- [ ] App Store Connect API key created (for CI — Key ID, Issuer ID, .p8 file)
|
||||||
- [ ] Apple Distribution certificate + provisioning profile (or use EAS managed signing)
|
- [ ] Apple Distribution certificate + provisioning profile (or use EAS managed signing)
|
||||||
- [ ] Export compliance answered (No to custom encryption)
|
- [ ] Export compliance answered (No to custom encryption)
|
||||||
|
|||||||
@@ -113,7 +113,7 @@ While waiting for Apple's verification call and approval:
|
|||||||
- [ ] Create app icon 1024×1024 PNG
|
- [ ] Create app icon 1024×1024 PNG
|
||||||
- [ ] Capture iPhone screenshots (use iOS Simulator in Xcode on any Mac)
|
- [ ] Capture iPhone screenshots (use iOS Simulator in Xcode on any Mac)
|
||||||
- [ ] Capture iPad screenshots
|
- [ ] Capture iPad screenshots
|
||||||
- [ ] Write/publish privacy policy at https://opencode.vibebrowser.app/privacy
|
- [ ] Write/publish privacy policy at https://dzianisv.github.io/opencode-mobile/privacy/
|
||||||
- [ ] Set up EAS account at https://expo.dev/ (free tier, log in with Expo account)
|
- [ ] Set up EAS account at https://expo.dev/ (free tier, log in with Expo account)
|
||||||
- [ ] Add iOS config patches to `app.json` (done in this PR)
|
- [ ] Add iOS config patches to `app.json` (done in this PR)
|
||||||
- [ ] Run `npx expo prebuild --platform ios` on a Mac to validate the Xcode project
|
- [ ] Run `npx expo prebuild --platform ios` on a Mac to validate the Xcode project
|
||||||
|
|||||||
@@ -107,4 +107,4 @@ We will notify the IzzyOnDroid team via this issue when that happens.
|
|||||||
Developer: VIBE TECHNOLOGIES, LLC
|
Developer: VIBE TECHNOLOGIES, LLC
|
||||||
Email: support@vibebrowser.app
|
Email: support@vibebrowser.app
|
||||||
Website: https://agentlabs.cc/opencode
|
Website: https://agentlabs.cc/opencode
|
||||||
Privacy policy: https://opencode.vibebrowser.app/privacy
|
Privacy policy: https://dzianisv.github.io/opencode-mobile/privacy/
|
||||||
|
|||||||
@@ -17,7 +17,7 @@ IzzyOnDroid is the fastest OSS distribution channel — typical inclusion is
|
|||||||
- [ ] APK is signed with `keystores/production-release.jks`
|
- [ ] APK is signed with `keystores/production-release.jks`
|
||||||
- [ ] SHA-256 fingerprint confirmed: see `distribution/SIGNING-KEY-FINGERPRINTS.md`
|
- [ ] SHA-256 fingerprint confirmed: see `distribution/SIGNING-KEY-FINGERPRINTS.md`
|
||||||
- [ ] Sentry opt-in gate is in production (avoids `Tracking` anti-feature escalation)
|
- [ ] Sentry opt-in gate is in production (avoids `Tracking` anti-feature escalation)
|
||||||
- [ ] Privacy policy is live at `https://opencode.vibebrowser.app/privacy`
|
- [ ] Privacy policy is live at `https://dzianisv.github.io/opencode-mobile/privacy/`
|
||||||
- [ ] `app.json` `version` and `android.versionCode` are set correctly in the tagged commit
|
- [ ] `app.json` `version` and `android.versionCode` are set correctly in the tagged commit
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|||||||
@@ -144,7 +144,7 @@ Issues: github.com/dzianisv/opencode-mobile/issues
|
|||||||
|
|
||||||
**Required.** Must be a public URL.
|
**Required.** Must be a public URL.
|
||||||
|
|
||||||
Suggested path: `https://opencode.vibebrowser.app/privacy`
|
Suggested path: `https://dzianisv.github.io/opencode-mobile/privacy/`
|
||||||
|
|
||||||
Privacy policy must cover:
|
Privacy policy must cover:
|
||||||
- What data is collected (Sentry crash diagnostics: device model, OS version, stack trace; no user content)
|
- What data is collected (Sentry crash diagnostics: device model, OS version, stack trace; no user content)
|
||||||
@@ -297,7 +297,7 @@ CI currently publishes to `internal` track. ✅
|
|||||||
- [ ] Adaptive icon (real PNG)
|
- [ ] Adaptive icon (real PNG)
|
||||||
- [ ] Feature graphic 1024×500
|
- [ ] Feature graphic 1024×500
|
||||||
- [ ] At least 2 phone screenshots
|
- [ ] At least 2 phone screenshots
|
||||||
- [ ] Privacy policy live at https://opencode.vibebrowser.app/privacy
|
- [ ] Privacy policy live at https://dzianisv.github.io/opencode-mobile/privacy/
|
||||||
- [ ] Decide pricing model
|
- [ ] Decide pricing model
|
||||||
- [ ] Run IARC content rating questionnaire (after app created in Play Console)
|
- [ ] Run IARC content rating questionnaire (after app created in Play Console)
|
||||||
- [ ] Complete Data safety form (after app created in Play Console)
|
- [ ] Complete Data safety form (after app created in Play Console)
|
||||||
|
|||||||
@@ -253,8 +253,8 @@
|
|||||||
If we make material changes to this policy, we will update the effective date at the top
|
If we make material changes to this policy, we will update the effective date at the top
|
||||||
of this page and, where feasible, notify users via an in-app notice. The latest version
|
of this page and, where feasible, notify users via an in-app notice. The latest version
|
||||||
is always available at:
|
is always available at:
|
||||||
<a href="https://opencode.vibebrowser.app/privacy">
|
<a href="https://dzianisv.github.io/opencode-mobile/privacy/">
|
||||||
vibebrowser.app/opencode-mobile/privacy
|
dzianisv.github.io/opencode-mobile/privacy
|
||||||
</a>
|
</a>
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
|
|||||||
@@ -106,7 +106,7 @@ All diagnostic data is transmitted over HTTPS (TLS 1.2+) to Sentry. We do not tr
|
|||||||
## 10. Changes to This Policy
|
## 10. Changes to This Policy
|
||||||
|
|
||||||
If we make material changes to this policy, we will update the effective date and, where feasible, notify users via an in-app notice. The latest version is always available at:
|
If we make material changes to this policy, we will update the effective date and, where feasible, notify users via an in-app notice. The latest version is always available at:
|
||||||
https://opencode.vibebrowser.app/privacy
|
https://dzianisv.github.io/opencode-mobile/privacy/
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
|
|||||||
@@ -42,7 +42,7 @@ Rejected alternatives:
|
|||||||
1. **Google Play identity verification** — upload governor ID (Dzianis Vashchuk). Unlocks: API access, Create app, AAB upload, CI publish.
|
1. **Google Play identity verification** — upload governor ID (Dzianis Vashchuk). Unlocks: API access, Create app, AAB upload, CI publish.
|
||||||
2. **Apple Developer Program enrollment** — $99/year, D-U-N-S 142059652 ready. iOS agent will produce runbook.
|
2. **Apple Developer Program enrollment** — $99/year, D-U-N-S 142059652 ready. iOS agent will produce runbook.
|
||||||
3. **App icon + adaptive icon + feature graphic** — current `assets/*.json` are placeholders. Need real PNGs before either Play or App Store publish.
|
3. **App icon + adaptive icon + feature graphic** — current `assets/*.json` are placeholders. Need real PNGs before either Play or App Store publish.
|
||||||
4. **Privacy policy URL** — must be live at https://opencode.vibebrowser.app/privacy before Play publish. Template in `play-listing.md`.
|
4. **Privacy policy URL** — live & verified at https://dzianisv.github.io/opencode-mobile/privacy/ (this GitHub Pages URL is the canonical privacy URL used for store submissions; if the owner later deploys the branded `opencode.vibebrowser.app/privacy`, it can replace it — reversible). Template in `play-listing.md`.
|
||||||
|
|
||||||
### Soft blockers (we can fix without user)
|
### Soft blockers (we can fix without user)
|
||||||
|
|
||||||
|
|||||||
@@ -81,7 +81,7 @@ Because the answer is "No", no ERN (Encryption Registration Number) is required
|
|||||||
| 4 | App icon — 1024×1024 PNG, opaque (no alpha) | ✅ Done | `assets/icon-appstore.png` (flattened from Android-produced `assets/icon.png`) |
|
| 4 | App icon — 1024×1024 PNG, opaque (no alpha) | ✅ Done | `assets/icon-appstore.png` (flattened from Android-produced `assets/icon.png`) |
|
||||||
| 5 | iPhone screenshots 6.7" (1290×2796) + 6.5" (1242×2688) | ✅ Done | `distribution/app-store-graphics/iphone-67/{01,02,03}.png` + `iphone-65/` — 3 mockup screens: connection, chat, diff |
|
| 5 | iPhone screenshots 6.7" (1290×2796) + 6.5" (1242×2688) | ✅ Done | `distribution/app-store-graphics/iphone-67/{01,02,03}.png` + `iphone-65/` — 3 mockup screens: connection, chat, diff |
|
||||||
| 6 | iPad screenshots 12.9" (2048×2732) | ✅ Done | `distribution/app-store-graphics/ipad-129/{01,02}.png` — 2 mockup screens |
|
| 6 | iPad screenshots 12.9" (2048×2732) | ✅ Done | `distribution/app-store-graphics/ipad-129/{01,02}.png` — 2 mockup screens |
|
||||||
| 7 | Privacy policy — live at https://opencode.vibebrowser.app/privacy | 🟡 partial | Content handled by Android agent (`distribution/privacy-policy.{md,html}`). iOS-specific ATT / nutrition label addendum written in `distribution/app-store-listing.md`. User must deploy to vibebrowser.app. |
|
| 7 | Privacy policy — live at https://dzianisv.github.io/opencode-mobile/privacy/ | ✅ done | Live & verified (HTTP 200) on gh-pages. Content handled by Android agent (`distribution/privacy-policy.{md,html}`). iOS-specific ATT / nutrition label addendum written in `distribution/app-store-listing.md`. |
|
||||||
| 8 | Privacy nutrition label (App Tracking + Data Collection) | ✅ Done | Updated in `distribution/app-store-listing.md` — ATT explicitly noted (not used), Sentry opt-in status documented |
|
| 8 | Privacy nutrition label (App Tracking + Data Collection) | ✅ Done | Updated in `distribution/app-store-listing.md` — ATT explicitly noted (not used), Sentry opt-in status documented |
|
||||||
| 9 | Export compliance | ✅ Done | `ITSAppUsesNonExemptEncryption: false` added to `app.json`. Answers + rationale in this doc (see Export Compliance section above) and `distribution/app-store-listing.md`. |
|
| 9 | Export compliance | ✅ Done | `ITSAppUsesNonExemptEncryption: false` added to `app.json`. Answers + rationale in this doc (see Export Compliance section above) and `distribution/app-store-listing.md`. |
|
||||||
| 10 | ATS justification in App Review notes | ✅ Done | Full justification text in `distribution/app-store-listing.md` under "App Review Notes — ATS Justification" |
|
| 10 | ATS justification in App Review notes | ✅ Done | Full justification text in `distribution/app-store-listing.md` under "App Review Notes — ATS Justification" |
|
||||||
|
|||||||
@@ -56,5 +56,5 @@ When the privacy policy changes, re-deploy the site to pick up the new version.
|
|||||||
## Verification command
|
## Verification command
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
curl -sI https://opencode.vibebrowser.app/privacy | head -3
|
curl -sI https://dzianisv.github.io/opencode-mobile/privacy/ | head -3
|
||||||
```
|
```
|
||||||
|
|||||||
@@ -64,7 +64,7 @@ For full company facts (D-U-N-S, address, governor, etc.) see `~/.agents/skills/
|
|||||||
| 3 | Adaptive icon — 432×432 foreground PNG | Agent | ✅ done — `assets/adaptive-icon.png` (432×432, transparent bg) |
|
| 3 | Adaptive icon — 432×432 foreground PNG | Agent | ✅ done — `assets/adaptive-icon.png` (432×432, transparent bg) |
|
||||||
| 4 | Feature graphic — 1024×500 PNG | Agent | ✅ done — `distribution/play-graphics/feature-graphic.png` |
|
| 4 | Feature graphic — 1024×500 PNG | Agent | ✅ done — `distribution/play-graphics/feature-graphic.png` |
|
||||||
| 5 | At least 2 phone screenshots (1080×1920 or similar) | Agent | ✅ done — `distribution/play-graphics/phone-{01,02,03}.png` (1080×2400 each; 3 screens: connection, chat, diff viewer) |
|
| 5 | At least 2 phone screenshots (1080×1920 or similar) | Agent | ✅ done — `distribution/play-graphics/phone-{01,02,03}.png` (1080×2400 each; 3 screens: connection, chat, diff viewer) |
|
||||||
| 6 | Privacy policy — live at https://opencode.vibebrowser.app/privacy | Agent | ✅ done — `distribution/privacy-policy.html` (deployed to opencode.vibebrowser.app/privacy), `distribution/privacy-policy.md` (source) |
|
| 6 | Privacy policy — live at https://dzianisv.github.io/opencode-mobile/privacy/ | Agent | ✅ done — live & verified (HTTP 200) on gh-pages; `distribution/privacy-policy.html` (source), `distribution/privacy-policy.md` (markdown mirror) |
|
||||||
| 7 | Data safety form answers (drafted in `distribution/play-listing.md`) | User (in Console after app created) | ✅ verified — no analytics/ad SDKs found; crash logs updated to "Optional (opt-in, default OFF)" per new consent gate |
|
| 7 | Data safety form answers (drafted in `distribution/play-listing.md`) | User (in Console after app created) | ✅ verified — no analytics/ad SDKs found; crash logs updated to "Optional (opt-in, default OFF)" per new consent gate |
|
||||||
| 8 | Content rating questionnaire (IARC, drafted) | User (in Console after app created) | ✅ verified — no violence/sexual/gambling/UGC; "interact with other users" = No (user talks to own AI agent) |
|
| 8 | Content rating questionnaire (IARC, drafted) | User (in Console after app created) | ✅ verified — no violence/sexual/gambling/UGC; "interact with other users" = No (user talks to own AI agent) |
|
||||||
| 9 | App access — reviewer instructions for self-hosted opencode (drafted) | User | ✅ verified — instructions accurate; `npm install -g opencode-ai && opencode serve` flow confirmed in `play-listing.md` |
|
| 9 | App access — reviewer instructions for self-hosted opencode (drafted) | User | ✅ verified — instructions accurate; `npm install -g opencode-ai && opencode serve` flow confirmed in `play-listing.md` |
|
||||||
|
|||||||
@@ -253,8 +253,8 @@
|
|||||||
If we make material changes to this policy, we will update the effective date at the top
|
If we make material changes to this policy, we will update the effective date at the top
|
||||||
of this page and, where feasible, notify users via an in-app notice. The latest version
|
of this page and, where feasible, notify users via an in-app notice. The latest version
|
||||||
is always available at:
|
is always available at:
|
||||||
<a href="https://opencode.vibebrowser.app/privacy">
|
<a href="https://dzianisv.github.io/opencode-mobile/privacy/">
|
||||||
vibebrowser.app/opencode-mobile/privacy
|
dzianisv.github.io/opencode-mobile/privacy
|
||||||
</a>
|
</a>
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user