-
Notifications
You must be signed in to change notification settings - Fork 2.7k
Fix mobile legend anchor under automatic iOS insets #3684
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: main
Are you sure you want to change the base?
Changes from all commits
aadff31
1c4b21c
60867bd
e5ccf96
9bcaa88
df70e60
1b94454
810cf3f
60c77a7
139a337
ab86724
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,110 @@ | ||
| name: Mobile EAS Production | ||
|
|
||
| # Production builds and OTA updates run from CI (Linux) — never from a laptop. | ||
| # Under the fingerprint runtime-version policy the fingerprint must be computed | ||
| # in the same OS/pnpm as the EAS build; a macOS `eas build` computes a different | ||
| # fingerprint (platform-specific deps + pnpm version) and errors. On this Linux | ||
| # runner, with corepack pinning pnpm 10.24 in eas.json, local == build. | ||
| on: | ||
| workflow_dispatch: | ||
| inputs: | ||
| mode: | ||
| description: "build (+ auto-submit to TestFlight) or update (OTA)" | ||
| required: true | ||
| type: choice | ||
| default: build | ||
| options: | ||
| - build | ||
| - update | ||
| platform: | ||
| description: "Target platform" | ||
| required: true | ||
| type: choice | ||
| default: ios | ||
| options: | ||
| - ios | ||
| - android | ||
| - all | ||
| message: | ||
| description: "OTA update message (mode=update only)" | ||
| required: false | ||
| type: string | ||
|
|
||
| jobs: | ||
| production: | ||
| name: EAS Production ${{ inputs.mode }} | ||
| runs-on: blacksmith-8vcpu-ubuntu-2404 | ||
| permissions: | ||
| contents: read | ||
| env: | ||
| APP_VARIANT: production | ||
| NODE_OPTIONS: --max-old-space-size=8192 | ||
| steps: | ||
| - id: expo-token | ||
| name: Check for EXPO_TOKEN | ||
| env: | ||
| EXPO_TOKEN: ${{ secrets.EXPO_TOKEN }} | ||
| run: | | ||
| if [ -n "$EXPO_TOKEN" ]; then | ||
| echo "present=true" >> "$GITHUB_OUTPUT" | ||
| else | ||
| echo "present=false" >> "$GITHUB_OUTPUT" | ||
| echo "EXPO_TOKEN is not available; skipping EAS production job." | ||
| fi | ||
|
|
||
| - name: Checkout | ||
| if: steps.expo-token.outputs.present == 'true' | ||
| uses: actions/checkout@v6 | ||
| with: | ||
| fetch-depth: 0 | ||
|
|
||
| - name: Setup Vite+ | ||
| if: steps.expo-token.outputs.present == 'true' | ||
| uses: voidzero-dev/setup-vp@v1 | ||
| with: | ||
| node-version-file: package.json | ||
| cache: true | ||
| run-install: true | ||
|
|
||
| - name: Expose pnpm | ||
| if: steps.expo-token.outputs.present == 'true' | ||
| run: | | ||
| pnpm_version="$(node --print "require('./package.json').packageManager.split('@').pop()")" | ||
| vp_pnpm_bin="$HOME/.vite-plus/package_manager/pnpm/$pnpm_version/pnpm/bin" | ||
| echo "$vp_pnpm_bin" >> "$GITHUB_PATH" | ||
| "$vp_pnpm_bin/pnpm" --version | ||
|
|
||
| - name: Setup EAS | ||
| if: steps.expo-token.outputs.present == 'true' | ||
| uses: expo/expo-github-action@v8 | ||
| with: | ||
| eas-version: latest | ||
| token: ${{ secrets.EXPO_TOKEN }} | ||
| packager: pnpm | ||
|
|
||
| - name: Pull production environment variables | ||
| if: steps.expo-token.outputs.present == 'true' | ||
| working-directory: apps/mobile | ||
| env: | ||
| EXPO_TOKEN: ${{ secrets.EXPO_TOKEN }} | ||
| run: eas env:pull production --non-interactive | ||
|
|
||
| - name: Build and submit | ||
| if: steps.expo-token.outputs.present == 'true' && inputs.mode == 'build' | ||
| working-directory: apps/mobile | ||
| env: | ||
| EXPO_TOKEN: ${{ secrets.EXPO_TOKEN }} | ||
| run: eas build --platform ${{ inputs.platform }} --profile production --auto-submit --non-interactive --no-wait | ||
|
|
||
| - name: Publish OTA update | ||
| if: steps.expo-token.outputs.present == 'true' && inputs.mode == 'update' | ||
| working-directory: apps/mobile | ||
| env: | ||
| EXPO_TOKEN: ${{ secrets.EXPO_TOKEN }} | ||
| run: | | ||
| eas update \ | ||
| --channel production \ | ||
| --environment production \ | ||
| --platform ${{ inputs.platform }} \ | ||
| --message "${{ inputs.message || format('Production OTA ({0})', github.sha) }}" \ | ||
|
Contributor
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. OTA message shell injectionHigh Severity The Reviewed by Cursor Bugbot for commit ab86724. Configure here. |
||
| --non-interactive | ||
| Original file line number | Diff line number | Diff line change |
|---|---|---|
|
|
@@ -6,6 +6,7 @@ | |
| }, | ||
| "build": { | ||
| "development": { | ||
| "corepack": true, | ||
| "env": { | ||
| "APP_VARIANT": "development" | ||
| }, | ||
|
|
@@ -14,6 +15,7 @@ | |
| "distribution": "internal" | ||
| }, | ||
| "preview": { | ||
| "corepack": true, | ||
| "env": { | ||
| "APP_VARIANT": "preview" | ||
| }, | ||
|
|
@@ -22,6 +24,7 @@ | |
| "distribution": "internal" | ||
| }, | ||
| "preview:dev": { | ||
| "corepack": true, | ||
| "env": { | ||
| "APP_VARIANT": "preview", | ||
| "MOBILE_VERSION_POLICY": "fingerprint" | ||
|
|
@@ -35,6 +38,7 @@ | |
| } | ||
| }, | ||
| "production": { | ||
| "corepack": true, | ||
| "env": { | ||
| "APP_VARIANT": "production" | ||
| }, | ||
|
|
@@ -46,7 +50,10 @@ | |
| "submit": { | ||
| "production": { | ||
| "ios": { | ||
| "ascAppId": "6761315631" | ||
| "ascAppId": "6787819824" | ||
| }, | ||
| "android": { | ||
| "track": "internal" | ||
|
Contributor
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. 🟠 High The 🚀 Reply "fix it for me" or copy this AI Prompt for your agent: |
||
| } | ||
| } | ||
| } | ||
|
|
||


There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Missing fingerprint env override
Low Severity
The production job sets
APP_VARIANTbut notMOBILE_VERSION_POLICY, while the preview workflow pinsMOBILE_VERSION_POLICYtofingerprint. Aftereas env:pull production, aMOBILE_VERSION_POLICYvalue from the remote environment can override theapp.config.tsdefault and change runtime versioning for builds and OTAs triggered here.Reviewed by Cursor Bugbot for commit ab86724. Configure here.