Files
opencode-mobile/docs/fdroid.md
Dennis V b8fb390f5c feat(release): production signing in build.yml + F-Droid metadata filled
- build.yml: use production keystore (KEYSTORE_BASE64) on tag pushes,
  fall back to debug key for PRs/branch builds — build.gradle already
  reads RELEASE_STORE_FILE env var so no Gradle changes needed
- distribution/fdroid-submission/metadata.yml: filled
  AllowedAPKSigningKeys with actual SHA-256 fingerprint, commit tag
  updated to v0.3.1, version bumped to 0.3.1
- app.json: bump version 0.2.3 → 0.3.1, versionCode 1 → 2
- Add eas.json + EAS README for iOS App Store builds
- Add fastlane/metadata/android for Play Store / F-Droid graphics
- Add distribution docs: applestore, fdroid, market, playstore,
  security, threat-model, opencode-site-deploy

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-26 01:26:35 +00:00

142 lines
5.9 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# F-Droid + IzzyOnDroid — opencode-mobile
Operational doc for distributing `ai.opencode.mobile` via F-Droid (mainline)
and IzzyOnDroid under VIBE TECHNOLOGIES, LLC.
This is the OSS-first distribution track, complementary to Google Play.
All channels share the same package id and signing key.
---
## Account state
Unlike Google Play, F-Droid and IzzyOnDroid require no developer account.
| Channel | Account needed | Status |
|---------|---------------|--------|
| F-Droid mainline | None — community-built; MR to fdroiddata | Submission packet ready; MR not yet filed |
| IzzyOnDroid | Codeberg account for filing issue | Submission packet ready; issue not yet filed |
---
## What's done (this session)
1. Fastlane metadata scaffold created: `fastlane/metadata/android/en-US/`
- `title.txt`, `short_description.txt`, `full_description.txt` — F-Droid-audience copy
- `changelogs/1.txt` — initial release notes for versionCode 1
- `images/icon.png`, `images/featureGraphic.png` — copied from play-graphics
- `images/phoneScreenshots/{01,02,03}.png` — copied from play-graphics
2. F-Droid mainline submission packet: `distribution/fdroid-submission/`
- `metadata.yml` — ready to PR into fdroiddata (placeholders for release tag + key fingerprint)
- `SUBMISSION-CHECKLIST.md` — full step-by-step MR filing guide
- `REPRODUCIBLE-BUILD-NOTES.md` — reproducibility audit (2 issues found, documented)
- `SIZE-OPTIMIZATION.md` — APK size analysis + ABI splits + FCM flavor doc
3. IzzyOnDroid submission packet: `distribution/izzyondroid-submission/`
- `INCLUSION-REQUEST.md` — ready-to-paste Codeberg issue body (1 placeholder)
- `SUBMISSION-CHECKLIST.md` — step-by-step filing guide
4. Signing key fingerprint documented: `distribution/SIGNING-KEY-FINGERPRINTS.md`
- SHA-256: `0C:25:9D:94:...:DF:6A:A0:99` (full value in file)
- Pasted into IzzyOnDroid request; F-Droid metadata has placeholder pending
lowercase-no-colons conversion and confirmation
5. Sentry opt-in gate already implemented (opt-in, default OFF) — `Tracking`
anti-feature is avoided.
6. `expo-notifications` audited — local-only usage confirmed; no FCM push tokens
retrieved. NonFreeNet anti-feature acknowledged; NonFreeDep not triggered.
---
## What's left to do
| # | Item | Blocking? | Owner |
|---|------|-----------|-------|
| 1 | Add `.kotlin/` to `android/.gitignore` + untrack log files | F-Droid mainline | Agent (trivial) |
| 2 | Attach signed universal APK to first GitHub release tag | Both channels | Agent / CI |
| 3 | File IzzyOnDroid inclusion issue on Codeberg | IzzyOnDroid | User or Agent |
| 4 | Update `metadata.yml` with actual release tag + key fingerprint | F-Droid mainline | Agent |
| 5 | File MR against fdroiddata | F-Droid mainline | User or Agent |
| 6 | Run `expo prebuild` twice, compare output (reproducibility check) | F-Droid mainline | Agent |
| 7 | Measure arm64-v8a APK size with bundletool | Nice-to-have | Agent |
Item 1 (kotlin log untrack) should be done before the F-Droid MR.
Items 3 and 5 should be done after the first Play Store release is live.
---
## Submission process
### IzzyOnDroid (fastest — 1–3 days)
1. Attach signed universal APK to a GitHub release tag.
2. File Codeberg issue using `distribution/izzyondroid-submission/INCLUSION-REQUEST.md`.
3. Full guide: `distribution/izzyondroid-submission/SUBMISSION-CHECKLIST.md`.
### F-Droid mainline (4–12 weeks)
1. Complete prerequisites (see `distribution/fdroid-submission/SUBMISSION-CHECKLIST.md`).
2. Fork fdroiddata on GitLab.
3. Create `metadata/ai.opencode.mobile.yml` from `distribution/fdroid-submission/metadata.yml`.
4. File MR. Respond to reviewer feedback.
5. Full guide: `distribution/fdroid-submission/SUBMISSION-CHECKLIST.md`.
---
## Timeline
| Milestone | When |
|-----------|------|
| F-Droid + IzzyOnDroid submission packets ready | 2026-05-24 (done) |
| First Google Play Internal release | After identity verification |
| IzzyOnDroid issue filed | After first signed APK on GitHub releases |
| IzzyOnDroid inclusion | 1–3 days after issue |
| F-Droid MR filed | After first Play release + reproducibility fixes |
| F-Droid mainline acceptance | 4–12 weeks after MR |
| IzzyOnDroid auto-delist | After F-Droid mainline acceptance |
---
## Files in this repo
```
fastlane/
└── metadata/android/en-US/ # F-Droid auto-pull metadata
├── title.txt
├── short_description.txt
├── full_description.txt
├── changelogs/1.txt
└── images/
├── icon.png
├── featureGraphic.png
└── phoneScreenshots/{01,02,03}.png
distribution/
├── SIGNING-KEY-FINGERPRINTS.md # SHA-256 key fingerprint reference
├── fdroid-submission/
│ ├── metadata.yml # fdroiddata MR content
│ ├── SUBMISSION-CHECKLIST.md # F-Droid MR step-by-step
│ ├── REPRODUCIBLE-BUILD-NOTES.md # Reproducibility audit
│ └── SIZE-OPTIMIZATION.md # APK size + ABI splits doc
└── izzyondroid-submission/
├── INCLUSION-REQUEST.md # Codeberg issue body
└── SUBMISSION-CHECKLIST.md # IzzyOnDroid step-by-step
```
---
## Reference
- F-Droid inclusion policy: https://f-droid.org/en/docs/Inclusion_Policy/
- F-Droid metadata format: https://f-droid.org/en/docs/Build_Metadata_Reference/
- F-Droid reproducible builds: https://f-droid.org/en/docs/Reproducible_Builds/
- fdroiddata (where MR goes): https://gitlab.com/fdroid/fdroiddata
- IzzyOnDroid policy: https://apt.izzysoft.de/fdroid/index/info
- IzzyOnDroid issues (where inclusion request goes): https://codeberg.org/IzzyOnDroid/repodata/issues
- App on IzzyOnDroid (after acceptance): https://apt.izzysoft.de/fdroid/index/apk/ai.opencode.mobile
- Signing key fingerprints: `distribution/SIGNING-KEY-FINGERPRINTS.md`
- Strategy + full channel overview: `distribution/strategy.md`
- Play Store operational doc: `docs/playstore.md`