mirror of
https://github.com/stablyai/orca.git
synced 2026-11-01 17:47:40 +00:00
* [comment audit] Align legacy failure-read counts with cached display * [comment audit] Condense shared provider lifecycle and browser recovery comments [skip ci] * [comment audit] Condense shared generation, path and preview comments [skip ci] * [comment audit] Condense host, file and Git contract rationale [skip ci] * [comment audit] Tighten Git lifecycle and provider contract comments [skip ci] * [comment audit] Clarify shared host authority and launch isolation [skip ci] * [comment audit] simplify local access mobile and native chat contracts [skip ci] * [comment audit] simplify native chat presentation and state contracts [skip ci] * [comment audit] simplify native runtime and provider contracts [skip ci] * [comment audit] simplify migration and orchestration contracts [skip ci] * [comment audit] simplify plugin trust and process capture rationale [skip ci] * [comment audit] simplify terminal delivery and remote compatibility rationale [skip ci] * [comment audit] clarify remote recovery and launch wire rationale [skip ci] * [comment audit] shorten shared RPC compatibility and runtime evidence comments [skip ci] * [comment audit] simplify secure storage shell startup and sidebar rationale [skip ci] * [comment audit] clarify sidebar, skill and SSH invariants [skip ci] * [comment audit] condense structured chat delivery and timing rationale [skip ci] * [comment audit] condense terminal replay and telemetry invariants [skip ci] * [comment audit] clarify launch permission and terminal delivery rationale [skip ci] * [comment audit] clarify workspace ownership and layout contracts [skip ci] * [comment audit] wait for fitted and painted SSH terminal links * [comment audit] clarify layout persistence and session ownership [skip ci] * [comment audit] clarify host routing and workspace lifecycle contracts [skip ci] * [comment audit] clarify startup persistence and app lifetime comments [skip ci] * [comment audit] clarify recovery and activity boundaries [skip ci] * [comment audit] condense activity and artifact invariants [skip ci] * [comment audit] condense automation authority contracts [skip ci] * [comment audit] simplify automation scheduling and history contracts [skip ci] * [comment audit] clarify browser chrome and annotation lifecycles [skip ci] * [comment audit] clarify browser routing and retained guest ownership [skip ci] * [comment audit] clarify browser recovery and document ownership comments [skip ci] * [comment audit] restore hosted runners required by native IME fixtures * [comment audit] shorten preview, palette and dashboard invariants [skip ci] * [comment audit] clarify terminal preview, dashboard and retention comments [skip ci] * [comment audit] clarify diff-note recovery and editor lifecycle comments [skip ci] * [comment audit] shorten rich-text and combined-diff ownership comments [skip ci] * [comment audit] shorten autosave, draft recovery and model ownership comments [skip ci] * [comment audit] shorten save-queue, notebook and Markdown constraints [skip ci] * [comment audit] shorten Monaco, PDF and rich Markdown safeguards [skip ci] * [comment audit] clarify rich Markdown source and selection safeguards [skip ci] * [comment audit] clarify editor loading and emulator stream lifetimes [skip ci] * [comment audit] trim emulator and feature tour narration [skip ci] * [comment audit] clarify floating workspace and GitHub cache ownership [skip ci] * [comment audit] trim provider controls and Linear filter explanations [skip ci] * [comment audit] clarify pairing and chat resume lifetimes [skip ci] * [comment audit] clarify chat delivery and transcript lifetimes [skip ci] * [comment audit] clarify session options and host-owned status [skip ci] * [comment audit] clarify draft durability and live-status precedence [skip ci] * [comment audit] Trim chat send and model ownership explanations [skip ci] * [comment audit] Shorten transcript ownership and send recovery comments [skip ci] * [comment audit] Simplify native chat composer and transcript hook comments [skip ci] * [comment audit] Shorten native chat scroll and structured session explanations [skip ci] * [comment audit] Trim workspace picker and onboarding commentary [skip ci] * [comment audit] Simplify pet rendering, review cache and quick open comments [skip ci] * [comment audit] Trim sidebar and session history explanations [skip ci] * [comment audit] Condense session resume and review checks comments [skip ci] * [comment audit] Shorten checks state and file explorer refresh comments [skip ci] * [comment audit] Trim plugin bridge and source-control action rationale [skip ci] * [comment audit] Trim source-control listing and review rationale [skip ci] * [comment audit] Shorten sidebar lifecycle and explorer safeguards [skip ci] * [comment audit] Condense Settings account and appearance rationale [skip ci] * [comment audit] Trim pairing and repository Settings explanations [skip ci] * [comment audit] Condense Settings search SSH and terminal safeguards [skip ci] * [comment audit] Shorten Settings voice and provider ownership comments [skip ci] * [comment audit] Condense Settings draft persistence and host-state rationale [skip ci] * [comment audit] Trim Settings hooks and sidebar setup rationale [skip ci] * [comment audit] Condense sidebar deletion and board-filter safeguards [skip ci] * [comment audit] Condense worktree cards, host ownership and Markdown contracts [skip ci] * [comment audit] Condense sidebar drag, folder and filtering contracts [skip ci] * [comment audit] Condense sidebar parity, sleep and host ownership contracts [skip ci] * [comment audit] Prune focus-read baseline after comment cleanup * [comment audit] Clarify sidebar visibility, board drops and agent evidence [skip ci] * [comment audit] Tighten sidebar listing, drag and reveal contracts [skip ci] * [comment audit] Clarify viewport geometry and skill update safeguards [skip ci] * [comment audit] Tighten skill inventory, usage and host status comments [skip ci] * [comment audit] Clarify usage ownership and resource kill safeguards [skip ci] * [comment audit] Tighten tab selection, rename and search contracts [skip ci] * [comment audit] Tighten tab-strip geometry and drag ownership comments [skip ci] * [comment audit] Tighten Tasks recovery, pagination and mutation comments [skip ci] * [comment audit] Tighten provider loading and terminal recovery comments [skip ci] * [comment audit] Tighten completion, cadence and PTY ownership comments [skip ci] * [comment audit] Clarify terminal restore and parked-pane boundaries [skip ci] * [comment audit] Tighten PTY startup and replay explanations [skip ci] * [comment audit] Clarify PTY identity and delivery ownership [skip ci] * [comment audit] Shorten remote reconnect and input replay rationale [skip ci] * [comment audit] Condense terminal parking clipboard and file link comments [skip ci] * [comment audit] Clarify IME ownership and trim trace history [skip ci] * [comment audit] Shorten pane recovery and parked watcher explanations [skip ci] * [comment audit] Condense snapshot replay and visibility recovery rationale [skip ci] * [comment audit] Shorten terminal parking and keyboard ownership rationale [skip ci] * [comment audit] Trim renderer lifecycle and menu rationale [skip ci] * [comment audit] Condense workspace cleanup ownership and settlement notes [skip ci] * [comment audit] Clarify renderer hook evidence and source ownership [skip ci] * [comment audit] Tighten IPC ownership and reconnect explanations [skip ci] * [comment audit] Trim renderer focus, paste and attention comments [skip ci] * [comment audit] Shorten scroll, locale and agent lifecycle comments [skip ci] * [comment audit] Trim agent launch, resume and ownership commentary [skip ci] * [comment audit] Shorten account, browser and editor comments [skip ci] * [comment audit] Clarify host-mirror waits, previews and input ownership [skip ci] * [comment audit] Condense launch recovery and editor tokenization comments [skip ci] * [comment audit] Condense workspace selection and terminal pane rationale [skip ci] * [comment audit] Condense terminal fitting and rendering recovery comments [skip ci] * [comment audit] Condense terminal input and host routing explanations [skip ci] * [comment audit] Condense ownership and sleeping-session recovery rationale [skip ci] * [comment audit] Condense structured launch and terminal link explanations [skip ci] * [comment audit] Condense terminal ownership and workspace file routing rationale [skip ci] * [comment audit] Condense session persistence and workspace activation rationale [skip ci] * [comment audit] Condense workspace routing and browser ownership rationale [skip ci] * [comment audit] Condense mirror recovery and layout authority rationale [skip ci] * [comment audit] Condense runtime transport and file safety rationale [skip ci] * [comment audit] Condense runtime graph and structured session rationale [skip ci] * [comment audit] Condense browser creation and remote tab recovery rationale [skip ci] * [comment audit] Condense snapshot authority and publisher recovery rationale [skip ci] * [comment audit] Condense frame, startup and provider cache rationale [skip ci] * [comment audit] Condense host twin and agent lifecycle rationale [skip ci] * [comment audit] Condense browser authority and editor cleanup rationale [skip ci] * [comment audit] Condense editor buffer identity and review cache rationale [skip ci] * [comment audit] Condense provider lifetime and repository ownership rationale [skip ci] * [comment audit] Condense reconnect, hydration and terminal retirement rationale [skip ci] * [comment audit] Condense recovery, reconciliation and persistence rationale [skip ci] * [comment audit] Condense cleanup ownership and listing admission rationale [skip ci] * [comment audit] Condense teardown ordering and terminal ownership rationale [skip ci] * [comment audit] Condense recovery ledger and web host-boundary rationale [skip ci] * [comment audit] Condense web reconnect and credential lifecycle rationale [skip ci] * [comment audit] Condense cloud rollout and assignment safety rationale [skip ci] * [comment audit] Condense relay session and database recovery rationale [skip ci] * [comment audit] Condense relay placement and protocol compatibility rationale [skip ci] * [comment audit] Condense build and packaging constraints [skip ci] * [comment audit] Condense CI gates and validation isolation rationale [skip ci] * [comment audit] Condense catalog identity and browser validation rationale [skip ci] * [comment audit] Condense mobile browser and frame-budget rationale [skip ci] * [comment audit] Shorten mobile route and browser test explanations [skip ci] * [comment audit] Condense editor and session seam test rationale [skip ci] * [comment audit] Trim session and terminal closure history [skip ci] * [comment audit] Shorten terminal browser and census explanations [skip ci] * [comment audit] Preserve root-only E2E diagnostic baseline * [comment audit] Condense mobile seam and HTML preview test rationale [skip ci] * [comment audit] Condense preview instrumentation and render harness rationale [skip ci] * [comment audit] Condense bundle contracts and native-build constraints [skip ci] * [comment audit] Shorten native packaging and CI routing rationale [skip ci] * [comment audit] Condense release tooling and benchmark constraints [skip ci] * [comment audit] Condense packaging and platform gate rationale [skip ci] * [comment audit] Shorten mobile route and history rationale [skip ci] * [comment audit] Condense mobile browser and component rationale [skip ci] * [comment audit] Shorten drawer and workspace-form rationale [skip ci] * [comment audit] Trim mobile review and editor-document explanations [skip ci] * [comment audit] Condense editor lifecycle and Markdown explanations [skip ci] * [comment audit] Trim mobile file, diagnostics and dictation commentary [skip ci] * [comment audit] Simplify mobile host-list and workspace-view explanations [skip ci] * [comment audit] Clarify mobile shell lifetime and bridge delivery constraints [skip ci] * [comment audit] Condense bridge stream, native request and audio rationale [skip ci] * [comment audit] Reduce bridge schema and page-client commentary [skip ci] * [comment audit] Tighten mobile page bridge contracts [skip ci] * [comment audit] Clarify mobile cache and session constraints [skip ci] * [comment audit] Condense mobile route and lifecycle rationale [skip ci] * [comment audit] Tighten mobile shell hook timing rationale [skip ci] * [comment audit] Clarify route handoff and notification compatibility [skip ci] * [comment audit] Clarify push registration and dictation cleanup constraints [skip ci] * [comment audit] Condense keyboard geometry and native media ownership rationale [skip ci] * [comment audit] Tighten mobile chat scroll and composer concurrency rationale [skip ci] * [comment audit] Condense mobile reply compatibility and upload ownership rationale [skip ci] * [comment audit] Condense optimistic echo and scroll ownership rationale [skip ci] * [comment audit] Tighten stream replay and queued session ownership rationale [skip ci] * [comment audit] Condense mobile composer and reply-schema constraints [skip ci] * [comment audit] Clarify mobile transcript recovery and session ownership [skip ci] * [comment audit] Clarify mobile queue and source-control compatibility [skip ci] * [comment audit] Condense storage and task launch constraints [skip ci] * [comment audit] Clarify task schemas and terminal document ownership [skip ci] * [comment audit] Tighten terminal input and viewport rationale [skip ci] * [comment audit] Shorten terminal and RPC recorder contracts [skip ci] * [comment audit] Condense recorder engine and connection contracts [skip ci] * [comment audit] Shorten host credential and relay recovery comments [skip ci] * [comment audit] Tighten pairing recovery and bundle transport rationale [skip ci] * [comment audit] Clarify RPC delivery and workspace catalog boundaries [skip ci] * [comment audit] Condense catalog and relay entry contracts [skip ci] * [comment audit] Shorten shutdown and SSH relay delivery contracts [skip ci] * [comment audit] Condense WSL relay and E2E regression rationale [skip ci] * [comment audit] Shorten cross-version harness and renderer fixture explanations [skip ci] * [comment audit] Condense paired-host and E2E lifecycle rationale [skip ci] * [comment audit] Shorten layout oracle and regression explanations [skip ci] * [comment audit] Condense paired recovery and ownership regression contracts [skip ci] * [comment audit] Shorten restart, sidebar and SSH lifecycle contracts [skip ci] * [comment audit] Condense terminal rendering and IME regression rationale [skip ci] * [comment audit] Shorten terminal recovery and benchmark contracts [skip ci] * [comment audit] Condense tooling and Windows lifecycle proof rationale [skip ci] * [comment audit] Condense workflow routing and release rationale [skip ci] * [comment audit] Condense mobile security and installer contracts [skip ci] * [comment audit] Shorten native rationale and stylesheet workarounds [skip ci] * [comment audit] Shorten Windows visibility probe rationale [skip ci] * [comment audit] Condense embedded release and signing rationale [skip ci] * [comment audit] Retain current main test behavior in final reconciliation [skip ci] * [comment audit] Complete final comment review across current source inventory * [comment audit] Handle consolidated audit reports before final CI * [comment audit] Preserve credential storage census detail [skip ci] * [comment audit] Scale broad changed E2E selections with verified timing shards * [comment audit] Align E2E assertions with browser close and settled session metadata * [comment audit] Match existing E2Es to current resource and windowing contracts * [comment audit] Observe the shared server outage notice in reconnect coverage * [comment audit] Make existing renderer probes measure settled tab and PTY work * [comment audit] Align palette E2E selector with task search * [comment audit] Refresh remaining palette search selectors * [comment audit] Keep selector correction within selected audit specs * [comment audit] Await emoji fixture settings inside renderer evaluation * [comment audit] Cancel fixture fit retries between terminal tests --------- Co-authored-by: OrcaWin <293788423+OrcaWin@users.noreply.github.com>
331 lines
13 KiB
YAML
331 lines
13 KiB
YAML
name: Mobile Checks
|
||
|
||
on:
|
||
pull_request:
|
||
types:
|
||
- opened
|
||
- synchronize
|
||
- reopened
|
||
- ready_for_review
|
||
- converted_to_draft
|
||
paths:
|
||
- 'mobile/**'
|
||
# Route shared edits to mobile’s imports/RPC recordings/typecheck; root lockfile changes affect those modules’ root-resolved packages.
|
||
- 'src/shared/**'
|
||
# Mobile's Node RPC recording tools import this package.
|
||
- 'src/packages/process-host/**'
|
||
- 'pnpm-lock.yaml'
|
||
# Mobile launch contracts exercise the real host dispatcher and durable receipt store.
|
||
- 'src/main/agent-launch/**'
|
||
- 'src/main/runtime/rpc/**'
|
||
- 'src/main/runtime/runtime-rpc/**'
|
||
- 'src/main/runtime/runtime-rpc.ts'
|
||
- 'src/main/runtime/device-registry.ts'
|
||
- 'src/main/runtime/orca-runtime.ts'
|
||
- 'src/main/runtime/agent-session-*.ts'
|
||
- 'src/main/native-chat/agent-session-wire/**'
|
||
- 'src/main/runtime/structured-attention-original-delivery.test-fixture.ts'
|
||
# Rerun the only Fastfile-loading checks for release-workflow/Fastfile edits.
|
||
- '.github/workflows/mobile.yml'
|
||
- 'config/mobile-ci.vitest.config.mjs'
|
||
- 'config/scripts/run-mobile-ci-tests.mjs'
|
||
# Mobile typechecks run through the root compiler selection.
|
||
- 'config/scripts/run-typecheck-projects-in-parallel.mjs'
|
||
- 'config/scripts/tsrs-typecheck-compiler.mjs'
|
||
- 'config/scripts/pinned-bun-executable.mjs'
|
||
- 'config/oxlint-code-quality-native-plugins.json'
|
||
- 'config/.bun-version'
|
||
- '.github/actions/install-node-dependencies/**'
|
||
- '.github/actions/setup-pnpm/**'
|
||
- '.github/actions/restore-pnpm-verification/**'
|
||
- '.github/workflows/mobile-ios-release.yml'
|
||
- 'config/scripts/mobile-release-check-scope*'
|
||
- 'config/scripts/mobile-test-change-scope*'
|
||
- 'config/scripts/pr-code-change-scope.mjs'
|
||
- 'config/scripts/pr-package-test-paths.mjs'
|
||
- 'config/scripts/pr-layout-oracle-route.mjs'
|
||
# Desktop suites do not feed mobile; keep fixtures and test/toolchain config inputs.
|
||
- '!src/shared/**/*.test.[jt]s'
|
||
- '!src/shared/**/*.test.[jt]sx'
|
||
- '!src/shared/**/*.test.[cm][jt]s'
|
||
- '!src/packages/process-host/**/*.test.[jt]s'
|
||
- '!src/packages/process-host/**/*.test.[jt]sx'
|
||
- '!src/packages/process-host/**/*.test.[cm][jt]s'
|
||
- '!src/main/**/*.test.[jt]s'
|
||
- '!src/main/**/*.test.[jt]sx'
|
||
- '!src/main/**/*.test.[cm][jt]s'
|
||
# Check matching source inputs on main too: independently passing PRs can conflict after merge, and verify is PR-only.
|
||
push:
|
||
branches:
|
||
- main
|
||
paths:
|
||
- 'mobile/**'
|
||
- 'src/shared/**'
|
||
- 'src/packages/process-host/**'
|
||
- 'pnpm-lock.yaml'
|
||
- 'src/main/agent-launch/**'
|
||
- 'src/main/runtime/rpc/**'
|
||
- 'src/main/runtime/runtime-rpc/**'
|
||
- 'src/main/runtime/runtime-rpc.ts'
|
||
- 'src/main/runtime/device-registry.ts'
|
||
- 'src/main/runtime/orca-runtime.ts'
|
||
- 'src/main/runtime/agent-session-*.ts'
|
||
- 'src/main/native-chat/agent-session-wire/**'
|
||
- 'src/main/runtime/structured-attention-original-delivery.test-fixture.ts'
|
||
- '.github/workflows/mobile.yml'
|
||
- 'config/mobile-ci.vitest.config.mjs'
|
||
- 'config/scripts/run-mobile-ci-tests.mjs'
|
||
- 'config/scripts/run-typecheck-projects-in-parallel.mjs'
|
||
- 'config/scripts/tsrs-typecheck-compiler.mjs'
|
||
- 'config/scripts/pinned-bun-executable.mjs'
|
||
- 'config/.bun-version'
|
||
- '.github/actions/install-node-dependencies/**'
|
||
- '.github/actions/setup-pnpm/**'
|
||
# Desktop suites do not feed mobile; keep fixtures and test/toolchain config inputs.
|
||
- '!src/shared/**/*.test.[jt]s'
|
||
- '!src/shared/**/*.test.[jt]sx'
|
||
- '!src/shared/**/*.test.[cm][jt]s'
|
||
- '!src/packages/process-host/**/*.test.[jt]s'
|
||
- '!src/packages/process-host/**/*.test.[jt]sx'
|
||
- '!src/packages/process-host/**/*.test.[cm][jt]s'
|
||
- '!src/main/**/*.test.[jt]s'
|
||
- '!src/main/**/*.test.[jt]sx'
|
||
- '!src/main/**/*.test.[cm][jt]s'
|
||
|
||
concurrency:
|
||
# Key main concurrency by commit: GitHub replaces pending runs even with cancel-in-progress:false, hiding middle-merge regressions.
|
||
group: mobile-${{ github.event.pull_request.number || github.sha }}
|
||
cancel-in-progress: true
|
||
|
||
permissions:
|
||
contents: read
|
||
|
||
jobs:
|
||
verify:
|
||
name: Mobile verify
|
||
if: github.event_name == 'pull_request' && github.event.pull_request.draft != true
|
||
# Use ARM for pure Vitest; no x86 native toolchain is needed and Gemfile.lock’s ruby platform supports frozen install.
|
||
runs-on: blacksmith-4vcpu-ubuntu-2404-arm
|
||
|
||
env:
|
||
# Freeze bundler to reject Gemfile drift before release jobs resolve different fastlane versions.
|
||
BUNDLE_FROZEN: 'true'
|
||
ORCA_MOBILE_TYPECHECK_COMPILER: 'bun'
|
||
|
||
defaults:
|
||
run:
|
||
working-directory: mobile
|
||
|
||
steps:
|
||
- name: Checkout
|
||
uses: actions/checkout@v6
|
||
with:
|
||
fetch-depth: 2
|
||
|
||
- uses: ./.github/actions/install-node-dependencies
|
||
with:
|
||
cache-pnpm-store: 'false'
|
||
cache-dependency-path: |
|
||
pnpm-lock.yaml
|
||
mobile/pnpm-lock.yaml
|
||
|
||
- name: Detect Ruby release inputs
|
||
id: ruby-scope
|
||
shell: bash
|
||
working-directory: .
|
||
run: |
|
||
# Keep deletions when release files move into an application directory.
|
||
if ! git diff --name-only --no-renames -z HEAD^1 HEAD > "$RUNNER_TEMP/mobile-release-changes"; then
|
||
echo 'should_run=true' >> "$GITHUB_OUTPUT"
|
||
elif ! node config/scripts/mobile-release-check-scope.mjs "$RUNNER_TEMP/mobile-release-changes"; then
|
||
echo 'should_run=true' >> "$GITHUB_OUTPUT"
|
||
fi
|
||
|
||
# Bundler-cache proves the release’s pinned fastlane still resolves before a release needs it.
|
||
- name: Setup Ruby and fastlane
|
||
id: ruby-tools
|
||
background: true
|
||
if: steps.ruby-scope.outputs.should_run != 'false'
|
||
uses: ruby/setup-ruby@v1
|
||
with:
|
||
ruby-version: '3.3'
|
||
bundler-cache: true
|
||
working-directory: mobile
|
||
|
||
- name: Install dependencies
|
||
run: pnpm install --frozen-lockfile
|
||
|
||
# Check mobile import cycles after Expo deps install; pre-install pr.yml cannot load its tsconfig.
|
||
- name: Lint mobile imports with mobile dependencies installed
|
||
working-directory: .
|
||
run: node node_modules/oxlint/bin/oxlint --config config/oxlint-code-quality-native-plugins.json mobile --deny-warnings
|
||
|
||
# Call installed tools so pnpm's dependency refresh cannot race between checks.
|
||
- name: Typecheck
|
||
id: production-types
|
||
background: true
|
||
run: node ../config/scripts/run-typecheck-projects-in-parallel.mjs --compiler=bun --bun-threads=2 --project=mobile/tsconfig.json
|
||
|
||
# Why a ratchet and not the raw typecheck: mobile/tsconfig.json excludes test files, so until
|
||
# tsconfig.test.json existed nothing checked them, and at introduction 127 of the 632 had
|
||
# drifted. This fails when a test file that checks today stops checking, when a test leaves
|
||
# the program, and on @ts-nocheck; the baseline may only shrink.
|
||
- name: Typecheck tests (ratchet)
|
||
id: test-types
|
||
background: true
|
||
run: node scripts/check-tests-typecheck-ratchet.mjs
|
||
|
||
# Run bridged recording corpus unconditionally: reject growing/unclassified divergence and changed verdicts among 103 C1 goldens. Share worker time instead of a separate skippable env-gated step.
|
||
- name: Detect mobile test inputs
|
||
id: test-scope
|
||
shell: bash
|
||
working-directory: .
|
||
run: |
|
||
if ! git diff --name-only --no-renames -z HEAD^1 HEAD > "$RUNNER_TEMP/mobile-test-changes"; then
|
||
echo 'should_run=true' >> "$GITHUB_OUTPUT"
|
||
elif ! node config/scripts/mobile-test-change-scope.mjs "$RUNNER_TEMP/mobile-test-changes"; then
|
||
echo 'should_run=true' >> "$GITHUB_OUTPUT"
|
||
fi
|
||
|
||
- name: Setup Bun for tests
|
||
if: steps.test-scope.outputs.should_run != 'false'
|
||
uses: oven-sh/setup-bun@0c5077e51419868618aeaa5fe8019c62421857d6 # v2.2.0
|
||
with:
|
||
bun-version-file: config/.bun-version
|
||
|
||
- name: Test
|
||
if: steps.test-scope.outputs.should_run != 'false'
|
||
env:
|
||
ORCA_BACKGROUND_LAUNCH: '1'
|
||
run: node ../config/scripts/run-mobile-ci-tests.mjs
|
||
|
||
# All checks read the completed install; compilers need not hold up test workers.
|
||
- wait: [production-types, test-types, ruby-tools]
|
||
|
||
# Decode hash-addressed golden behavior changes for review, including after failed tests; advisory only.
|
||
- name: Summarize RPC recording changes
|
||
if: ${{ !cancelled() }}
|
||
continue-on-error: true
|
||
run: pnpm run rpc:diff HEAD^1 --summary "$GITHUB_STEP_SUMMARY"
|
||
|
||
- name: Test iOS release version resolution
|
||
if: steps.ruby-scope.outputs.should_run != 'false'
|
||
run: ruby fastlane/ios_release_version_test.rb
|
||
|
||
- name: Test TestFlight lane arguments
|
||
if: steps.ruby-scope.outputs.should_run != 'false'
|
||
run: ruby fastlane/fastfile_testflight_arguments_test.rb
|
||
|
||
# Load/list Fastfile lanes without Apple credentials/network to catch syntax/require/constants before release; ios-distribute failed six days without this guard.
|
||
- name: Smoke-check the Fastfile
|
||
if: steps.ruby-scope.outputs.should_run != 'false'
|
||
env:
|
||
FASTLANE_SKIP_UPDATE_CHECK: '1'
|
||
FASTLANE_OPT_OUT_USAGE: '1'
|
||
run: bundle exec fastlane lanes
|
||
|
||
- name: Smoke-check CocoaPods
|
||
if: steps.ruby-scope.outputs.should_run != 'false'
|
||
run: bundle exec pod --version
|
||
|
||
- name: Lint
|
||
run: pnpm lint
|
||
|
||
- name: Check formatting
|
||
run: pnpm format:check
|
||
|
||
# Reports, never gates: flags in the job summary when a pull request changes the Expo fingerprint,
|
||
# i.e. dev clients need a native rebuild. Only mobile's install, without scripts: the fingerprint
|
||
# hashes project sources and dependency paths, never installed package contents.
|
||
native-fingerprint:
|
||
name: Mobile native fingerprint
|
||
if: github.event_name == 'pull_request' && github.event.pull_request.draft != true
|
||
runs-on: blacksmith-2vcpu-ubuntu-2404
|
||
timeout-minutes: 15
|
||
continue-on-error: true
|
||
|
||
defaults:
|
||
run:
|
||
working-directory: mobile
|
||
|
||
steps:
|
||
- name: Checkout
|
||
uses: actions/checkout@v6
|
||
with:
|
||
fetch-depth: 2
|
||
persist-credentials: false
|
||
|
||
- uses: actions/setup-node@v6
|
||
with:
|
||
node-version-file: package.json
|
||
package-manager-cache: false
|
||
|
||
- name: Setup pnpm
|
||
uses: ./.github/actions/setup-pnpm
|
||
|
||
# The base commit may predate the fingerprint tools, so run the head's copy against both.
|
||
- name: Compare native fingerprint with the base
|
||
shell: bash
|
||
run: |
|
||
set -euo pipefail
|
||
tools="$RUNNER_TEMP/native-fingerprint"
|
||
mkdir -p "$tools"
|
||
cp scripts/native-client.mjs scripts/native-build-cache.cjs "$tools/"
|
||
pnpm install --frozen-lockfile --ignore-scripts
|
||
node "$tools/native-client.mjs" fingerprint --project . --out "$tools/head.json"
|
||
git checkout --quiet --detach HEAD^1
|
||
pnpm install --frozen-lockfile --ignore-scripts
|
||
node "$tools/native-client.mjs" fingerprint --project . --out "$tools/base.json"
|
||
node "$tools/native-client.mjs" compare "$tools/base.json" "$tools/head.json" \
|
||
--project . --summary "$GITHUB_STEP_SUMMARY"
|
||
|
||
main-tests:
|
||
name: Mobile tests on main
|
||
env:
|
||
ORCA_MOBILE_TYPECHECK_COMPILER: 'bun'
|
||
if: github.event_name == 'push'
|
||
# Why ARM: the same pure-Node Vitest run `verify` makes on a pull request.
|
||
runs-on: blacksmith-4vcpu-ubuntu-2404-arm
|
||
|
||
defaults:
|
||
run:
|
||
working-directory: mobile
|
||
|
||
steps:
|
||
- name: Checkout
|
||
uses: actions/checkout@v6
|
||
with:
|
||
persist-credentials: false
|
||
|
||
- uses: ./.github/actions/install-node-dependencies
|
||
with:
|
||
cache-dependency-path: |
|
||
pnpm-lock.yaml
|
||
mobile/pnpm-lock.yaml
|
||
|
||
- name: Install dependencies
|
||
run: pnpm install --frozen-lockfile
|
||
|
||
- name: Typecheck
|
||
id: production-types
|
||
background: true
|
||
run: node ../config/scripts/run-typecheck-projects-in-parallel.mjs --compiler=bun --bun-threads=2 --project=mobile/tsconfig.json
|
||
|
||
- name: Typecheck tests (ratchet)
|
||
id: test-types
|
||
background: true
|
||
run: node scripts/check-tests-typecheck-ratchet.mjs
|
||
|
||
# Run all golden consumers, including mutant/page-bridge suites; failures name the recording and rpc:record command.
|
||
- name: Setup Bun for tests
|
||
uses: oven-sh/setup-bun@0c5077e51419868618aeaa5fe8019c62421857d6 # v2.2.0
|
||
with:
|
||
bun-version-file: config/.bun-version
|
||
|
||
- name: Test
|
||
env:
|
||
ORCA_BACKGROUND_LAUNCH: '1'
|
||
run: node ../config/scripts/run-mobile-ci-tests.mjs
|
||
|
||
- wait: [production-types, test-types]
|