From 8cb7603b81735909e54f9dddda69d202fa5059e9 Mon Sep 17 00:00:00 2001 From: EthanShoeDev <13422990+EthanShoeDev@users.noreply.github.com> Date: Sat, 13 Sep 2025 00:03:23 -0400 Subject: [PATCH] lint --- apps/mobile/app.config.ts | 14 +- apps/mobile/package.json | 8 +- .../ssh-conn-lib/ios-sim-not-working.md | 276 +++++++++++------- docs/todos.md | 4 +- pnpm-lock.yaml | 247 ++++++++-------- 5 files changed, 310 insertions(+), 239 deletions(-) diff --git a/apps/mobile/app.config.ts b/apps/mobile/app.config.ts index 666e469..acd3f15 100644 --- a/apps/mobile/app.config.ts +++ b/apps/mobile/app.config.ts @@ -60,10 +60,18 @@ const config: ExpoConfig = { // https://github.com/dylankenneally/react-native-ssh-sftp/issues/20#issuecomment-3286693445 // ../../docs/ios-sim-not-working.md (Update 1) extraPods: [ - { name: 'CSSH-Binary', podspec: 'https://gist.githubusercontent.com/EthanShoeDev/1ab212949007d7aeabfeb199b7b9e951/raw/8602ec55efdf8c620dbbae93cd54023e2a36a8b9/CSSH-Binary.podspec' }, - { name: 'NMSSH', git: 'https://github.com/EthanShoeDev/NMSSH.git', branch: 'master' }, + { + name: 'CSSH-Binary', + podspec: + 'https://gist.githubusercontent.com/EthanShoeDev/1ab212949007d7aeabfeb199b7b9e951/raw/8602ec55efdf8c620dbbae93cd54023e2a36a8b9/CSSH-Binary.podspec', + }, + { + name: 'NMSSH', + git: 'https://github.com/EthanShoeDev/NMSSH.git', + branch: 'master', + }, ], - }, + }, }, ], ], diff --git a/apps/mobile/package.json b/apps/mobile/package.json index 94f7181..35b8592 100644 --- a/apps/mobile/package.json +++ b/apps/mobile/package.json @@ -34,21 +34,21 @@ "@react-navigation/native": "^7.1.8", "@tanstack/react-form": "^1.19.5", "@tanstack/react-query": "^5.87.1", - "expo": "54.0.3", + "expo": "54.0.6", "expo-build-properties": "~1.0.8", "expo-clipboard": "~8.0.7", "expo-constants": "~18.0.8", "expo-crypto": "~15.0.7", "expo-dev-client": "~6.0.12", "expo-document-picker": "~14.0.7", - "expo-file-system": "~19.0.13", + "expo-file-system": "~19.0.14", "expo-font": "~14.0.8", "expo-haptics": "~15.0.7", "expo-image": "~3.0.8", "expo-linking": "~8.0.8", - "expo-router": "6.0.1", + "expo-router": "6.0.3", "expo-secure-store": "~15.0.7", - "expo-splash-screen": "~31.0.9", + "expo-splash-screen": "~31.0.10", "expo-status-bar": "~3.0.8", "expo-symbols": "~1.0.7", "expo-system-ui": "~6.0.7", diff --git a/docs/projects/ssh-conn-lib/ios-sim-not-working.md b/docs/projects/ssh-conn-lib/ios-sim-not-working.md index 28a88b4..990d3a5 100644 --- a/docs/projects/ssh-conn-lib/ios-sim-not-working.md +++ b/docs/projects/ssh-conn-lib/ios-sim-not-working.md @@ -1,15 +1,24 @@ # React Native SSH — iOS simulator limitations & paths forward -*Last updated: 2025-09-12* +_Last updated: 2025-09-12_ ## TL;DR -* Our current stack (`react-native-ssh-sftp` → `NMSSH (aanah0 fork)` → prebuilt OpenSSL/libssh2) **fails on the iOS Simulator** because the vendored native libraries are compiled for **iOS device** only (platform: `iphoneos`), not **iOS Simulator** (platform: `iphonesimulator`). -* The proper modern fix is to use **XCFrameworks** that include **both** device and simulator slices, and have NMSSH link against those instead of raw static `.a` libraries. -* We have two main paths: - - 1. Keep using the existing RN package, but swap NMSSH’s underlying crypto/SSH libs to an **XCFramework** (e.g., from `DimaRU/Libssh2Prebuild`), via a tiny CocoaPods change. - 2. Build our **own RN native module** (TurboModule/JSI) that links **libssh2** and **OpenSSL** directly (using or adapting the Libssh2Prebuild scripts), fixing iOS Simulator support and also addressing Android reliability issues (like double “disconnect” callbacks). +- Our current stack (`react-native-ssh-sftp` → `NMSSH (aanah0 fork)` → prebuilt + OpenSSL/libssh2) **fails on the iOS Simulator** because the vendored native + libraries are compiled for **iOS device** only (platform: `iphoneos`), not + **iOS Simulator** (platform: `iphonesimulator`). +- The proper modern fix is to use **XCFrameworks** that include **both** device + and simulator slices, and have NMSSH link against those instead of raw static + `.a` libraries. +- We have two main paths: + 1. Keep using the existing RN package, but swap NMSSH’s underlying crypto/SSH + libs to an **XCFramework** (e.g., from `DimaRU/Libssh2Prebuild`), via a + tiny CocoaPods change. + 2. Build our **own RN native module** (TurboModule/JSI) that links **libssh2** + and **OpenSSL** directly (using or adapting the Libssh2Prebuild scripts), + fixing iOS Simulator support and also addressing Android reliability issues + (like double “disconnect” callbacks). --- @@ -17,42 +26,54 @@ ### Stack -* App → `react-native-ssh-sftp` -* iOS native → `NMSSH` (via the `aanah0/NMSSH` fork for a newer libssh2 baseline) -* `NMSSH` bundles **precompiled OpenSSL + libssh2** as static libraries. +- App → `react-native-ssh-sftp` +- iOS native → `NMSSH` (via the `aanah0/NMSSH` fork for a newer libssh2 + baseline) +- `NMSSH` bundles **precompiled OpenSSL + libssh2** as static libraries. ### Why iOS Simulator builds fail -* Xcode treats **device** and **simulator** as **different platforms**. Since Apple Silicon, both may be `arm64`, but they are **not interchangeable**: +- Xcode treats **device** and **simulator** as **different platforms**. Since + Apple Silicon, both may be `arm64`, but they are **not interchangeable**: + - Device slice: `ios-arm64` (platform: `iphoneos`) + - Simulator slices: `ios-arm64` and/or `ios-x86_64` (platform: + `iphonesimulator`) - * Device slice: `ios-arm64` (platform: `iphoneos`) - * Simulator slices: `ios-arm64` and/or `ios-x86_64` (platform: `iphonesimulator`) -* NMSSH’s vendored libs are device-only (`iphoneos`). When the Simulator build links those, the linker throws: +- NMSSH’s vendored libs are device-only (`iphoneos`). When the Simulator build + links those, the linker throws: ``` ld: building for 'iOS-simulator', but linking in object file .../libcrypto.a[arm64] built for 'iOS' ``` -* **XCFrameworks** solve this: they are a bundle containing the correct slices for both platforms. Xcode picks the proper slice automatically. -> Temporary hack (not recommended): exclude `arm64` for the simulator (`EXCLUDED_ARCHS[sdk=iphonesimulator*]=arm64`) to force an x86\_64 sim under Rosetta. This “works” but loses native-sim performance and is brittle. +- **XCFrameworks** solve this: they are a bundle containing the correct slices + for both platforms. Xcode picks the proper slice automatically. + +> Temporary hack (not recommended): exclude `arm64` for the simulator +> (`EXCLUDED_ARCHS[sdk=iphonesimulator*]=arm64`) to force an x86_64 sim under +> Rosetta. This “works” but loses native-sim performance and is brittle. --- ## Path 1 — Keep current RN package; replace NMSSH’s vendored libs with an XCFramework -**Goal:** Do *not* change `react-native-ssh-sftp` or the NMSSH **API**. Only change how NMSSH links to OpenSSL/libssh2. +**Goal:** Do _not_ change `react-native-ssh-sftp` or the NMSSH **API**. Only +change how NMSSH links to OpenSSL/libssh2. ### What we’ll use -* **`DimaRU/Libssh2Prebuild`**: ships a ready-made **XCFramework** (“CSSH”) that bundles **libssh2 + OpenSSL** with both **device** and **simulator** slices. -* CocoaPods can consume XCFrameworks via a **binary pod** (`vendored_frameworks`), but Libssh2Prebuild is published for **SwiftPM**. So we add a tiny **`CSSH-Binary` podspec** that points to its zipped XCFramework. +- **`DimaRU/Libssh2Prebuild`**: ships a ready-made **XCFramework** (“CSSH”) that + bundles **libssh2 + OpenSSL** with both **device** and **simulator** slices. +- CocoaPods can consume XCFrameworks via a **binary pod** + (`vendored_frameworks`), but Libssh2Prebuild is published for **SwiftPM**. So + we add a tiny **`CSSH-Binary` podspec** that points to its zipped XCFramework. ### Minimal changes 1. **Fork NMSSH** (from `aanah0/NMSSH`) and edit **`NMSSH.podspec`** - - * **Remove** the vendored static libs (the `.a` files). - * **Add** a dependency on `CSSH-Binary` (our binary pod that vends `CSSH.xcframework`). + - **Remove** the vendored static libs (the `.a` files). + - **Add** a dependency on `CSSH-Binary` (our binary pod that vends + `CSSH.xcframework`). **Podspec diff (conceptual):** @@ -89,30 +110,40 @@ end ``` - * You can host the zip yourself if you want deterministic supply (recommended for CI). - * Ensure license attributions (OpenSSL 3.x: Apache-2.0; libssh2: BSD-3-Clause) are included in our OSS notices. + - You can host the zip yourself if you want deterministic supply (recommended + for CI). + - Ensure license attributions (OpenSSL 3.x: Apache-2.0; libssh2: + BSD-3-Clause) are included in our OSS notices. 3. **Wire via Expo** (`expo-build-properties`) in `app.config.ts` ```ts [ - 'expo-build-properties', - { - ios: { - extraPods: [ - // Binary pod that vends the XCFramework - { name: 'CSSH-Binary', podspec: 'https://raw.githubusercontent.com/your-org/cssh-binary/main/CSSH-Binary.podspec' }, - // Our NMSSH fork that depends on CSSH-Binary - { name: 'NMSSH', git: 'https://github.com/your-org/NMSSH.git', branch: 'cssh-xcframework' }, - ], - }, - android: { - packagingOptions: { - pickFirst: ['META-INF/versions/9/OSGI-INF/MANIFEST.MF'], - }, - }, - }, - ] + 'expo-build-properties', + { + ios: { + extraPods: [ + // Binary pod that vends the XCFramework + { + name: 'CSSH-Binary', + podspec: + 'https://raw.githubusercontent.com/your-org/cssh-binary/main/CSSH-Binary.podspec', + }, + // Our NMSSH fork that depends on CSSH-Binary + { + name: 'NMSSH', + git: 'https://github.com/your-org/NMSSH.git', + branch: 'cssh-xcframework', + }, + ], + }, + android: { + packagingOptions: { + pickFirst: ['META-INF/versions/9/OSGI-INF/MANIFEST.MF'], + }, + }, + }, + ]; ``` 4. **Rebuild** @@ -125,88 +156,109 @@ **Pros** -* Small surface area; we keep the RN package API intact. -* Correct, future-proof device/simulator packaging via XCFrameworks. -* Easy to maintain once the podspecs are set. +- Small surface area; we keep the RN package API intact. +- Correct, future-proof device/simulator packaging via XCFrameworks. +- Easy to maintain once the podspecs are set. **Cons/Risks** -* We maintain a **fork of NMSSH** (podspec only). -* Potential conflicts with tools like **Flipper** if they also touch OpenSSL (rare; we can disable Flipper if needed). -* We rely on Libssh2Prebuild versions/tags (or build our own artifacts using their scripts). +- We maintain a **fork of NMSSH** (podspec only). +- Potential conflicts with tools like **Flipper** if they also touch OpenSSL + (rare; we can disable Flipper if needed). +- We rely on Libssh2Prebuild versions/tags (or build our own artifacts using + their scripts). --- ## Path 2 — Build our own RN module (TurboModule/JSI) with libssh2/OpenSSL -**Goal:** Replace `react-native-ssh-sftp` + NMSSH with a **modern RN Native Module** that links libssh2 directly and ships correct device/simulator binaries out of the box. +**Goal:** Replace `react-native-ssh-sftp` + NMSSH with a **modern RN Native +Module** that links libssh2 directly and ships correct device/simulator binaries +out of the box. ### Why consider this -* Full control over the native surface (events, error handling, cancellation, reconnects). -* Fix Android reliability issues we’ve observed (e.g., “disconnect” callback firing multiple times, causing dev crashes). -* Avoid legacy Objective-C wrapper constraints; use **TurboModules/JSI**. +- Full control over the native surface (events, error handling, cancellation, + reconnects). +- Fix Android reliability issues we’ve observed (e.g., “disconnect” callback + firing multiple times, causing dev crashes). +- Avoid legacy Objective-C wrapper constraints; use **TurboModules/JSI**. ### High-level plan **iOS** -* Use (or adapt) **Libssh2Prebuild build scripts** to produce our own **`libssh2.xcframework`** and **`OpenSSL.xcframework`** (or one combined framework). -* Publish them as a **binary CocoaPod** (like `CSSH-Binary`) *or* vendor the XCFrameworks in our module pod. -* Write a thin Obj-C++/C++ wrapper exposing the SSH API needed by JS (connect/auth/exec/sftp/streaming). -* Export via **TurboModule** (codegen) or **JSI** (C++), and provide a typed TS API in the RN package. +- Use (or adapt) **Libssh2Prebuild build scripts** to produce our own + **`libssh2.xcframework`** and **`OpenSSL.xcframework`** (or one combined + framework). +- Publish them as a **binary CocoaPod** (like `CSSH-Binary`) _or_ vendor the + XCFrameworks in our module pod. +- Write a thin Obj-C++/C++ wrapper exposing the SSH API needed by JS + (connect/auth/exec/sftp/streaming). +- Export via **TurboModule** (codegen) or **JSI** (C++), and provide a typed TS + API in the RN package. **Android** -* Build **libssh2** against **OpenSSL** (or MbedTLS) with the **NDK**. -* Package `.so` libs per ABI (`arm64-v8a`, `x86_64`, etc.). -* Implement JNI layer with strict **once-only** callbacks (disconnect must be idempotent), and make the public JS API promise/observable based. -* Add tests that assert no multiple “disconnect” emissions. +- Build **libssh2** against **OpenSSL** (or MbedTLS) with the **NDK**. +- Package `.so` libs per ABI (`arm64-v8a`, `x86_64`, etc.). +- Implement JNI layer with strict **once-only** callbacks (disconnect must be + idempotent), and make the public JS API promise/observable based. +- Add tests that assert no multiple “disconnect” emissions. **Common** -* Define a **stable JS API**: +- Define a **stable JS API**: + - Connection lifecycle (`connect`, `ready`, `disconnect`), + - Auth variants (password, key, agent if supported), + - Exec/PTY streaming, + - SFTP (get/put/mkdir/list/stat), + - Structured errors (error codes, host key checks, timeouts), + - Events (`onData`, `onExit`, `onError`, `onDisconnect`). - * Connection lifecycle (`connect`, `ready`, `disconnect`), - * Auth variants (password, key, agent if supported), - * Exec/PTY streaming, - * SFTP (get/put/mkdir/list/stat), - * Structured errors (error codes, host key checks, timeouts), - * Events (`onData`, `onExit`, `onError`, `onDisconnect`). -* **Testing/CI**: Simulated hosts (Docker) for integration tests; E2E with detox where feasible; CI matrix includes iOS Simulator and Android emulators. +- **Testing/CI**: Simulated hosts (Docker) for integration tests; E2E with detox + where feasible; CI matrix includes iOS Simulator and Android emulators. **Pros** -* Clean slate, better DX, fewer legacy constraints. -* We can ensure **simulator** support is first-class. -* Fixes Android issues definitively. +- Clean slate, better DX, fewer legacy constraints. +- We can ensure **simulator** support is first-class. +- Fixes Android issues definitively. **Cons** -* More initial engineering time. -* We own native maintenance across platforms. +- More initial engineering time. +- We own native maintenance across platforms. --- ## Known Android issue in current package -We’ve observed that **disconnect** can trigger the callback **more than once**, which crashes the app in dev (double resolve/reject or repeated event emission). If we keep the current package for now: +We’ve observed that **disconnect** can trigger the callback **more than once**, +which crashes the app in dev (double resolve/reject or repeated event emission). +If we keep the current package for now: -* Add a JS-side **guard** to make `disconnect()` idempotent (ignore subsequent calls/notifications after the first). -* If we fork, fix the native layer so it emits exactly once and cleans up listeners predictably. +- Add a JS-side **guard** to make `disconnect()` idempotent (ignore subsequent + calls/notifications after the first). +- If we fork, fix the native layer so it emits exactly once and cleans up + listeners predictably. -(If we pursue **Path 2**, we’ll design the native layer so all callbacks/promises are strictly single-shot and lifecycle-scoped.) +(If we pursue **Path 2**, we’ll design the native layer so all +callbacks/promises are strictly single-shot and lifecycle-scoped.) --- ## Recommendation -* **Short term:** Implement **Path 1**. It’s the smallest change to unblock Simulator builds: +- **Short term:** Implement **Path 1**. It’s the smallest change to unblock + Simulator builds: + - Add a `CSSH-Binary` binary pod (vend `CSSH.xcframework`). + - Fork NMSSH podspec to depend on it. + - Wire both via `expo-build-properties` `ios.extraPods`. - * Add a `CSSH-Binary` binary pod (vend `CSSH.xcframework`). - * Fork NMSSH podspec to depend on it. - * Wire both via `expo-build-properties` `ios.extraPods`. -* **Medium term:** Plan **Path 2** to remove legacy NMSSH constraints and resolve Android issues thoroughly using a Nitro/TurboModule with direct libssh2 bindings. +- **Medium term:** Plan **Path 2** to remove legacy NMSSH constraints and + resolve Android issues thoroughly using a Nitro/TurboModule with direct + libssh2 bindings. --- @@ -245,37 +297,46 @@ end ```ts plugins: [ - // ... - [ - 'expo-build-properties', - { - ios: { - extraPods: [ - { name: 'CSSH-Binary', podspec: 'https://raw.githubusercontent.com/your-org/cssh-binary/main/CSSH-Binary.podspec' }, - { name: 'NMSSH', git: 'https://github.com/your-org/NMSSH.git', branch: 'cssh-xcframework' }, - ], - }, - android: { - packagingOptions: { - pickFirst: ['META-INF/versions/9/OSGI-INF/MANIFEST.MF'], - }, - }, - }, - ], -] + // ... + [ + 'expo-build-properties', + { + ios: { + extraPods: [ + { + name: 'CSSH-Binary', + podspec: + 'https://raw.githubusercontent.com/your-org/cssh-binary/main/CSSH-Binary.podspec', + }, + { + name: 'NMSSH', + git: 'https://github.com/your-org/NMSSH.git', + branch: 'cssh-xcframework', + }, + ], + }, + android: { + packagingOptions: { + pickFirst: ['META-INF/versions/9/OSGI-INF/MANIFEST.MF'], + }, + }, + }, + ], +]; ``` ### D. Build/Release notes -* **Rebuild steps** +- **Rebuild steps** ```bash npx expo prebuild --platform ios --clean npx pod-install npx expo run:ios ``` -* **Licenses**: Include OpenSSL and libssh2 license texts in our OSS notice. -* **Flipper**: If linking conflicts appear, disable Flipper in iOS debug builds. + +- **Licenses**: Include OpenSSL and libssh2 license texts in our OSS notice. +- **Flipper**: If linking conflicts appear, disable Flipper in iOS debug builds. ### E. Temporary simulator workaround (not recommended long-term) @@ -285,16 +346,17 @@ In both the app target and Pods project: EXCLUDED_ARCHS[sdk=iphonesimulator*] = arm64 ``` -This forces an x86\_64 Simulator under Rosetta, avoiding the immediate link error but losing native-sim performance. +This forces an x86_64 Simulator under Rosetta, avoiding the immediate link error +but losing native-sim performance. --- **Decision log** -* ✅ Adopt Path 1 now (XCFramework via CSSH + NMSSH podspec tweak). -* 🕒 Plan Path 2 (custom RN module) to address Android bugs and own the full stack. - +- ✅ Adopt Path 1 now (XCFramework via CSSH + NMSSH podspec tweak). +- 🕒 Plan Path 2 (custom RN module) to address Android bugs and own the full + stack. # Updates -- 1. Implemented option 1. Seems to be working in simulator \ No newline at end of file +- 1. Implemented option 1. Seems to be working in simulator diff --git a/docs/todos.md b/docs/todos.md index 2e87302..795cf19 100644 --- a/docs/todos.md +++ b/docs/todos.md @@ -22,7 +22,7 @@ #### Styling and components - https://www.unistyl.es/ -- https://reactnativereusables.com/ +- https://reactnativereusables.com/ - https://github.com/Shopify/restyle - https://docs.expo.dev/versions/latest/sdk/segmented-control/ - https://docs.expo.dev/versions/latest/sdk/ui/ @@ -34,4 +34,4 @@ - https://docs.expo.dev/versions/latest/sdk/webview/ - https://docs.expo.dev/versions/latest/sdk/gl-view/ - https://code.visualstudio.com/docs/terminal/shell-integration -- https://github.com/termux/termux-app/wiki/Termux-Libraries/bd010af15b8434ba136c32fa70a50c504ea04363 \ No newline at end of file +- https://github.com/termux/termux-app/wiki/Termux-Libraries/bd010af15b8434ba136c32fa70a50c504ea04363 diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 1999bde..ba8d3b0 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -40,7 +40,7 @@ importers: version: 1.5.20(react-native@0.81.4(@babel/core@7.28.3)(@types/react@19.1.12)(react@19.1.0)) '@expo/vector-icons': specifier: ^15.0.2 - version: 15.0.2(expo-font@14.0.8(expo@54.0.3)(react-native@0.81.4(@babel/core@7.28.3)(@types/react@19.1.12)(react@19.1.0))(react@19.1.0))(react-native@0.81.4(@babel/core@7.28.3)(@types/react@19.1.12)(react@19.1.0))(react@19.1.0) + version: 15.0.2(expo-font@14.0.8(expo@54.0.6)(react-native@0.81.4(@babel/core@7.28.3)(@types/react@19.1.12)(react@19.1.0))(react@19.1.0))(react-native@0.81.4(@babel/core@7.28.3)(@types/react@19.1.12)(react@19.1.0))(react@19.1.0) '@fressh/assets': specifier: workspace:* version: link:../../packages/assets @@ -66,62 +66,62 @@ importers: specifier: ^5.87.1 version: 5.87.1(react@19.1.0) expo: - specifier: 54.0.3 - version: 54.0.3(@babel/core@7.28.3)(@expo/metro-runtime@6.1.1)(expo-router@6.0.1)(react-native@0.81.4(@babel/core@7.28.3)(@types/react@19.1.12)(react@19.1.0))(react@19.1.0) + specifier: 54.0.6 + version: 54.0.6(@babel/core@7.28.3)(@expo/metro-runtime@6.1.1)(expo-router@6.0.3)(react-native@0.81.4(@babel/core@7.28.3)(@types/react@19.1.12)(react@19.1.0))(react@19.1.0) expo-build-properties: specifier: ~1.0.8 - version: 1.0.8(expo@54.0.3) + version: 1.0.8(expo@54.0.6) expo-clipboard: specifier: ~8.0.7 - version: 8.0.7(expo@54.0.3)(react-native@0.81.4(@babel/core@7.28.3)(@types/react@19.1.12)(react@19.1.0))(react@19.1.0) + version: 8.0.7(expo@54.0.6)(react-native@0.81.4(@babel/core@7.28.3)(@types/react@19.1.12)(react@19.1.0))(react@19.1.0) expo-constants: specifier: ~18.0.8 - version: 18.0.8(expo@54.0.3)(react-native@0.81.4(@babel/core@7.28.3)(@types/react@19.1.12)(react@19.1.0)) + version: 18.0.8(expo@54.0.6)(react-native@0.81.4(@babel/core@7.28.3)(@types/react@19.1.12)(react@19.1.0)) expo-crypto: specifier: ~15.0.7 - version: 15.0.7(expo@54.0.3) + version: 15.0.7(expo@54.0.6) expo-dev-client: specifier: ~6.0.12 - version: 6.0.12(expo@54.0.3) + version: 6.0.12(expo@54.0.6) expo-document-picker: specifier: ~14.0.7 - version: 14.0.7(expo@54.0.3) + version: 14.0.7(expo@54.0.6) expo-file-system: - specifier: ~19.0.13 - version: 19.0.13(expo@54.0.3)(react-native@0.81.4(@babel/core@7.28.3)(@types/react@19.1.12)(react@19.1.0)) + specifier: ~19.0.14 + version: 19.0.14(expo@54.0.6)(react-native@0.81.4(@babel/core@7.28.3)(@types/react@19.1.12)(react@19.1.0)) expo-font: specifier: ~14.0.8 - version: 14.0.8(expo@54.0.3)(react-native@0.81.4(@babel/core@7.28.3)(@types/react@19.1.12)(react@19.1.0))(react@19.1.0) + version: 14.0.8(expo@54.0.6)(react-native@0.81.4(@babel/core@7.28.3)(@types/react@19.1.12)(react@19.1.0))(react@19.1.0) expo-haptics: specifier: ~15.0.7 - version: 15.0.7(expo@54.0.3) + version: 15.0.7(expo@54.0.6) expo-image: specifier: ~3.0.8 - version: 3.0.8(expo@54.0.3)(react-native-web@0.21.1(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(react-native@0.81.4(@babel/core@7.28.3)(@types/react@19.1.12)(react@19.1.0))(react@19.1.0) + version: 3.0.8(expo@54.0.6)(react-native-web@0.21.1(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(react-native@0.81.4(@babel/core@7.28.3)(@types/react@19.1.12)(react@19.1.0))(react@19.1.0) expo-linking: specifier: ~8.0.8 - version: 8.0.8(expo@54.0.3)(react-native@0.81.4(@babel/core@7.28.3)(@types/react@19.1.12)(react@19.1.0))(react@19.1.0) + version: 8.0.8(expo@54.0.6)(react-native@0.81.4(@babel/core@7.28.3)(@types/react@19.1.12)(react@19.1.0))(react@19.1.0) expo-router: - specifier: 6.0.1 - version: 6.0.1(@types/react@19.1.12)(expo-constants@18.0.8)(expo-linking@8.0.8)(expo@54.0.3)(react-dom@19.1.0(react@19.1.0))(react-native-gesture-handler@2.28.0(react-native@0.81.4(@babel/core@7.28.3)(@types/react@19.1.12)(react@19.1.0))(react@19.1.0))(react-native-reanimated@4.1.0(@babel/core@7.28.3)(react-native-worklets@0.5.1(@babel/core@7.28.3)(react-native@0.81.4(@babel/core@7.28.3)(@types/react@19.1.12)(react@19.1.0))(react@19.1.0))(react-native@0.81.4(@babel/core@7.28.3)(@types/react@19.1.12)(react@19.1.0))(react@19.1.0))(react-native-safe-area-context@5.6.1(react-native@0.81.4(@babel/core@7.28.3)(@types/react@19.1.12)(react@19.1.0))(react@19.1.0))(react-native-screens@4.16.0(react-native@0.81.4(@babel/core@7.28.3)(@types/react@19.1.12)(react@19.1.0))(react@19.1.0))(react-native-web@0.21.1(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(react-native@0.81.4(@babel/core@7.28.3)(@types/react@19.1.12)(react@19.1.0))(react@19.1.0) + specifier: 6.0.3 + version: 6.0.3(@expo/metro-runtime@6.1.1)(@types/react@19.1.12)(expo-constants@18.0.8)(expo-linking@8.0.8)(expo@54.0.6)(react-dom@19.1.0(react@19.1.0))(react-native-gesture-handler@2.28.0(react-native@0.81.4(@babel/core@7.28.3)(@types/react@19.1.12)(react@19.1.0))(react@19.1.0))(react-native-reanimated@4.1.0(@babel/core@7.28.3)(react-native-worklets@0.5.1(@babel/core@7.28.3)(react-native@0.81.4(@babel/core@7.28.3)(@types/react@19.1.12)(react@19.1.0))(react@19.1.0))(react-native@0.81.4(@babel/core@7.28.3)(@types/react@19.1.12)(react@19.1.0))(react@19.1.0))(react-native-safe-area-context@5.6.1(react-native@0.81.4(@babel/core@7.28.3)(@types/react@19.1.12)(react@19.1.0))(react@19.1.0))(react-native-screens@4.16.0(react-native@0.81.4(@babel/core@7.28.3)(@types/react@19.1.12)(react@19.1.0))(react@19.1.0))(react-native-web@0.21.1(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(react-native@0.81.4(@babel/core@7.28.3)(@types/react@19.1.12)(react@19.1.0))(react@19.1.0) expo-secure-store: specifier: ~15.0.7 - version: 15.0.7(expo@54.0.3) + version: 15.0.7(expo@54.0.6) expo-splash-screen: - specifier: ~31.0.9 - version: 31.0.9(expo@54.0.3) + specifier: ~31.0.10 + version: 31.0.10(expo@54.0.6) expo-status-bar: specifier: ~3.0.8 version: 3.0.8(react-native@0.81.4(@babel/core@7.28.3)(@types/react@19.1.12)(react@19.1.0))(react@19.1.0) expo-symbols: specifier: ~1.0.7 - version: 1.0.7(expo@54.0.3)(react-native@0.81.4(@babel/core@7.28.3)(@types/react@19.1.12)(react@19.1.0)) + version: 1.0.7(expo@54.0.6)(react-native@0.81.4(@babel/core@7.28.3)(@types/react@19.1.12)(react@19.1.0)) expo-system-ui: specifier: ~6.0.7 - version: 6.0.7(expo@54.0.3)(react-native-web@0.21.1(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(react-native@0.81.4(@babel/core@7.28.3)(@types/react@19.1.12)(react@19.1.0)) + version: 6.0.7(expo@54.0.6)(react-native-web@0.21.1(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(react-native@0.81.4(@babel/core@7.28.3)(@types/react@19.1.12)(react@19.1.0)) expo-web-browser: specifier: ~15.0.7 - version: 15.0.7(expo@54.0.3)(react-native@0.81.4(@babel/core@7.28.3)(@types/react@19.1.12)(react@19.1.0)) + version: 15.0.7(expo@54.0.6)(react-native@0.81.4(@babel/core@7.28.3)(@types/react@19.1.12)(react@19.1.0)) react: specifier: 19.1.0 version: 19.1.0 @@ -1008,8 +1008,8 @@ packages: resolution: {integrity: sha512-Z5kJ+wU3oA7MMIqVR9tyZRtjYPr4OC004Q4Rw7pgOKUOKkJfZ3O24nz3WYfGRpMDNmcOi3TwQOmgm7B7Tpii0w==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@expo/cli@54.0.2': - resolution: {integrity: sha512-WaMwVUC1twawsicKS/jabrc9b56EYLWDa1JvF1oopEE8H15+KLsgfjqN9IWtIR2wu5d6zhOT3ikTLc2cN4S4/Q==} + '@expo/cli@54.0.4': + resolution: {integrity: sha512-n3UukNRL8eG1XyN/sI6UCxvnJqhHxmtgReP2hBJnN9E1R+nPWdYxysV6hw1I/FghL0O/eZou2WTY1E8lGQ3Frw==} hasBin: true peerDependencies: expo: '*' @@ -1107,8 +1107,8 @@ packages: '@expo/plist@0.4.7': resolution: {integrity: sha512-dGxqHPvCZKeRKDU1sJZMmuyVtcASuSYh1LPFVaM1DuffqPL36n6FMEL0iUqq2Tx3xhWk8wCnWl34IKplUjJDdA==} - '@expo/prebuild-config@54.0.1': - resolution: {integrity: sha512-f2FFDQlIh83rc89/AOdRBtO9nwkE4BCSji0oPBSq0YmAUSXZE7q/cYKABkArZNjuuwjb6jRjD8JfSMcwV7ybTA==} + '@expo/prebuild-config@54.0.3': + resolution: {integrity: sha512-okf6Umaz1VniKmm+pA37QHBzB9XlRHvO1Qh3VbUezy07LTkz87kXUW7uLMmrA319WLavWSVORTXeR0jBRihObA==} peerDependencies: expo: '*' @@ -3640,8 +3640,8 @@ packages: peerDependencies: expo: '*' - expo-file-system@19.0.13: - resolution: {integrity: sha512-ACDxp9/HA30XxqLEX39dTNvjf/9R64woMoeySu02xoclGl98VsHTQhKk0GF4BxjD0KwA9jamS/scTaC9P0BWLA==} + expo-file-system@19.0.14: + resolution: {integrity: sha512-0CA7O5IYhab11TlxQlJAx0Xm9pdkk/zEHNiW+Hh/T4atWi9U/J38CIp7iNYSrBvy9dC3rJbze5D1ANcKKr4mSQ==} peerDependencies: expo: '*' react-native: '*' @@ -3699,9 +3699,10 @@ packages: react: '*' react-native: '*' - expo-router@6.0.1: - resolution: {integrity: sha512-5wXkWyNMqUbjCWH0PRkOM0P6UsgLVdgchDkiLz5FY7HfU00ToBcxij965bqtlaATBgoaIo4DuLu6EgxewrKJ8Q==} + expo-router@6.0.3: + resolution: {integrity: sha512-TNBHE7qMutUB6GlXciNRZYH1H6bxXR6knzsEHQoBypSvCHdFYpq/EvUtc5BG+umHjTJaJq3WVzDFJ8Xl/WP0+w==} peerDependencies: + '@expo/metro-runtime': ^6.1.2 '@react-navigation/drawer': ^7.5.0 '@testing-library/react-native': '>= 12.0.0' expo: '*' @@ -3737,8 +3738,8 @@ packages: peerDependencies: expo: '*' - expo-splash-screen@31.0.9: - resolution: {integrity: sha512-pYLWFrEHn/c8e1a8oDzrlcyYI08oG4i37KA+VN5wwoC1DsQ0rm3kyAk0bmoydV1mBzNfXQFYbA1BGftXJl1f0w==} + expo-splash-screen@31.0.10: + resolution: {integrity: sha512-i6g9IK798mae4yvflstQ1HkgahIJ6exzTCTw4vEdxV0J2SwiW3Tj+CwRjf0te7Zsb+7dDQhBTmGZwdv00VER2A==} peerDependencies: expo: '*' @@ -3775,8 +3776,8 @@ packages: expo: '*' react-native: '*' - expo@54.0.3: - resolution: {integrity: sha512-hh9PgItWlG3IjjkzkavxVGqsZ8fdWsDw2CLGyOTDx2SDsHbFpYZwL0HVrmMSv8mCI2qXkwutt5fyPtAPHd/VhQ==} + expo@54.0.6: + resolution: {integrity: sha512-fzOrhdMNJiNlQyj7Gj1GvEzwIx1XaOLWRVOoTtaOkWckYJzgsTnnUQhFFGEfb8Vv0tZGeWzx6CFXqjcraxYT7g==} hasBin: true peerDependencies: '@expo/dom-webview': '*' @@ -7812,7 +7813,7 @@ snapshots: '@eslint/core': 0.15.2 levn: 0.4.1 - '@expo/cli@54.0.2(expo-router@6.0.1)(expo@54.0.3)(react-native@0.81.4(@babel/core@7.28.3)(@types/react@19.1.12)(react@19.1.0))': + '@expo/cli@54.0.4(expo-router@6.0.3)(expo@54.0.6)(react-native@0.81.4(@babel/core@7.28.3)(@types/react@19.1.12)(react@19.1.0))': dependencies: '@0no-co/graphql.web': 1.2.0 '@expo/code-signing-certificates': 0.0.5 @@ -7823,11 +7824,11 @@ snapshots: '@expo/image-utils': 0.8.7 '@expo/json-file': 10.0.7 '@expo/metro': 0.1.1 - '@expo/metro-config': 54.0.3(expo@54.0.3) + '@expo/metro-config': 54.0.3(expo@54.0.6) '@expo/osascript': 2.3.7 '@expo/package-manager': 1.9.7 '@expo/plist': 0.4.7 - '@expo/prebuild-config': 54.0.1(expo@54.0.3) + '@expo/prebuild-config': 54.0.3(expo@54.0.6) '@expo/schema-utils': 0.1.7 '@expo/server': 0.7.4 '@expo/spawn-async': 1.7.2 @@ -7847,7 +7848,7 @@ snapshots: connect: 3.7.0 debug: 4.4.1 env-editor: 0.4.2 - expo: 54.0.3(@babel/core@7.28.3)(@expo/metro-runtime@6.1.1)(expo-router@6.0.1)(react-native@0.81.4(@babel/core@7.28.3)(@types/react@19.1.12)(react@19.1.0))(react@19.1.0) + expo: 54.0.6(@babel/core@7.28.3)(@expo/metro-runtime@6.1.1)(expo-router@6.0.3)(react-native@0.81.4(@babel/core@7.28.3)(@types/react@19.1.12)(react@19.1.0))(react@19.1.0) freeport-async: 2.0.0 getenv: 2.0.0 glob: 10.4.5 @@ -7879,7 +7880,7 @@ snapshots: wrap-ansi: 7.0.0 ws: 8.18.3 optionalDependencies: - expo-router: 6.0.1(@types/react@19.1.12)(expo-constants@18.0.8)(expo-linking@8.0.8)(expo@54.0.3)(react-dom@19.1.0(react@19.1.0))(react-native-gesture-handler@2.28.0(react-native@0.81.4(@babel/core@7.28.3)(@types/react@19.1.12)(react@19.1.0))(react@19.1.0))(react-native-reanimated@4.1.0(@babel/core@7.28.3)(react-native-worklets@0.5.1(@babel/core@7.28.3)(react-native@0.81.4(@babel/core@7.28.3)(@types/react@19.1.12)(react@19.1.0))(react@19.1.0))(react-native@0.81.4(@babel/core@7.28.3)(@types/react@19.1.12)(react@19.1.0))(react@19.1.0))(react-native-safe-area-context@5.6.1(react-native@0.81.4(@babel/core@7.28.3)(@types/react@19.1.12)(react@19.1.0))(react@19.1.0))(react-native-screens@4.16.0(react-native@0.81.4(@babel/core@7.28.3)(@types/react@19.1.12)(react@19.1.0))(react@19.1.0))(react-native-web@0.21.1(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(react-native@0.81.4(@babel/core@7.28.3)(@types/react@19.1.12)(react@19.1.0))(react@19.1.0) + expo-router: 6.0.3(@expo/metro-runtime@6.1.1)(@types/react@19.1.12)(expo-constants@18.0.8)(expo-linking@8.0.8)(expo@54.0.6)(react-dom@19.1.0(react@19.1.0))(react-native-gesture-handler@2.28.0(react-native@0.81.4(@babel/core@7.28.3)(@types/react@19.1.12)(react@19.1.0))(react@19.1.0))(react-native-reanimated@4.1.0(@babel/core@7.28.3)(react-native-worklets@0.5.1(@babel/core@7.28.3)(react-native@0.81.4(@babel/core@7.28.3)(@types/react@19.1.12)(react@19.1.0))(react@19.1.0))(react-native@0.81.4(@babel/core@7.28.3)(@types/react@19.1.12)(react@19.1.0))(react@19.1.0))(react-native-safe-area-context@5.6.1(react-native@0.81.4(@babel/core@7.28.3)(@types/react@19.1.12)(react@19.1.0))(react@19.1.0))(react-native-screens@4.16.0(react-native@0.81.4(@babel/core@7.28.3)(@types/react@19.1.12)(react@19.1.0))(react@19.1.0))(react-native-web@0.21.1(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(react-native@0.81.4(@babel/core@7.28.3)(@types/react@19.1.12)(react@19.1.0))(react@19.1.0) react-native: 0.81.4(@babel/core@7.28.3)(@types/react@19.1.12)(react@19.1.0) transitivePeerDependencies: - bufferutil @@ -8034,7 +8035,7 @@ snapshots: '@babel/code-frame': 7.10.4 json5: 2.2.3 - '@expo/metro-config@54.0.3(expo@54.0.3)': + '@expo/metro-config@54.0.3(expo@54.0.6)': dependencies: '@babel/code-frame': 7.27.1 '@babel/core': 7.28.3 @@ -8058,16 +8059,16 @@ snapshots: postcss: 8.4.49 resolve-from: 5.0.0 optionalDependencies: - expo: 54.0.3(@babel/core@7.28.3)(@expo/metro-runtime@6.1.1)(expo-router@6.0.1)(react-native@0.81.4(@babel/core@7.28.3)(@types/react@19.1.12)(react@19.1.0))(react@19.1.0) + expo: 54.0.6(@babel/core@7.28.3)(@expo/metro-runtime@6.1.1)(expo-router@6.0.3)(react-native@0.81.4(@babel/core@7.28.3)(@types/react@19.1.12)(react@19.1.0))(react@19.1.0) transitivePeerDependencies: - bufferutil - supports-color - utf-8-validate - '@expo/metro-runtime@6.1.1(expo@54.0.3)(react-dom@19.1.0(react@19.1.0))(react-native@0.81.4(@babel/core@7.28.3)(@types/react@19.1.12)(react@19.1.0))(react@19.1.0)': + '@expo/metro-runtime@6.1.1(expo@54.0.6)(react-dom@19.1.0(react@19.1.0))(react-native@0.81.4(@babel/core@7.28.3)(@types/react@19.1.12)(react@19.1.0))(react@19.1.0)': dependencies: anser: 1.4.10 - expo: 54.0.3(@babel/core@7.28.3)(@expo/metro-runtime@6.1.1)(expo-router@6.0.1)(react-native@0.81.4(@babel/core@7.28.3)(@types/react@19.1.12)(react@19.1.0))(react@19.1.0) + expo: 54.0.6(@babel/core@7.28.3)(@expo/metro-runtime@6.1.1)(expo-router@6.0.3)(react-native@0.81.4(@babel/core@7.28.3)(@types/react@19.1.12)(react@19.1.0))(react@19.1.0) pretty-format: 29.7.0 react: 19.1.0 react-native: 0.81.4(@babel/core@7.28.3)(@types/react@19.1.12)(react@19.1.0) @@ -8121,16 +8122,16 @@ snapshots: base64-js: 1.5.1 xmlbuilder: 15.1.1 - '@expo/prebuild-config@54.0.1(expo@54.0.3)': + '@expo/prebuild-config@54.0.3(expo@54.0.6)': dependencies: - '@expo/config': 12.0.8 + '@expo/config': 12.0.9 '@expo/config-plugins': 54.0.1 '@expo/config-types': 54.0.8 '@expo/image-utils': 0.8.7 '@expo/json-file': 10.0.7 '@react-native/normalize-colors': 0.81.4 debug: 4.4.1 - expo: 54.0.3(@babel/core@7.28.3)(@expo/metro-runtime@6.1.1)(expo-router@6.0.1)(react-native@0.81.4(@babel/core@7.28.3)(@types/react@19.1.12)(react@19.1.0))(react@19.1.0) + expo: 54.0.6(@babel/core@7.28.3)(@expo/metro-runtime@6.1.1)(expo-router@6.0.3)(react-native@0.81.4(@babel/core@7.28.3)(@types/react@19.1.12)(react@19.1.0))(react@19.1.0) resolve-from: 5.0.0 semver: 7.7.2 xml2js: 0.6.0 @@ -8154,9 +8155,9 @@ snapshots: '@expo/sudo-prompt@9.3.2': {} - '@expo/vector-icons@15.0.2(expo-font@14.0.8(expo@54.0.3)(react-native@0.81.4(@babel/core@7.28.3)(@types/react@19.1.12)(react@19.1.0))(react@19.1.0))(react-native@0.81.4(@babel/core@7.28.3)(@types/react@19.1.12)(react@19.1.0))(react@19.1.0)': + '@expo/vector-icons@15.0.2(expo-font@14.0.8(expo@54.0.6)(react-native@0.81.4(@babel/core@7.28.3)(@types/react@19.1.12)(react@19.1.0))(react@19.1.0))(react-native@0.81.4(@babel/core@7.28.3)(@types/react@19.1.12)(react@19.1.0))(react@19.1.0)': dependencies: - expo-font: 14.0.8(expo@54.0.3)(react-native@0.81.4(@babel/core@7.28.3)(@types/react@19.1.12)(react@19.1.0))(react@19.1.0) + expo-font: 14.0.8(expo@54.0.6)(react-native@0.81.4(@babel/core@7.28.3)(@types/react@19.1.12)(react@19.1.0))(react@19.1.0) react: 19.1.0 react-native: 0.81.4(@babel/core@7.28.3)(@types/react@19.1.12)(react@19.1.0) @@ -9879,7 +9880,7 @@ snapshots: '@babel/plugin-syntax-private-property-in-object': 7.14.5(@babel/core@7.28.3) '@babel/plugin-syntax-top-level-await': 7.14.5(@babel/core@7.28.3) - babel-preset-expo@54.0.1(@babel/core@7.28.3)(@babel/runtime@7.28.3)(expo@54.0.3)(react-refresh@0.14.2): + babel-preset-expo@54.0.1(@babel/core@7.28.3)(@babel/runtime@7.28.3)(expo@54.0.6)(react-refresh@0.14.2): dependencies: '@babel/helper-module-imports': 7.27.1 '@babel/plugin-proposal-decorators': 7.28.0(@babel/core@7.28.3) @@ -9906,7 +9907,7 @@ snapshots: resolve-from: 5.0.0 optionalDependencies: '@babel/runtime': 7.28.3 - expo: 54.0.3(@babel/core@7.28.3)(@expo/metro-runtime@6.1.1)(expo-router@6.0.1)(react-native@0.81.4(@babel/core@7.28.3)(@types/react@19.1.12)(react@19.1.0))(react@19.1.0) + expo: 54.0.6(@babel/core@7.28.3)(@expo/metro-runtime@6.1.1)(expo-router@6.0.3)(react-native@0.81.4(@babel/core@7.28.3)(@types/react@19.1.12)(react@19.1.0))(react@19.1.0) transitivePeerDependencies: - '@babel/core' - supports-color @@ -10954,93 +10955,93 @@ snapshots: signal-exit: 3.0.7 strip-final-newline: 2.0.0 - expo-asset@12.0.8(expo@54.0.3)(react-native@0.81.4(@babel/core@7.28.3)(@types/react@19.1.12)(react@19.1.0))(react@19.1.0): + expo-asset@12.0.8(expo@54.0.6)(react-native@0.81.4(@babel/core@7.28.3)(@types/react@19.1.12)(react@19.1.0))(react@19.1.0): dependencies: '@expo/image-utils': 0.8.7 - expo: 54.0.3(@babel/core@7.28.3)(@expo/metro-runtime@6.1.1)(expo-router@6.0.1)(react-native@0.81.4(@babel/core@7.28.3)(@types/react@19.1.12)(react@19.1.0))(react@19.1.0) - expo-constants: 18.0.8(expo@54.0.3)(react-native@0.81.4(@babel/core@7.28.3)(@types/react@19.1.12)(react@19.1.0)) + expo: 54.0.6(@babel/core@7.28.3)(@expo/metro-runtime@6.1.1)(expo-router@6.0.3)(react-native@0.81.4(@babel/core@7.28.3)(@types/react@19.1.12)(react@19.1.0))(react@19.1.0) + expo-constants: 18.0.8(expo@54.0.6)(react-native@0.81.4(@babel/core@7.28.3)(@types/react@19.1.12)(react@19.1.0)) react: 19.1.0 react-native: 0.81.4(@babel/core@7.28.3)(@types/react@19.1.12)(react@19.1.0) transitivePeerDependencies: - supports-color - expo-build-properties@1.0.8(expo@54.0.3): + expo-build-properties@1.0.8(expo@54.0.6): dependencies: ajv: 8.17.1 - expo: 54.0.3(@babel/core@7.28.3)(@expo/metro-runtime@6.1.1)(expo-router@6.0.1)(react-native@0.81.4(@babel/core@7.28.3)(@types/react@19.1.12)(react@19.1.0))(react@19.1.0) + expo: 54.0.6(@babel/core@7.28.3)(@expo/metro-runtime@6.1.1)(expo-router@6.0.3)(react-native@0.81.4(@babel/core@7.28.3)(@types/react@19.1.12)(react@19.1.0))(react@19.1.0) semver: 7.7.2 - expo-clipboard@8.0.7(expo@54.0.3)(react-native@0.81.4(@babel/core@7.28.3)(@types/react@19.1.12)(react@19.1.0))(react@19.1.0): + expo-clipboard@8.0.7(expo@54.0.6)(react-native@0.81.4(@babel/core@7.28.3)(@types/react@19.1.12)(react@19.1.0))(react@19.1.0): dependencies: - expo: 54.0.3(@babel/core@7.28.3)(@expo/metro-runtime@6.1.1)(expo-router@6.0.1)(react-native@0.81.4(@babel/core@7.28.3)(@types/react@19.1.12)(react@19.1.0))(react@19.1.0) + expo: 54.0.6(@babel/core@7.28.3)(@expo/metro-runtime@6.1.1)(expo-router@6.0.3)(react-native@0.81.4(@babel/core@7.28.3)(@types/react@19.1.12)(react@19.1.0))(react@19.1.0) react: 19.1.0 react-native: 0.81.4(@babel/core@7.28.3)(@types/react@19.1.12)(react@19.1.0) - expo-constants@18.0.8(expo@54.0.3)(react-native@0.81.4(@babel/core@7.28.3)(@types/react@19.1.12)(react@19.1.0)): + expo-constants@18.0.8(expo@54.0.6)(react-native@0.81.4(@babel/core@7.28.3)(@types/react@19.1.12)(react@19.1.0)): dependencies: '@expo/config': 12.0.8 '@expo/env': 2.0.7 - expo: 54.0.3(@babel/core@7.28.3)(@expo/metro-runtime@6.1.1)(expo-router@6.0.1)(react-native@0.81.4(@babel/core@7.28.3)(@types/react@19.1.12)(react@19.1.0))(react@19.1.0) + expo: 54.0.6(@babel/core@7.28.3)(@expo/metro-runtime@6.1.1)(expo-router@6.0.3)(react-native@0.81.4(@babel/core@7.28.3)(@types/react@19.1.12)(react@19.1.0))(react@19.1.0) react-native: 0.81.4(@babel/core@7.28.3)(@types/react@19.1.12)(react@19.1.0) transitivePeerDependencies: - supports-color - expo-crypto@15.0.7(expo@54.0.3): + expo-crypto@15.0.7(expo@54.0.6): dependencies: base64-js: 1.5.1 - expo: 54.0.3(@babel/core@7.28.3)(@expo/metro-runtime@6.1.1)(expo-router@6.0.1)(react-native@0.81.4(@babel/core@7.28.3)(@types/react@19.1.12)(react@19.1.0))(react@19.1.0) + expo: 54.0.6(@babel/core@7.28.3)(@expo/metro-runtime@6.1.1)(expo-router@6.0.3)(react-native@0.81.4(@babel/core@7.28.3)(@types/react@19.1.12)(react@19.1.0))(react@19.1.0) - expo-dev-client@6.0.12(expo@54.0.3): + expo-dev-client@6.0.12(expo@54.0.6): dependencies: - expo: 54.0.3(@babel/core@7.28.3)(@expo/metro-runtime@6.1.1)(expo-router@6.0.1)(react-native@0.81.4(@babel/core@7.28.3)(@types/react@19.1.12)(react@19.1.0))(react@19.1.0) - expo-dev-launcher: 6.0.11(expo@54.0.3) - expo-dev-menu: 7.0.11(expo@54.0.3) - expo-dev-menu-interface: 2.0.0(expo@54.0.3) - expo-manifests: 1.0.8(expo@54.0.3) - expo-updates-interface: 2.0.0(expo@54.0.3) + expo: 54.0.6(@babel/core@7.28.3)(@expo/metro-runtime@6.1.1)(expo-router@6.0.3)(react-native@0.81.4(@babel/core@7.28.3)(@types/react@19.1.12)(react@19.1.0))(react@19.1.0) + expo-dev-launcher: 6.0.11(expo@54.0.6) + expo-dev-menu: 7.0.11(expo@54.0.6) + expo-dev-menu-interface: 2.0.0(expo@54.0.6) + expo-manifests: 1.0.8(expo@54.0.6) + expo-updates-interface: 2.0.0(expo@54.0.6) transitivePeerDependencies: - supports-color - expo-dev-launcher@6.0.11(expo@54.0.3): + expo-dev-launcher@6.0.11(expo@54.0.6): dependencies: - expo: 54.0.3(@babel/core@7.28.3)(@expo/metro-runtime@6.1.1)(expo-router@6.0.1)(react-native@0.81.4(@babel/core@7.28.3)(@types/react@19.1.12)(react@19.1.0))(react@19.1.0) - expo-dev-menu: 7.0.11(expo@54.0.3) - expo-manifests: 1.0.8(expo@54.0.3) + expo: 54.0.6(@babel/core@7.28.3)(@expo/metro-runtime@6.1.1)(expo-router@6.0.3)(react-native@0.81.4(@babel/core@7.28.3)(@types/react@19.1.12)(react@19.1.0))(react@19.1.0) + expo-dev-menu: 7.0.11(expo@54.0.6) + expo-manifests: 1.0.8(expo@54.0.6) transitivePeerDependencies: - supports-color - expo-dev-menu-interface@2.0.0(expo@54.0.3): + expo-dev-menu-interface@2.0.0(expo@54.0.6): dependencies: - expo: 54.0.3(@babel/core@7.28.3)(@expo/metro-runtime@6.1.1)(expo-router@6.0.1)(react-native@0.81.4(@babel/core@7.28.3)(@types/react@19.1.12)(react@19.1.0))(react@19.1.0) + expo: 54.0.6(@babel/core@7.28.3)(@expo/metro-runtime@6.1.1)(expo-router@6.0.3)(react-native@0.81.4(@babel/core@7.28.3)(@types/react@19.1.12)(react@19.1.0))(react@19.1.0) - expo-dev-menu@7.0.11(expo@54.0.3): + expo-dev-menu@7.0.11(expo@54.0.6): dependencies: - expo: 54.0.3(@babel/core@7.28.3)(@expo/metro-runtime@6.1.1)(expo-router@6.0.1)(react-native@0.81.4(@babel/core@7.28.3)(@types/react@19.1.12)(react@19.1.0))(react@19.1.0) - expo-dev-menu-interface: 2.0.0(expo@54.0.3) + expo: 54.0.6(@babel/core@7.28.3)(@expo/metro-runtime@6.1.1)(expo-router@6.0.3)(react-native@0.81.4(@babel/core@7.28.3)(@types/react@19.1.12)(react@19.1.0))(react@19.1.0) + expo-dev-menu-interface: 2.0.0(expo@54.0.6) - expo-document-picker@14.0.7(expo@54.0.3): + expo-document-picker@14.0.7(expo@54.0.6): dependencies: - expo: 54.0.3(@babel/core@7.28.3)(@expo/metro-runtime@6.1.1)(expo-router@6.0.1)(react-native@0.81.4(@babel/core@7.28.3)(@types/react@19.1.12)(react@19.1.0))(react@19.1.0) + expo: 54.0.6(@babel/core@7.28.3)(@expo/metro-runtime@6.1.1)(expo-router@6.0.3)(react-native@0.81.4(@babel/core@7.28.3)(@types/react@19.1.12)(react@19.1.0))(react@19.1.0) - expo-file-system@19.0.13(expo@54.0.3)(react-native@0.81.4(@babel/core@7.28.3)(@types/react@19.1.12)(react@19.1.0)): + expo-file-system@19.0.14(expo@54.0.6)(react-native@0.81.4(@babel/core@7.28.3)(@types/react@19.1.12)(react@19.1.0)): dependencies: - expo: 54.0.3(@babel/core@7.28.3)(@expo/metro-runtime@6.1.1)(expo-router@6.0.1)(react-native@0.81.4(@babel/core@7.28.3)(@types/react@19.1.12)(react@19.1.0))(react@19.1.0) + expo: 54.0.6(@babel/core@7.28.3)(@expo/metro-runtime@6.1.1)(expo-router@6.0.3)(react-native@0.81.4(@babel/core@7.28.3)(@types/react@19.1.12)(react@19.1.0))(react@19.1.0) react-native: 0.81.4(@babel/core@7.28.3)(@types/react@19.1.12)(react@19.1.0) - expo-font@14.0.8(expo@54.0.3)(react-native@0.81.4(@babel/core@7.28.3)(@types/react@19.1.12)(react@19.1.0))(react@19.1.0): + expo-font@14.0.8(expo@54.0.6)(react-native@0.81.4(@babel/core@7.28.3)(@types/react@19.1.12)(react@19.1.0))(react@19.1.0): dependencies: - expo: 54.0.3(@babel/core@7.28.3)(@expo/metro-runtime@6.1.1)(expo-router@6.0.1)(react-native@0.81.4(@babel/core@7.28.3)(@types/react@19.1.12)(react@19.1.0))(react@19.1.0) + expo: 54.0.6(@babel/core@7.28.3)(@expo/metro-runtime@6.1.1)(expo-router@6.0.3)(react-native@0.81.4(@babel/core@7.28.3)(@types/react@19.1.12)(react@19.1.0))(react@19.1.0) fontfaceobserver: 2.3.0 react: 19.1.0 react-native: 0.81.4(@babel/core@7.28.3)(@types/react@19.1.12)(react@19.1.0) - expo-haptics@15.0.7(expo@54.0.3): + expo-haptics@15.0.7(expo@54.0.6): dependencies: - expo: 54.0.3(@babel/core@7.28.3)(@expo/metro-runtime@6.1.1)(expo-router@6.0.1)(react-native@0.81.4(@babel/core@7.28.3)(@types/react@19.1.12)(react@19.1.0))(react@19.1.0) + expo: 54.0.6(@babel/core@7.28.3)(@expo/metro-runtime@6.1.1)(expo-router@6.0.3)(react-native@0.81.4(@babel/core@7.28.3)(@types/react@19.1.12)(react@19.1.0))(react@19.1.0) - expo-image@3.0.8(expo@54.0.3)(react-native-web@0.21.1(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(react-native@0.81.4(@babel/core@7.28.3)(@types/react@19.1.12)(react@19.1.0))(react@19.1.0): + expo-image@3.0.8(expo@54.0.6)(react-native-web@0.21.1(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(react-native@0.81.4(@babel/core@7.28.3)(@types/react@19.1.12)(react@19.1.0))(react@19.1.0): dependencies: - expo: 54.0.3(@babel/core@7.28.3)(@expo/metro-runtime@6.1.1)(expo-router@6.0.1)(react-native@0.81.4(@babel/core@7.28.3)(@types/react@19.1.12)(react@19.1.0))(react@19.1.0) + expo: 54.0.6(@babel/core@7.28.3)(@expo/metro-runtime@6.1.1)(expo-router@6.0.3)(react-native@0.81.4(@babel/core@7.28.3)(@types/react@19.1.12)(react@19.1.0))(react@19.1.0) react: 19.1.0 react-native: 0.81.4(@babel/core@7.28.3)(@types/react@19.1.12)(react@19.1.0) optionalDependencies: @@ -11048,14 +11049,14 @@ snapshots: expo-json-utils@0.15.0: {} - expo-keep-awake@15.0.7(expo@54.0.3)(react@19.1.0): + expo-keep-awake@15.0.7(expo@54.0.6)(react@19.1.0): dependencies: - expo: 54.0.3(@babel/core@7.28.3)(@expo/metro-runtime@6.1.1)(expo-router@6.0.1)(react-native@0.81.4(@babel/core@7.28.3)(@types/react@19.1.12)(react@19.1.0))(react@19.1.0) + expo: 54.0.6(@babel/core@7.28.3)(@expo/metro-runtime@6.1.1)(expo-router@6.0.3)(react-native@0.81.4(@babel/core@7.28.3)(@types/react@19.1.12)(react@19.1.0))(react@19.1.0) react: 19.1.0 - expo-linking@8.0.8(expo@54.0.3)(react-native@0.81.4(@babel/core@7.28.3)(@types/react@19.1.12)(react@19.1.0))(react@19.1.0): + expo-linking@8.0.8(expo@54.0.6)(react-native@0.81.4(@babel/core@7.28.3)(@types/react@19.1.12)(react@19.1.0))(react@19.1.0): dependencies: - expo-constants: 18.0.8(expo@54.0.3)(react-native@0.81.4(@babel/core@7.28.3)(@types/react@19.1.12)(react@19.1.0)) + expo-constants: 18.0.8(expo@54.0.6)(react-native@0.81.4(@babel/core@7.28.3)(@types/react@19.1.12)(react@19.1.0)) invariant: 2.2.4 react: 19.1.0 react-native: 0.81.4(@babel/core@7.28.3)(@types/react@19.1.12)(react@19.1.0) @@ -11063,10 +11064,10 @@ snapshots: - expo - supports-color - expo-manifests@1.0.8(expo@54.0.3): + expo-manifests@1.0.8(expo@54.0.6): dependencies: '@expo/config': 12.0.8 - expo: 54.0.3(@babel/core@7.28.3)(@expo/metro-runtime@6.1.1)(expo-router@6.0.1)(react-native@0.81.4(@babel/core@7.28.3)(@types/react@19.1.12)(react@19.1.0))(react@19.1.0) + expo: 54.0.6(@babel/core@7.28.3)(@expo/metro-runtime@6.1.1)(expo-router@6.0.3)(react-native@0.81.4(@babel/core@7.28.3)(@types/react@19.1.12)(react@19.1.0))(react@19.1.0) expo-json-utils: 0.15.0 transitivePeerDependencies: - supports-color @@ -11086,9 +11087,9 @@ snapshots: react: 19.1.0 react-native: 0.81.4(@babel/core@7.28.3)(@types/react@19.1.12)(react@19.1.0) - expo-router@6.0.1(@types/react@19.1.12)(expo-constants@18.0.8)(expo-linking@8.0.8)(expo@54.0.3)(react-dom@19.1.0(react@19.1.0))(react-native-gesture-handler@2.28.0(react-native@0.81.4(@babel/core@7.28.3)(@types/react@19.1.12)(react@19.1.0))(react@19.1.0))(react-native-reanimated@4.1.0(@babel/core@7.28.3)(react-native-worklets@0.5.1(@babel/core@7.28.3)(react-native@0.81.4(@babel/core@7.28.3)(@types/react@19.1.12)(react@19.1.0))(react@19.1.0))(react-native@0.81.4(@babel/core@7.28.3)(@types/react@19.1.12)(react@19.1.0))(react@19.1.0))(react-native-safe-area-context@5.6.1(react-native@0.81.4(@babel/core@7.28.3)(@types/react@19.1.12)(react@19.1.0))(react@19.1.0))(react-native-screens@4.16.0(react-native@0.81.4(@babel/core@7.28.3)(@types/react@19.1.12)(react@19.1.0))(react@19.1.0))(react-native-web@0.21.1(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(react-native@0.81.4(@babel/core@7.28.3)(@types/react@19.1.12)(react@19.1.0))(react@19.1.0): + expo-router@6.0.3(@expo/metro-runtime@6.1.1)(@types/react@19.1.12)(expo-constants@18.0.8)(expo-linking@8.0.8)(expo@54.0.6)(react-dom@19.1.0(react@19.1.0))(react-native-gesture-handler@2.28.0(react-native@0.81.4(@babel/core@7.28.3)(@types/react@19.1.12)(react@19.1.0))(react@19.1.0))(react-native-reanimated@4.1.0(@babel/core@7.28.3)(react-native-worklets@0.5.1(@babel/core@7.28.3)(react-native@0.81.4(@babel/core@7.28.3)(@types/react@19.1.12)(react@19.1.0))(react@19.1.0))(react-native@0.81.4(@babel/core@7.28.3)(@types/react@19.1.12)(react@19.1.0))(react@19.1.0))(react-native-safe-area-context@5.6.1(react-native@0.81.4(@babel/core@7.28.3)(@types/react@19.1.12)(react@19.1.0))(react@19.1.0))(react-native-screens@4.16.0(react-native@0.81.4(@babel/core@7.28.3)(@types/react@19.1.12)(react@19.1.0))(react@19.1.0))(react-native-web@0.21.1(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(react-native@0.81.4(@babel/core@7.28.3)(@types/react@19.1.12)(react@19.1.0))(react@19.1.0): dependencies: - '@expo/metro-runtime': 6.1.1(expo@54.0.3)(react-dom@19.1.0(react@19.1.0))(react-native@0.81.4(@babel/core@7.28.3)(@types/react@19.1.12)(react@19.1.0))(react@19.1.0) + '@expo/metro-runtime': 6.1.1(expo@54.0.6)(react-dom@19.1.0(react@19.1.0))(react-native@0.81.4(@babel/core@7.28.3)(@types/react@19.1.12)(react@19.1.0))(react@19.1.0) '@expo/schema-utils': 0.1.7 '@expo/server': 0.7.4 '@radix-ui/react-slot': 1.2.0(@types/react@19.1.12)(react@19.1.0) @@ -11099,9 +11100,9 @@ snapshots: client-only: 0.0.1 debug: 4.4.1 escape-string-regexp: 4.0.0 - expo: 54.0.3(@babel/core@7.28.3)(@expo/metro-runtime@6.1.1)(expo-router@6.0.1)(react-native@0.81.4(@babel/core@7.28.3)(@types/react@19.1.12)(react@19.1.0))(react@19.1.0) - expo-constants: 18.0.8(expo@54.0.3)(react-native@0.81.4(@babel/core@7.28.3)(@types/react@19.1.12)(react@19.1.0)) - expo-linking: 8.0.8(expo@54.0.3)(react-native@0.81.4(@babel/core@7.28.3)(@types/react@19.1.12)(react@19.1.0))(react@19.1.0) + expo: 54.0.6(@babel/core@7.28.3)(@expo/metro-runtime@6.1.1)(expo-router@6.0.3)(react-native@0.81.4(@babel/core@7.28.3)(@types/react@19.1.12)(react@19.1.0))(react@19.1.0) + expo-constants: 18.0.8(expo@54.0.6)(react-native@0.81.4(@babel/core@7.28.3)(@types/react@19.1.12)(react@19.1.0)) + expo-linking: 8.0.8(expo@54.0.6)(react-native@0.81.4(@babel/core@7.28.3)(@types/react@19.1.12)(react@19.1.0))(react@19.1.0) fast-deep-equal: 3.1.3 invariant: 2.2.4 nanoid: 3.3.11 @@ -11129,14 +11130,14 @@ snapshots: - '@types/react-dom' - supports-color - expo-secure-store@15.0.7(expo@54.0.3): + expo-secure-store@15.0.7(expo@54.0.6): dependencies: - expo: 54.0.3(@babel/core@7.28.3)(@expo/metro-runtime@6.1.1)(expo-router@6.0.1)(react-native@0.81.4(@babel/core@7.28.3)(@types/react@19.1.12)(react@19.1.0))(react@19.1.0) + expo: 54.0.6(@babel/core@7.28.3)(@expo/metro-runtime@6.1.1)(expo-router@6.0.3)(react-native@0.81.4(@babel/core@7.28.3)(@types/react@19.1.12)(react@19.1.0))(react@19.1.0) - expo-splash-screen@31.0.9(expo@54.0.3): + expo-splash-screen@31.0.10(expo@54.0.6): dependencies: - '@expo/prebuild-config': 54.0.1(expo@54.0.3) - expo: 54.0.3(@babel/core@7.28.3)(@expo/metro-runtime@6.1.1)(expo-router@6.0.1)(react-native@0.81.4(@babel/core@7.28.3)(@types/react@19.1.12)(react@19.1.0))(react@19.1.0) + '@expo/prebuild-config': 54.0.3(expo@54.0.6) + expo: 54.0.6(@babel/core@7.28.3)(@expo/metro-runtime@6.1.1)(expo-router@6.0.3)(react-native@0.81.4(@babel/core@7.28.3)(@types/react@19.1.12)(react@19.1.0))(react@19.1.0) transitivePeerDependencies: - supports-color @@ -11146,50 +11147,50 @@ snapshots: react-native: 0.81.4(@babel/core@7.28.3)(@types/react@19.1.12)(react@19.1.0) react-native-is-edge-to-edge: 1.2.1(react-native@0.81.4(@babel/core@7.28.3)(@types/react@19.1.12)(react@19.1.0))(react@19.1.0) - expo-symbols@1.0.7(expo@54.0.3)(react-native@0.81.4(@babel/core@7.28.3)(@types/react@19.1.12)(react@19.1.0)): + expo-symbols@1.0.7(expo@54.0.6)(react-native@0.81.4(@babel/core@7.28.3)(@types/react@19.1.12)(react@19.1.0)): dependencies: - expo: 54.0.3(@babel/core@7.28.3)(@expo/metro-runtime@6.1.1)(expo-router@6.0.1)(react-native@0.81.4(@babel/core@7.28.3)(@types/react@19.1.12)(react@19.1.0))(react@19.1.0) + expo: 54.0.6(@babel/core@7.28.3)(@expo/metro-runtime@6.1.1)(expo-router@6.0.3)(react-native@0.81.4(@babel/core@7.28.3)(@types/react@19.1.12)(react@19.1.0))(react@19.1.0) react-native: 0.81.4(@babel/core@7.28.3)(@types/react@19.1.12)(react@19.1.0) sf-symbols-typescript: 2.1.0 - expo-system-ui@6.0.7(expo@54.0.3)(react-native-web@0.21.1(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(react-native@0.81.4(@babel/core@7.28.3)(@types/react@19.1.12)(react@19.1.0)): + expo-system-ui@6.0.7(expo@54.0.6)(react-native-web@0.21.1(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(react-native@0.81.4(@babel/core@7.28.3)(@types/react@19.1.12)(react@19.1.0)): dependencies: '@react-native/normalize-colors': 0.81.4 debug: 4.4.1 - expo: 54.0.3(@babel/core@7.28.3)(@expo/metro-runtime@6.1.1)(expo-router@6.0.1)(react-native@0.81.4(@babel/core@7.28.3)(@types/react@19.1.12)(react@19.1.0))(react@19.1.0) + expo: 54.0.6(@babel/core@7.28.3)(@expo/metro-runtime@6.1.1)(expo-router@6.0.3)(react-native@0.81.4(@babel/core@7.28.3)(@types/react@19.1.12)(react@19.1.0))(react@19.1.0) react-native: 0.81.4(@babel/core@7.28.3)(@types/react@19.1.12)(react@19.1.0) optionalDependencies: react-native-web: 0.21.1(react-dom@19.1.0(react@19.1.0))(react@19.1.0) transitivePeerDependencies: - supports-color - expo-updates-interface@2.0.0(expo@54.0.3): + expo-updates-interface@2.0.0(expo@54.0.6): dependencies: - expo: 54.0.3(@babel/core@7.28.3)(@expo/metro-runtime@6.1.1)(expo-router@6.0.1)(react-native@0.81.4(@babel/core@7.28.3)(@types/react@19.1.12)(react@19.1.0))(react@19.1.0) + expo: 54.0.6(@babel/core@7.28.3)(@expo/metro-runtime@6.1.1)(expo-router@6.0.3)(react-native@0.81.4(@babel/core@7.28.3)(@types/react@19.1.12)(react@19.1.0))(react@19.1.0) - expo-web-browser@15.0.7(expo@54.0.3)(react-native@0.81.4(@babel/core@7.28.3)(@types/react@19.1.12)(react@19.1.0)): + expo-web-browser@15.0.7(expo@54.0.6)(react-native@0.81.4(@babel/core@7.28.3)(@types/react@19.1.12)(react@19.1.0)): dependencies: - expo: 54.0.3(@babel/core@7.28.3)(@expo/metro-runtime@6.1.1)(expo-router@6.0.1)(react-native@0.81.4(@babel/core@7.28.3)(@types/react@19.1.12)(react@19.1.0))(react@19.1.0) + expo: 54.0.6(@babel/core@7.28.3)(@expo/metro-runtime@6.1.1)(expo-router@6.0.3)(react-native@0.81.4(@babel/core@7.28.3)(@types/react@19.1.12)(react@19.1.0))(react@19.1.0) react-native: 0.81.4(@babel/core@7.28.3)(@types/react@19.1.12)(react@19.1.0) - expo@54.0.3(@babel/core@7.28.3)(@expo/metro-runtime@6.1.1)(expo-router@6.0.1)(react-native@0.81.4(@babel/core@7.28.3)(@types/react@19.1.12)(react@19.1.0))(react@19.1.0): + expo@54.0.6(@babel/core@7.28.3)(@expo/metro-runtime@6.1.1)(expo-router@6.0.3)(react-native@0.81.4(@babel/core@7.28.3)(@types/react@19.1.12)(react@19.1.0))(react@19.1.0): dependencies: '@babel/runtime': 7.28.3 - '@expo/cli': 54.0.2(expo-router@6.0.1)(expo@54.0.3)(react-native@0.81.4(@babel/core@7.28.3)(@types/react@19.1.12)(react@19.1.0)) + '@expo/cli': 54.0.4(expo-router@6.0.3)(expo@54.0.6)(react-native@0.81.4(@babel/core@7.28.3)(@types/react@19.1.12)(react@19.1.0)) '@expo/config': 12.0.9 '@expo/config-plugins': 54.0.1 '@expo/devtools': 0.1.7(react-native@0.81.4(@babel/core@7.28.3)(@types/react@19.1.12)(react@19.1.0))(react@19.1.0) '@expo/fingerprint': 0.15.0 '@expo/metro': 0.1.1 - '@expo/metro-config': 54.0.3(expo@54.0.3) - '@expo/vector-icons': 15.0.2(expo-font@14.0.8(expo@54.0.3)(react-native@0.81.4(@babel/core@7.28.3)(@types/react@19.1.12)(react@19.1.0))(react@19.1.0))(react-native@0.81.4(@babel/core@7.28.3)(@types/react@19.1.12)(react@19.1.0))(react@19.1.0) + '@expo/metro-config': 54.0.3(expo@54.0.6) + '@expo/vector-icons': 15.0.2(expo-font@14.0.8(expo@54.0.6)(react-native@0.81.4(@babel/core@7.28.3)(@types/react@19.1.12)(react@19.1.0))(react@19.1.0))(react-native@0.81.4(@babel/core@7.28.3)(@types/react@19.1.12)(react@19.1.0))(react@19.1.0) '@ungap/structured-clone': 1.3.0 - babel-preset-expo: 54.0.1(@babel/core@7.28.3)(@babel/runtime@7.28.3)(expo@54.0.3)(react-refresh@0.14.2) - expo-asset: 12.0.8(expo@54.0.3)(react-native@0.81.4(@babel/core@7.28.3)(@types/react@19.1.12)(react@19.1.0))(react@19.1.0) - expo-constants: 18.0.8(expo@54.0.3)(react-native@0.81.4(@babel/core@7.28.3)(@types/react@19.1.12)(react@19.1.0)) - expo-file-system: 19.0.13(expo@54.0.3)(react-native@0.81.4(@babel/core@7.28.3)(@types/react@19.1.12)(react@19.1.0)) - expo-font: 14.0.8(expo@54.0.3)(react-native@0.81.4(@babel/core@7.28.3)(@types/react@19.1.12)(react@19.1.0))(react@19.1.0) - expo-keep-awake: 15.0.7(expo@54.0.3)(react@19.1.0) + babel-preset-expo: 54.0.1(@babel/core@7.28.3)(@babel/runtime@7.28.3)(expo@54.0.6)(react-refresh@0.14.2) + expo-asset: 12.0.8(expo@54.0.6)(react-native@0.81.4(@babel/core@7.28.3)(@types/react@19.1.12)(react@19.1.0))(react@19.1.0) + expo-constants: 18.0.8(expo@54.0.6)(react-native@0.81.4(@babel/core@7.28.3)(@types/react@19.1.12)(react@19.1.0)) + expo-file-system: 19.0.14(expo@54.0.6)(react-native@0.81.4(@babel/core@7.28.3)(@types/react@19.1.12)(react@19.1.0)) + expo-font: 14.0.8(expo@54.0.6)(react-native@0.81.4(@babel/core@7.28.3)(@types/react@19.1.12)(react@19.1.0))(react@19.1.0) + expo-keep-awake: 15.0.7(expo@54.0.6)(react@19.1.0) expo-modules-autolinking: 3.0.10 expo-modules-core: 3.0.15(react-native@0.81.4(@babel/core@7.28.3)(@types/react@19.1.12)(react@19.1.0))(react@19.1.0) pretty-format: 29.7.0 @@ -11198,7 +11199,7 @@ snapshots: react-refresh: 0.14.2 whatwg-url-without-unicode: 8.0.0-3 optionalDependencies: - '@expo/metro-runtime': 6.1.1(expo@54.0.3)(react-dom@19.1.0(react@19.1.0))(react-native@0.81.4(@babel/core@7.28.3)(@types/react@19.1.12)(react@19.1.0))(react@19.1.0) + '@expo/metro-runtime': 6.1.1(expo@54.0.6)(react-dom@19.1.0(react@19.1.0))(react-native@0.81.4(@babel/core@7.28.3)(@types/react@19.1.12)(react@19.1.0))(react@19.1.0) transitivePeerDependencies: - '@babel/core' - bufferutil