Skip to content

fix(mobile): block production targets in native dev clients - #142

Merged
realhasanshoaib merged 3 commits into
masterfrom
codex/murmur-dev-client-target-20261029
Oct 29, 2026
Merged

realhasanshoaib merged 3 commits into
masterfrom
codex/murmur-dev-client-target-20261029

Conversation

@realhasanshoaib

@realhasanshoaib realhasanshoaib commented Oct 29, 2026 •

Copy link
Copy Markdown
Contributor

Native Expo development clients now reject production API targets, including production OTA bundles with no installed channel. Production installations keep their explicit production target, and development clients retain valid nonproduction and local loopback targets. Fixes #141. Fixes #140.

The native launcher identifies development clients independently of JavaScript mode. The same target validation runs when building the app, resolving its API URL, and preparing an OTA publication. Missing or mismatched release targets fail instead of selecting production. No remote channel mapping, existing published bundle, dependency or native source is changed.

Proof

  • Real product on the Mac mini: the unsigned iOS simulator build succeeds. After local ad-hoc simulator signing to supply Keychain entitlements, the app launches and renders onboarding with the explicit preview target and no startup error. This is a normal debug-app smoke test, not proof of the Expo launcher guard on a device.
  • Mac mini: all 22 native/config integration tests, all eight OTA-tooling tests and the mobile typecheck pass. The integration tests exercise the native module registry through the actual configuration and target resolver.
  • Regression control: all eight production target combinations reject on this head and resolve to production when the native guard is removed. Existing tests cover null channels, both JavaScript modes, valid nonproduction updates, production installations and loopback restrictions.
  • OTA inspection: tooling/scripts/update-mobile.mjs:13-21 requires an explicit matching channel; apps/mobile/workerTarget.js:35-36 rejects production in native development clients before API requests. There is no automatic production fallback in either path.
  • Not checked: Hasan's physical device, a native Expo launcher loading a real remote OTA, or existing published bundles. No OTA update or app-store build was published. Expo's native launcher can manually open compatible updates; this JavaScript guard protects API targeting, not the launcher's download policy (follow-up #144).

Undo by reverting the squash commit; no remote state or stored data changed.

Created with gpt-6.1-sol in Codex through T3 Code.

@chatgpt-codex-connector

chatgpt-codex-connector Bot commented Oct 29, 2026 •

Copy link
Copy Markdown

Codex Review Summary

This comment shows the latest Codex review activity on this pull request.

Review Status Commit Review trigger
📝 Code Review ✅ Completed 2026-10-29T12:43:01.653691Z 85ba4d4 PR opened
ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review" or "@codex security review".

Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings.

@realhasanshoaib realhasanshoaib added risk:high High risk: Hasan reads the diff and runs the change before it merges. size:M 30-99 changed lines, not counting tests, lockfiles or generated files. labels Oct 29, 2026
Base automatically changed from codex/murmur-release-runbook-20261029 to master October 29, 2026 12:53
@realhasanshoaib
realhasanshoaib merged commit cff8a23 into master Oct 29, 2026
11 checks passed
@realhasanshoaib
realhasanshoaib deleted the codex/murmur-dev-client-target-20261029 branch October 29, 2026 13:54
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

risk:high High risk: Hasan reads the diff and runs the change before it merges. size:M 30-99 changed lines, not counting tests, lockfiles or generated files.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

fix(mobile): block production targets in null-channel development clients fix(dev): accept documented localhost target without an environment label

1 participant