Skip to content

Automate production mobile EAS releases - #5609

Merged
juliusmarminge merged 5 commits into
mainfrom
automate-mobile-releases
Aug 10, 2026
Merged

Automate production mobile EAS releases#5609
juliusmarminge merged 5 commits into
mainfrom
automate-mobile-releases

Conversation

@juliusmarminge

@juliusmarminge juliusmarminge commented Aug 7, 2026

Copy link
Copy Markdown
Member

What Changed

  • Trigger the mobile EAS production workflow automatically for relevant changes merged into main.
  • Serialize production runs to preserve OTA release order.
  • Automatically create and submit iOS and Android store builds when the app version changes.
  • Publish OTA updates only when a finished production build matches the current native fingerprint.
  • Restore package versions from 0.0.32 to 0.0.31.

Why

This makes mobile production releases follow merges automatically while avoiding duplicate builds and incompatible OTA updates. Store builds are created when the app version changes, and JavaScript updates are published only when an installed native binary can apply them. Manual workflow dispatch remains available for retries and forced releases.

Checklist

  • This PR is small and focused
  • I explained what changed and why
  • I included before/after screenshots for any UI changes
  • I included a video for animation/interaction changes

Note

Medium Risk
Changes production release automation (store submits and OTA channel) on every qualifying merge; misconfigured version or fingerprint logic could skip OTAs or trigger duplicate builds, though serialization and gating reduce blast radius.

Overview
Production mobile releases now run automatically when relevant paths merge to main, while workflow_dispatch stays for manual build/OTA retries.

mobile-eas-production.yml adds path-filtered push triggers and a serialized concurrency group so OTAs stay ordered (bursts collapse to the latest commit). On push it compares app.config.ts version to the latest EAS production build per platform and starts auto-submit store builds when they differ (in-progress builds count, avoiding duplicates). It then fingerprint-gates production OTAs: updates publish only if a finished build matches the current native fingerprint; otherwise the job summary warns and skips.

A new mobile-fingerprint-check.yml runs on PRs, fingerprints merge-result vs base (with pnpm install on base for lockfile accuracy), writes an iOS/Android diff to the job summary, and syncs a 📱 Native Change label on in-repo PRs so native drift is visible before merge. The check is advisory and always passes.

Reviewed by Cursor Bugbot for commit 88c9273. Bugbot is set up for automated code reviews on this repo. Configure here.

Note

Automate production mobile EAS releases and fingerprint checks on push to main

  • On pushes to main touching mobile paths, mobile-eas-production.yml checks the current app version against the latest production build per platform and triggers a new store build + auto-submit if versions differ.
  • OTA updates are published to the production channel only when a finished production build with a matching native fingerprint exists; otherwise a warning is written to the job summary.
  • Adds mobile-fingerprint-check.yml, which computes and compares native fingerprints for iOS and Android on PRs, writes a diff summary, and adds/removes a 📱 Native Change label on same-repo PRs.
  • Manual workflow_dispatch triggers retain the existing build/submit and OTA publish steps unchanged.

Macroscope summarized 88c9273.

- Trigger production builds and fingerprint-gated OTA updates on relevant merges
- Serialize runs and retain workflow dispatch for manual overrides
@coderabbitai

coderabbitai Bot commented Aug 7, 2026

Copy link
Copy Markdown

Important

Review skipped

Auto reviews are disabled on this repository. Please check the settings in the CodeRabbit UI or the .coderabbit.yaml file in this repository. To trigger a single review, invoke the @coderabbitai review command.

⚙️ Run configuration

Configuration used: Repository UI

Review profile: CHILL

Plan: Pro Plus

Run ID: 37822400-7ede-496c-a8f9-738108203027

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review

Comment @coderabbitai help to get the list of available commands.

@github-actions github-actions Bot added vouch:trusted PR author is trusted by repo permissions or the VOUCHED list. size:M 30-99 changed lines (additions + deletions). labels Aug 7, 2026
Comment thread .github/workflows/mobile-eas-production.yml
@github-actions

github-actions Bot commented Aug 7, 2026

Copy link
Copy Markdown
Contributor

Thread transfer impact

✅ Thread transfer remains within every enforced ceiling.

Provider Metric Main baseline This PR Impact PR ceiling
Codex Total thread wire 11.3 KiB 11.3 KiB −22 B (−0.2%) 15.1 KiB
Codex Thread snapshot wire 5.5 KiB 5.5 KiB +7 B (+0.1%) 7.3 KiB
Codex Live turn WebSocket wire 5.9 KiB 5.9 KiB −29 B (−0.5%) 7.8 KiB
Codex Live turn WebSocket decoded 49.7 KiB 49.7 KiB 0 B (0.0%) 66.4 KiB
Codex Live turn messages 16 16 0 (0.0%) 21
Claude Total thread wire 11.3 KiB 11.3 KiB +28 B (+0.2%) 15.1 KiB
Claude Thread snapshot wire 5.5 KiB 5.5 KiB +14 B (+0.3%) 7.3 KiB
Claude Live turn WebSocket wire 5.8 KiB 5.9 KiB +14 B (+0.2%) 7.8 KiB
Claude Live turn WebSocket decoded 50.6 KiB 50.6 KiB 0 B (0.0%) 66.4 KiB
Claude Live turn messages 16 16 0 (0.0%) 21

Baseline: be1a836 · PR result: 88c9273 · Source CI: success

Scenario and decoded snapshot size

10 historical turns, 5 command tools per turn, 878.9 KiB retained MCP result per historical turn, and a 1.05 MiB retained result in the measured turn.

  • Codex decoded thread snapshot: 94.6 KiB
  • Claude decoded thread snapshot: 95.4 KiB

Updated in place by a trusted workflow. PR artifacts are strictly validated and never executed.

Comment thread .github/workflows/mobile-eas-production.yml Outdated
Comment thread .github/workflows/mobile-eas-production.yml
@macroscopeapp

macroscopeapp Bot commented Aug 7, 2026

Copy link
Copy Markdown
Contributor

Approvability

Verdict: Needs human review

This PR automates production mobile releases (store submissions and OTA updates) on every main merge. Production deployment automation of this scope warrants human review to verify the intended release workflow and safeguards.

You can customize Macroscope's approvability policy. Learn more.

- Add advisory fingerprint comparison for iOS and Android
- Label PRs that require a new native build before OTA updates
@github-actions github-actions Bot added size:L 100-499 changed lines (additions + deletions). and removed size:M 30-99 changed lines (additions + deletions). labels Aug 7, 2026
- Separate fingerprint comparison from PR label management
- Use GitHub API labeling for same-repository PRs while keeping fork checks advisory
Comment thread .github/workflows/mobile-fingerprint-check.yml
- Track asset and script changes in mobile release workflows
- Keep production builds attached to serialized runs
- Use EAS fingerprint commands and fingerprint-hash matching

@cursor cursor Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Cursor Bugbot has reviewed your changes using high effort and found 1 potential issue.

Fix All in Cursor

Bugbot Autofix is ON, but a cloud agent failed to start.

Reviewed by Cursor Bugbot for commit a9437f3. Configure here.

Comment thread .github/workflows/mobile-eas-production.yml Outdated
- Continue checking both platforms after a build failure
- Fail the workflow after recording the platform-specific error
@juliusmarminge
juliusmarminge merged commit 73b2e8f into main Aug 10, 2026
18 checks passed
@juliusmarminge
juliusmarminge deleted the automate-mobile-releases branch August 10, 2026 02:11
github-actions Bot added a commit to omarcresp/t3code-flake that referenced this pull request Aug 10, 2026
## What's Changed
* Move project settings to contextual project routes by @juliusmarminge in pingdotgg/t3code#5923
* Retain thread sidebar data when navigating to /settings so back navigation is instant by @juliusmarminge in pingdotgg/t3code#5930
* Automate production mobile EAS releases by @juliusmarminge in pingdotgg/t3code#5609
* Add settings and usage breadcrumbs by @juliusmarminge in pingdotgg/t3code#5929
* fix(web): correct model picker trigger padding by @Chrono-byte in pingdotgg/t3code#5935
* fix(web): show worktree icon in sidebar v2 by @tris203 in pingdotgg/t3code#5909
* fix(web): enable restore defaults after theme mix changes by @Lucenx9 in pingdotgg/t3code#5928
* fix(web): trait menu closes after you pick a level by @t3dotgg in pingdotgg/t3code#5879
* fix(web): align project name with headline by @carterwsmith in pingdotgg/t3code#5864
* fix(web): update pills use readable theme foregrounds by @chrisdeeming in pingdotgg/t3code#5938

## New Contributors
* @carterwsmith made their first contribution in pingdotgg/t3code#5864

**Full Changelog**: pingdotgg/t3code@v0.0.33-nightly.20260810.1054...v0.0.33-nightly.20260810.1055

Upstream release: https://github.com/pingdotgg/t3code/releases/tag/v0.0.33-nightly.20260810.1055
omegent-app Bot added a commit to patroza/t3code that referenced this pull request Aug 10, 2026
pingdotgg#5609 also added mobile-fingerprint-check.yml, which landed without a conflict
and so was never inspected. It runs on blacksmith-8vcpu-ubuntu-2404, which this
fork does not have, and it triggers on every pull request touching apps/mobile,
packages/client-runtime, packages/contracts, packages/shared, assets or
scripts. Its "Native fingerprint diff" check was already sitting queued on this
very PR and would never have reported — a permanently pending check, and a
blocked merge wherever branch protection waits on all of them.

Same fix as #386 for web-preview.yml: GitHub-hosted runners, which is what
every other fork workflow uses. There are now no Blacksmith references left in
.github/workflows.

Also drops the EllipsisIcon import the Sidebar conflict union left behind; the
project row's button is SettingsIcon after pingdotgg#5923.

Found by the grok-4.5 adversarial review.

Co-authored-by: Patrick Roza <42661+patroza@users.noreply.github.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

size:L 100-499 changed lines (additions + deletions). vouch:trusted PR author is trusted by repo permissions or the VOUCHED list.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant