Skip to content

Commit 8730d69

Browse files
authored
Merge pull request #2177 from selfxyz/staging
Release to Production v2.9.24 - 2026-06-14
2 parents 6baa98d + 0dcbe1d commit 8730d69

268 files changed

Lines changed: 44384 additions & 47682 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

.cursorignore

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,7 @@ circuits/scripts/server/*.sh
4242

4343
# Test wallets and mock data
4444
app/ios/passport.json
45-
app/ios/OpenPassport/passport.json
45+
app/ios/Self/passport.json
4646

4747
# Environment sample files
4848
app/env.sample

.github/CI_FORCE_RUN

Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,43 @@
1+
# CI Force-Run Sentinel
2+
3+
Every path-filtered CI workflow under `.github/workflows/` lists this file
4+
in its `paths:` filter (or, for workflows with an internal `check_changes`
5+
gate, in its diff allowlist). Editing this file forces those workflows to
6+
run on the next push, which is useful when:
7+
8+
- Migrating tooling (package manager, Node version, monorepo runner)
9+
- Refactoring shared `.github/actions/*` composite actions
10+
- Pre-merge confidence check on a large branch
11+
- Verifying that a workflow you _think_ is unrelated to your changes still
12+
passes
13+
14+
## Scope and limitations
15+
16+
- Triggers path-filtered `pull_request` / `push` workflows only.
17+
- Does **not** trigger workflows gated on `workflow_dispatch` / `schedule`
18+
only (e.g. `release-calendar.yml`), nor workflows whose `push:` event
19+
filters this branch out (e.g. `npm-publish.yml` only runs on `push` to
20+
`dev`).
21+
- Jobs guarded by `if: github.event.pull_request.head.repo.fork == false`
22+
still skip on fork PRs by design (secrets are not exposed to forks).
23+
- Jobs hard-disabled with `if: false` stay disabled regardless of the
24+
sentinel.
25+
26+
Run `python3 scripts/ci/add-force-run-sentinel.py --check` to verify that
27+
every workflow with a `paths:` block lists this sentinel and that internal
28+
`check_changes` allowlists include it too.
29+
30+
## How to use
31+
32+
1. Add a one-line entry to the log below with date + reason.
33+
2. Commit on your branch. Path-filtered CI workflows will run on the PR.
34+
3. After verification, you may revert the entry before merge (optional —
35+
the file is intentionally low-churn; leaving entries as a history is
36+
also fine).
37+
38+
## Log
39+
40+
- 2026-05-13 — Force-run all workflows to verify Yarn → pnpm migration
41+
(PR #2069).
42+
- 2026-05-13 — Re-trigger after enabling check_changes sentinel + debug
43+
step + re-enabling web/workspace jobs (PR #2069).

.github/PULL_REQUEST_TEMPLATE.md

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -14,13 +14,13 @@
1414

1515
Run each command and check the box only after it passes. Paste failures into the Test plan.
1616

17-
- [ ] `yarn lint && yarn types` pass
18-
- [ ] Bridge contract tests pass: `cd app && yarn jest:run` and `yarn workspace @selfxyz/rn-sdk-test-app test`
19-
- [ ] If `packages/mobile-sdk-alpha` touched: `cd packages/mobile-sdk-alpha && yarn test && yarn types` pass
20-
- [ ] Diff of `.kt`/`.swift` reviewed no business logic added (only hardware/OS access; logic lives in TypeScript)
17+
- [ ] `pnpm lint && pnpm types` pass
18+
- [ ] Bridge contract tests pass: `cd app && pnpm jest:run` and `pnpm --filter @selfxyz/rn-sdk-test-app test`
19+
- [ ] If `packages/mobile-sdk-alpha` touched: `pnpm --filter @selfxyz/mobile-sdk-alpha test && pnpm --filter @selfxyz/mobile-sdk-alpha types` pass
20+
- [ ] Diff of `.kt`/`.swift` reviewed - no business logic added (only hardware/OS access; logic lives in TypeScript)
2121
- [ ] NativeModules bridge contract (method names, payload keys, error codes) unchanged, or the change is intentional and described in the summary
2222

23-
**Cannot be verified by an agent flag for human QA:**
23+
**Cannot be verified by an agent - flag for human QA:**
2424

25-
- [ ] Native builds (app + RN test app, iOS + Android) relying on CI, or needs a human local build
26-
- [ ] On-device smoke test of the affected flow (e.g. NFC passport read, MRZ camera scan) **needs human**, or N/A if no runtime behavior changed
25+
- [ ] Native builds (app + RN test app, iOS + Android) - relying on CI, or needs a human local build
26+
- [ ] On-device smoke test of the affected flow (e.g. NFC passport read, MRZ camera scan) - **needs human**, or N/A if no runtime behavior changed

.github/actions/cache-core-sdk-build/action.yml

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -29,9 +29,6 @@ runs:
2929
path: |
3030
common/dist
3131
sdk/core/dist
32-
node_modules
33-
sdk/core/node_modules
34-
common/node_modules
3532
key: core-sdk-build-${{ inputs.cache-version }}-${{ github.sha }}
3633
fail-on-cache-miss: ${{ inputs.fail-on-cache-miss }}
3734
- id: save
@@ -41,7 +38,4 @@ runs:
4138
path: |
4239
common/dist
4340
sdk/core/dist
44-
node_modules
45-
sdk/core/node_modules
46-
common/node_modules
4741
key: core-sdk-build-${{ inputs.cache-version }}-${{ github.sha }}

.github/actions/cache-mobile-sdk-build/action.yml

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -29,9 +29,6 @@ runs:
2929
path: |
3030
common/dist
3131
packages/mobile-sdk-alpha/dist
32-
node_modules
33-
packages/mobile-sdk-alpha/node_modules
34-
common/node_modules
3532
key: mobile-sdk-alpha-build-${{ inputs.cache-version }}-${{ github.sha }}
3633
fail-on-cache-miss: ${{ inputs.fail-on-cache-miss }}
3734
- id: save
@@ -41,7 +38,4 @@ runs:
4138
path: |
4239
common/dist
4340
packages/mobile-sdk-alpha/dist
44-
node_modules
45-
packages/mobile-sdk-alpha/node_modules
46-
common/node_modules
4741
key: mobile-sdk-alpha-build-${{ inputs.cache-version }}-${{ github.sha }}
Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,46 @@
1+
name: Cache PNPM
2+
3+
description: Cache the pnpm content-addressable store. Do not cache node_modules — pnpm uses `.modules.yaml` as an up-to-date marker and will skip re-linking workspace packages if a partial node_modules tree is restored.
4+
5+
inputs:
6+
lock-file:
7+
description: Path to pnpm-lock.yaml
8+
required: false
9+
default: pnpm-lock.yaml
10+
cache-version:
11+
description: Additional cache version segment
12+
required: false
13+
default: v2
14+
15+
outputs:
16+
cache-hit:
17+
description: Whether an exact match was found for the cache key
18+
value: ${{ steps.cache.outputs.cache-hit }}
19+
20+
runs:
21+
using: "composite"
22+
steps:
23+
- id: get-hash
24+
name: Hash lock file
25+
shell: bash
26+
run: |
27+
if [ -f "${{ inputs.lock-file }}" ]; then
28+
echo "hash=$(shasum -a 256 "${{ inputs.lock-file }}" | awk '{ print $1 }')" >> $GITHUB_OUTPUT
29+
else
30+
echo "::warning::Lock file '${{ inputs.lock-file }}' not found."
31+
echo "hash=no-lock-file" >> $GITHUB_OUTPUT
32+
fi
33+
- id: cache
34+
name: Cache pnpm store
35+
uses: actions/cache@v4
36+
with:
37+
# Default pnpm store locations on Linux/macOS. If PNPM_HOME is set or
38+
# pnpm changes its default store path in a future release, update
39+
# these paths or invoke `pnpm store path --silent` dynamically.
40+
path: |
41+
~/.local/share/pnpm/store
42+
~/Library/pnpm/store
43+
key: ${{ runner.os }}-pnpm-store-${{ inputs.cache-version }}-${{ steps.get-hash.outputs.hash }}
44+
restore-keys: |
45+
${{ runner.os }}-pnpm-store-${{ inputs.cache-version }}-
46+
${{ runner.os }}-pnpm-store-

.github/actions/cache-yarn/action.yml

Lines changed: 0 additions & 46 deletions
This file was deleted.
Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
name: Check Nested Requires
2+
description: Fail CI if tests contain nested require() patterns that can trigger OOMs.
3+
4+
inputs:
5+
paths:
6+
description: Newline-separated list of paths to scan.
7+
required: true
8+
pattern:
9+
description: Extended regular expression to search for.
10+
required: false
11+
default: "require\\(['\"]react(-native)?['\"]\\)"
12+
13+
runs:
14+
using: composite
15+
steps:
16+
- shell: bash
17+
env:
18+
CHECK_PATHS: ${{ inputs.paths }}
19+
CHECK_PATTERN: ${{ inputs.pattern }}
20+
run: |
21+
set -euo pipefail
22+
23+
paths=()
24+
while IFS= read -r path; do
25+
if [[ -n "$path" ]]; then
26+
paths+=("$path")
27+
fi
28+
done <<< "$CHECK_PATHS"
29+
30+
if grep -rE "$CHECK_PATTERN" -- "${paths[@]}" 2>/dev/null; then
31+
echo "❌ Found nested require() patterns that cause OOM in CI"
32+
exit 1
33+
fi
34+
35+
echo "✅ No nested require() patterns found"

.github/actions/mobile-setup/action.yml

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -57,28 +57,28 @@ runs:
5757
run: |
5858
cd ${{ inputs.app_path }}
5959
60-
# Configure Yarn
60+
# Configure pnpm
6161
corepack enable
62-
yarn set version 4.12.0
6362
6463
echo "📦 Installing JavaScript dependencies with strict lock file..."
65-
if ! yarn install --immutable --inline-builds; then
64+
# Force full dependency installation even when workflows export NODE_ENV=production.
65+
if ! NODE_ENV=development pnpm install --frozen-lockfile --no-prod; then
6666
echo ""
67-
echo "❌ ERROR: yarn.lock is out of date!"
67+
echo "❌ ERROR: pnpm-lock.yaml is out of date!"
6868
echo ""
69-
echo "This happens when package.json was modified but yarn.lock wasn't updated."
69+
echo "This happens when package.json was modified but pnpm-lock.yaml wasn't updated."
7070
echo ""
7171
echo "To fix this:"
72-
echo " 1. Run 'yarn install' locally in the app directory"
73-
echo " 2. Commit the updated yarn.lock file"
72+
echo " 1. Run 'pnpm install' locally at the repository root"
73+
echo " 2. Commit the updated pnpm-lock.yaml file"
7474
echo " 3. Push your changes"
7575
echo ""
7676
echo "This ensures everyone has the exact same dependency versions."
7777
exit 1
7878
fi
7979
80-
# Run mobile-specific installation
81-
yarn install-app:mobile-deploy
80+
# Run mobile-specific installation with full dependency graph as well.
81+
NODE_ENV=development pnpm install-app:mobile-deploy
8282
8383
- name: Install Ruby dependencies
8484
shell: bash
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
1-
name: Yarn Install
1+
name: PNPM Install
22

3-
description: Install Yarn v4 and run yarn install.
3+
description: Install pnpm and run pnpm install.
44

55
inputs:
66
working_directory:
@@ -11,27 +11,21 @@ inputs:
1111
runs:
1212
using: "composite"
1313
steps:
14-
- name: Install Yarn v4
15-
shell: bash
16-
run: |
17-
corepack enable
18-
corepack prepare yarn@4.12.0 --activate
19-
# Ensure we're using the correct version
20-
yarn --version
21-
2214
- name: Setup Node.js
2315
uses: actions/setup-node@v4
2416
with:
2517
node-version-file: .nvmrc
26-
cache: "yarn"
27-
cache-dependency-path: |
28-
yarn.lock
29-
.yarnrc.yml
18+
19+
- name: Install pnpm
20+
shell: bash
21+
run: |
22+
corepack enable
23+
pnpm --version
3024
3125
- name: Install dependencies
3226
uses: nick-fields/retry@v3
3327
with:
3428
timeout_minutes: 10
3529
max_attempts: 3
3630
retry_wait_seconds: 5
37-
command: yarn install --immutable
31+
command: pnpm install --frozen-lockfile

0 commit comments

Comments
 (0)