Skip to content

epic: ship iOS build to TestFlight with CI #65

Description

@dzianisv

Outcome

Ship a production-ready iPhone/iPad build of OpenCode Mobile to TestFlight, with an iOS build gate on every pull request and a single, fail-fast release path.

Done means:

  • every PR produces a valid iOS JavaScript bundle and unsigned iOS Simulator build;
  • release automation builds once and submits the exact EAS build to TestFlight;
  • iOS permissions, icon, bundle identifier, metadata, and App Store assets are valid;
  • the first build is visible in App Store Connect/TestFlight.

Epic 1 — Native iOS readiness

  • Add the local-network privacy usage description required to reach LAN opencode servers.
  • Remove the alpha channel from the 1024×1024 App Store icon.
  • Verify Expo config/plugin resolution and generate the native iOS project cleanly.
  • Export the production JavaScript bundle for iOS.
  • Build the generated app for an iPhone Simulator without code signing.
  • Exercise connection, session list, chat, permissions, image picker, speech, biometrics, notifications, and keyboard behavior on iPhone.
  • Exercise the same critical path on iPad because supportsTablet is enabled.

Epic 2 — Pull-request CI

  • Add a dedicated iOS workflow for pull requests and main pushes.
  • Run dependency install, Expo config validation, iOS export, prebuild, CocoaPods install, and xcodebuild on macOS.
  • Add concurrency cancellation and artifact/log retention for failed native builds.
  • Keep the existing platform-neutral typecheck/tests as prerequisites.

Epic 3 — TestFlight release automation

  • Remove duplicate tag/release triggers so one release creates one iOS build.
  • Pin current EAS CLI and use deterministic dependency installation.
  • Fail fast instead of reporting success when Apple/EAS credentials are absent.
  • Validate App Store Connect and Apple Team identifiers before consuming an EAS build.
  • Parse and submit the exact EAS build ID; do not use an ambiguous “latest” build.
  • Add concurrency protection and persist the EAS build metadata as a workflow artifact.
  • Add the production EAS/App Store Connect credentials after Apple enrollment.
  • Run the workflow and confirm the build appears in TestFlight.

Epic 4 — Store and launch readiness

  • Replace stale ai.opencode.mobile references with cc.agentlabs.opencode in iOS launch docs.
  • Normalize the Apple account email to support@agentlabs.cc.
  • Correct stale claims about icon/screenshots and record the current asset inventory.
  • Validate App Store listing, privacy disclosures, export compliance, review notes, and review-server instructions.
  • Create the App Store Connect app record and fill ascAppId/appleTeamId.
  • Create the internal TestFlight group and add testers.
  • Update README/download surfaces only after the TestFlight install path is real.

Current blockers

Remaining launch gates require Apple/EAS access on macOS: verify enrollment and agreements, create the App Store Connect record, replace ascAppId/appleTeamId, add EXPO_TOKEN and App Store Connect API credentials, bootstrap EAS signing, capture fresh iPhone/iPad screenshots, and configure TestFlight testers. The release workflow now fails fast when required configuration is absent.

Website rollout

  • Publish accurate iOS implementation progress without claiming availability.
  • Verify the live iOS and privacy pages on GitHub Pages.
  • Run the mandatory Android CUA regression on the final PR commit.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions