feat(mobile): receive native push notifications from paired desktops (#19951)

* feat(mobile): deliver native push notifications from paired desktops

* fix(mobile): retry push capability probes

* fix(mobile): cancel retired push capability probes

* fix(mobile): ignore stale push reconciliations

* fix(mobile): type capability probe at its boundary

* fix(notifications): route mobile push taps to the originating pane

* Require explicit mobile push-service consent on upgrade
This commit is contained in:
Jinwoo Hong
2026-09-11 01:00:16 -04:00
committed by GitHub
parent 1798786d4e
commit d33354cfd2
104 changed files with 6023 additions and 4283 deletions
+7
View File
@@ -94,6 +94,13 @@ jobs:
run: node -e 'const fs = require("node:fs"); const { expo } = require("./app.json"); fs.appendFileSync(process.env.GITHUB_OUTPUT, `version=${expo.version}\nbuild_number=${expo.ios.buildNumber}\n`)'
- name: Expo prebuild
# Why the env var: app.config.js derives the expo-notifications plugin's
# `mode` from it, which is what writes `aps-environment: production` into the
# entitlements. push-token.ts reports a production APNs environment for every
# non-__DEV__ build, so a development entitlement here would leave TestFlight
# and App Store builds registered against a sandbox they never receive from.
env:
ORCA_IOS_APS_ENVIRONMENT: production
run: npx expo prebuild --platform ios --no-install
- name: Install CocoaPods
+14
View File
@@ -83,3 +83,17 @@ jobs:
- name: Check formatting
run: pnpm format:check
native-dismissal:
runs-on: macos-15
env:
ORCA_BACKGROUND_LAUNCH: '1'
steps:
- name: Checkout
uses: actions/checkout@v6
- name: Check native dismissal ledger
run: |
swiftc mobile/modules/orca-notification-dismissal/ios/PushDismissalLedger.swift \
mobile/modules/orca-notification-dismissal/tests/PushDismissalLedgerChecks.swift \
-o "$RUNNER_TEMP/push-dismissal-ledger-checks"
"$RUNNER_TEMP/push-dismissal-ledger-checks"