No description
  • TypeScript 85.9%
  • Kotlin 6.9%
  • Swift 6.3%
  • Shell 0.4%
  • JavaScript 0.4%
  • Other 0.1%
Find a file
Repository files (latest commit first)
Filename Latest commit message Latest commit date
Kyle Boyer 20777804cd Roll Android CI uploads out to internal testers, with release notes
Adds workflow_dispatch inputs to turn off ios-submit's automatic internal
rollout (IOS_SUBMIT_PLAY_AUTO_ROLLOUT=false) and to pass Google Play
release notes (--release-notes).

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-27 13:39:50 -05:00
.forgejo Roll Android CI uploads out to internal testers, with release notes 2026-10-27 13:39:50 -05:00
assets Add app source, nearby module, EAS config and store docs 2026-10-27 09:45:59 -05:00
modules Upgrade to Expo SDK 58 and React Native 0.88 2026-10-27 10:02:36 -05:00
plugins Upgrade to Expo SDK 58 and React Native 0.88 2026-10-27 10:02:36 -05:00
screenshots Add app source, nearby module, EAS config and store docs 2026-10-27 09:45:59 -05:00
src Upgrade to Expo SDK 58 and React Native 0.88 2026-10-27 10:02:36 -05:00
.gitignore Initial commit 2026-04-11 13:52:24 -05:00
app.json Upgrade to Expo SDK 58 and React Native 0.88 2026-10-27 10:02:36 -05:00
App.tsx Upgrade to Expo SDK 58 and React Native 0.88 2026-10-27 10:02:36 -05:00
babel.config.js Add app source, nearby module, EAS config and store docs 2026-10-27 09:45:59 -05:00
build.sh Add app source, nearby module, EAS config and store docs 2026-10-27 09:45:59 -05:00
eas.json Add app source, nearby module, EAS config and store docs 2026-10-27 09:45:59 -05:00
index.ts Upgrade to Expo SDK 58 and React Native 0.88 2026-10-27 10:02:36 -05:00
ios-submit.config.json Run iOS and Android release jobs in parallel on separate checkouts 2026-10-27 12:15:21 -05:00
original-icon.png Add app source, nearby module, EAS config and store docs 2026-10-27 09:45:59 -05:00
package-lock.json Upgrade to Expo SDK 58 and React Native 0.88 2026-10-27 10:02:36 -05:00
package.json Upgrade to Expo SDK 58 and React Native 0.88 2026-10-27 10:02:36 -05:00
PRIVACY_POLICY.md Add app source, nearby module, EAS config and store docs 2026-10-27 09:45:59 -05:00
SUPPORT.md Add app source, nearby module, EAS config and store docs 2026-10-27 09:45:59 -05:00
tsconfig.json Initial commit 2026-04-11 13:52:24 -05:00

CI

workflows/release.yml builds and uploads Leftover with ios-submit on the Mac runner (kyles-mac-mini, label macos-arm64). Run it from the Actions tab (choose platform, whether to upload, whether to roll Android out, and optional release notes) or push a v* tag matching app.json's version.

Android uploads to the internal track roll out to internal testers automatically, replacing the previous internal release. Untick Roll Android out to internal testers to leave a draft for Play Console instead (IOS_SUBMIT_PLAY_AUTO_ROLLOUT=false). Older drafts that ios-submit uploaded are replaced; a draft made in Play Console still stops the upload.

Where settings come from

Kind Location
Public app settings ios-submit.config.json (committed)
Machine paths and toolchains /opt/homebrew/etc/forgejo-runner/.env on the runner (IOS_SUBMIT_*, JAVA_HOME, ANDROID_HOME)
Account-wide credentials Forgejo secrets/variables on the leftover org
App-specific credentials Forgejo secrets/variables on the leftover/mobile repo

Org leftover

Name Type Contents
ASC_KEY_ID secret App Store Connect API key ID
ASC_ISSUER_ID variable App Store Connect issuer ID
ASC_TEAM_ID variable Apple team ID
ASC_KEY_P8 secret App Store Connect API private key (.p8 text)
PLAY_SERVICE_ACCOUNT_JSON secret Google Play service account key (JSON text)

Repo leftover/mobile

Name Type Contents
IOS_DIST_P12_BASE64 secret Apple distribution certificate + private key (.p12, base64)
IOS_DIST_P12_PASSWORD secret Password for the .p12
IOS_PROFILE_BASE64 secret App Store provisioning profile (base64)
ANDROID_KEY_ALIAS variable Upload key alias
ANDROID_KEYSTORE_BASE64 secret Upload keystore (base64)
ANDROID_KEYSTORE_PASSWORD secret Keystore password
ANDROID_KEY_PASSWORD secret Upload key password

Each job checks out the run's commit with actions/checkout into its own runner workspace, so parallel iOS and Android jobs never share a checkout. Checkouts don't need registration in Local Build Desk. The CLI uses --settings-from to inherit the desktop project, then applies the committed ios-submit.config.json and runner IOS_SUBMIT_* environment overrides. There are no direct SQLite edits, process polling loops, or cross-platform doctor workarounds. Set the runner’s capacity to at least 2 for concurrent dispatch; Local Build Desk defaults to one native job per platform.

Stored credentials remain the default for this Mac’s packaged app. For a vault-free run, populate the credentials above and set repository variable CI_EPHEMERAL_CREDENTIALS=true. The workflow maps these to the CLI’s IOS_SUBMIT_* variables. Profiles are fetched/created using the supplied Apple API key and existing P12; existing certificates are preserved. The key ID belongs in a secret (move it from the old variable if necessary). No credentials were exported or uploaded by this configuration change. The optional IOS_PROFILE_BASE64 can be used in a credential config for offline signing; the current workflow obtains the profile through Apple.

Build numbers are shared with desktop builds. A failed/cancelled pre-upload job releases its lease; upload commits the number, including uncertain outcomes. Successful build-only artifacts retain their number until uploaded. Never edit desk.sqlite to synchronize project settings or counters.