mirror of
https://github.com/stablyai/orca.git
synced 2026-11-13 09:27:29 +00:00
* build(mobile): upgrade to Expo SDK 58 and React Native 0.88 Expo 58 drops Zod from @expo/cli, which clears the last Zod 3 advisory (GHSA-mrhx-c7xc-m3w5) in mobile along with its local patch and override. - Expo 55 -> 58, React Native 0.83 -> 0.88, React 19.3, gesture-handler 3, webview 14, reanimated 4.7, worklets 0.13 (SDK 58 bundled versions, pinned below today's batch to respect minimumReleaseAge). - Port the react-native and react-native-webview patches unchanged; drop expo-constants, expo-notifications, @expo/cli, expo-router, zod and query-string patches plus the zod/query-string/xcode>uuid overrides, which upstream fixed or no longer need. - iOS minimum rises to 16.4 (Expo 58 / RN 0.88 requirement). - Migrate to RN 0.88 strict types: instance ref types, NamedStyles, AppState.currentState, list header/footer nulls. - Replace removed runtime APIs: InteractionManager -> idle callback with a macrotask fallback; StyleSheet.absoluteFillObject -> absoluteFill; FileHandle.readBytes -> readBytesSync (it became async). - Resolve react-native/asset-registry for shared assets in Metro and alias the old registry path for react-native-svg in the desktop mobile-web bundle. - Reduce the iOS scene plugin to the reconnect override; Expo 58's template now ships the scene delegate itself. * fix(mobile): bridge react-native-svg web imports and libsodium runtime for RN 0.88 - Share react-native-svg web shims between the mobile-web build and its render checks: map the old asset-registry path to react-native-web's registry and stub the Android-only touch-sound TurboModule. - Patch react-native-libsodium 1.7.0 to read the JSI runtime from the bridge proxy; RN 0.88 removed RCTCxxBridge.runtime. * fix(mobile): use Expo 58's legacy promise resolver for audio permissions * fix(mobile): skip null handles in the RPC recording timer shims for RN 0.88 types * style(mobile): format MobilePRSidebar after rebase * fix(mobile): name RN 0.88 text input refs for declarations; allow queued back in stack render check - Type text input refs with an exported interface so declaration emit can name hook results (RN 0.88 aliases TextInputInstance to an unexported class). - Expo Router 58 drains back() after a commit; check the interrupted push's exit from the frame it starts, bounded to three frames of lag. * chore(mobile): justify the text input handle interface for React Doctor * chore(mobile): use a nameable intersection alias for text input refs * fix(mobile): use sync expo-file-system writes, copies and moves on Expo 58 Expo 58 made File.write/copy/move and FileHandle.writeBytes return promises. Our callers never awaited them, so failures escaped their try/catch and the store's tmp-then-move and PDF writes could race their close or rename. * build(mobile): raise the page bundle budget to 10 MiB for Expo 58 Expo 58 adds about 310 KB to the page: expo-router (+258 KB, now carrying React Navigation, net about +110 KB) and Reanimated 4.7 (+152 KB). Main had 85 KB of headroom left. 10 MiB still stays within the 10 MiB per-asset contract. * fix(mobile): drop the window-metrics seed RN 0.88 removed from Android RN 0.88 no longer holds window metrics: DeviceInfoModule reads the activity's WindowMetrics on demand and setWindowDisplayMetrics is gone, so MainActivity no longer compiled. Layout scale still comes from the screen metrics we reseed. --------- Co-authored-by: Kelvin Amoaba <97001695+AmoabaKelvin@users.noreply.github.com>
110 lines
4.1 KiB
JSON
110 lines
4.1 KiB
JSON
{
|
|
"name": "orca-mobile",
|
|
"version": "0.0.1",
|
|
"private": true,
|
|
"main": "index.js",
|
|
"scripts": {
|
|
"start": "node scripts/start-expo.mjs",
|
|
"android": "expo run:android",
|
|
"ios": "expo run:ios",
|
|
"native": "node scripts/native-client.mjs",
|
|
"postinstall": "node scripts/build-terminal-webview-engine.mjs && node scripts/build-mermaid-page-engine.mjs && node scripts/build-katex-page-style.mjs && node scripts/build-terminal-document-script.mjs",
|
|
"test": "vitest run",
|
|
"typecheck": "node ../config/scripts/typecheck/project-execution/run-typecheck-projects-in-parallel.mjs --project=mobile/tsconfig.json",
|
|
"typecheck:tests": "node ../config/scripts/typecheck/project-execution/run-typecheck-projects-in-parallel.mjs --project=mobile/tsconfig.test.json",
|
|
"check:tests-typecheck": "node scripts/check-tests-typecheck-ratchet.mjs",
|
|
"rpc:record": "tsx --conditions=orca-source scripts/rpc-recording.mts",
|
|
"rpc:diff": "tsx --conditions=orca-source scripts/rpc-diff.mts",
|
|
"lint": "oxlint",
|
|
"format": "oxfmt --write .",
|
|
"format:check": "oxfmt --check .",
|
|
"mock-server": "npx tsx scripts/mock-server.ts",
|
|
"repro:workspace-picker-lag": "npx tsx scripts/repro-workspace-picker-lag.ts",
|
|
"start:emulator": "node scripts/start-emulator.mjs"
|
|
},
|
|
"dependencies": {
|
|
"@formatjs/intl-pluralrules": "6.3.16",
|
|
"@noble/hashes": "1.8.0",
|
|
"@orca/expo-two-way-audio": "file:./packages/expo-two-way-audio",
|
|
"@react-native-async-storage/async-storage": "^2.2.0",
|
|
"@tanstack/query-persist-client-core": "5.105.3",
|
|
"@tanstack/react-query": "5.105.3",
|
|
"@xterm/addon-unicode11": "0.10.0-beta.330",
|
|
"@xterm/addon-webgl": "0.20.0-beta.329",
|
|
"@xterm/xterm": "6.1.0-beta.336",
|
|
"buffer": "^6.0.3",
|
|
"diff": "8.0.4",
|
|
"expo": "~58.0.22",
|
|
"expo-build-properties": "^58.0.12",
|
|
"expo-camera": "^58.0.14",
|
|
"expo-clipboard": "^58.0.4",
|
|
"expo-constants": "^58.0.14",
|
|
"expo-crypto": "^58.0.7",
|
|
"expo-dev-client": "~58.0.18",
|
|
"expo-document-picker": "^58.0.4",
|
|
"expo-file-system": "58.0.13",
|
|
"expo-haptics": "^58.0.7",
|
|
"expo-image-picker": "^58.0.10",
|
|
"expo-keep-awake": "~58.0.3",
|
|
"expo-linking": "^58.0.15",
|
|
"expo-localization": "~58.0.5",
|
|
"expo-modules-core": "~58.0.29",
|
|
"expo-network": "~58.0.4",
|
|
"expo-notifications": "^58.1.7",
|
|
"expo-router": "^58.0.29",
|
|
"expo-secure-store": "^58.0.2",
|
|
"expo-splash-screen": "^58.0.12",
|
|
"expo-status-bar": "^58.0.4",
|
|
"expo-task-manager": "~58.0.13",
|
|
"fflate": "0.8.3",
|
|
"i18next": "26.5.11",
|
|
"katex": "0.18.10",
|
|
"lowlight": "^3.3.0",
|
|
"lucide-react-native": "^1.14.0",
|
|
"markdown-it": "^14.3.2",
|
|
"markdown-it-cjk-friendly": "^2.0.3",
|
|
"markdown-it-footnote": "^4.0.0",
|
|
"mermaid": "11.17.2",
|
|
"react": "19.3.0",
|
|
"react-dom": "19.3.0",
|
|
"react-native": "0.88.1",
|
|
"react-native-gesture-handler": "^3.3.0",
|
|
"react-native-libsodium": "1.7.0",
|
|
"react-native-reanimated": "4.7.1",
|
|
"react-native-safe-area-context": "^5.10.1",
|
|
"react-native-screens": "^4.30.1",
|
|
"react-native-svg": "15.16.0",
|
|
"react-native-web": "^0.21.4",
|
|
"react-native-webview": "14.0.1",
|
|
"react-native-worklets": "0.13.0",
|
|
"remend": "1.4.0",
|
|
"smol-toml": "1.9.1",
|
|
"tweetnacl": "^1.0.3",
|
|
"zod": "~4.6.7"
|
|
},
|
|
"devDependencies": {
|
|
"@orca/process-host": "link:../src/packages/process-host",
|
|
"@react-native/metro-config": "0.88.1",
|
|
"@types/markdown-it": "14.1.2",
|
|
"@types/markdown-it-footnote": "^3.0.4",
|
|
"@types/mdast": "^4.0.4",
|
|
"@types/react": "~19.2.18",
|
|
"@types/react-test-renderer": "19.1.0",
|
|
"@types/ws": "^8.18.2",
|
|
"acorn": "8.18.0",
|
|
"esbuild": "0.28.2",
|
|
"expo-module-scripts": "^56.0.3",
|
|
"happy-dom": "^21.0.4",
|
|
"oxfmt": "^0.74.0",
|
|
"oxlint": "^1.88.0",
|
|
"react-test-renderer": "19.3.0",
|
|
"tsx": "^4.23.15",
|
|
"typescript": "^7.0.2",
|
|
"typescript-api": "npm:typescript@6.0.3",
|
|
"vite": "^8.3.4",
|
|
"vitest": "5.0.5",
|
|
"ws": "^8.22.0"
|
|
},
|
|
"packageManager": "pnpm@12.14.0+sha512.c18ba6d87993d3d164cb5e8948f32b2c06ee854487e06cd8d86781342fb3e5bb4634367034711e86802baa9c37bea906ce1929ad08d70884c97d801df13389a6"
|
|
}
|