From bc8619314734246440956cc7d44b4bc914c99c39 Mon Sep 17 00:00:00 2001 From: thestreamcode Date: Sat, 8 Aug 2026 23:15:29 +0200 Subject: [PATCH 1/2] feat: harden vault and professionalize repository --- .github/ISSUE_TEMPLATE/config.yml | 2 +- .github/dependabot.yml | 11 + .github/workflows/ci.yml | 6 +- CHANGELOG.md | 31 ++ CONTRIBUTING.md | 11 +- README.md | 294 ++++++++---------- app.config.js | 1 + bun.lock | 233 ++++++++++---- docs/assets/screenshots/add-password.png | Bin 0 -> 53878 bytes docs/assets/screenshots/encrypted-backup.png | Bin 0 -> 66918 bytes .../assets/screenshots/password-generator.png | Bin 0 -> 63698 bytes docs/assets/screenshots/secure-notes.png | Bin 0 -> 48269 bytes docs/development.md | 4 + docs/publication.md | 8 + docs/release.md | 5 + docs/security-audit-2026-08-08.md | 208 +++++++++++++ docs/security.md | 10 +- eslint.config.js | 4 - package.json | 31 +- src/__tests__/services/AuthService.test.ts | 110 +++++++ .../services/BackupValidation.test.ts | 3 +- src/__tests__/services/CryptoService.test.ts | 18 ++ src/__tests__/services/StorageService.test.ts | 108 +++++++ src/hooks/settings/useExportImport.ts | 52 ++-- src/services/auth/authService.ts | 89 ++++-- src/services/auth/authServiceMock.ts | 14 + src/services/crypto/cryptoService.ts | 11 +- .../import-export/backupValidation.ts | 6 +- src/services/storage/storageService.ts | 88 +++++- src/services/storage/storageServiceMock.ts | 47 +++ 30 files changed, 1077 insertions(+), 328 deletions(-) create mode 100644 .github/dependabot.yml create mode 100644 docs/assets/screenshots/add-password.png create mode 100644 docs/assets/screenshots/encrypted-backup.png create mode 100644 docs/assets/screenshots/password-generator.png create mode 100644 docs/assets/screenshots/secure-notes.png create mode 100644 docs/security-audit-2026-08-08.md diff --git a/.github/ISSUE_TEMPLATE/config.yml b/.github/ISSUE_TEMPLATE/config.yml index b66170b..f255c74 100644 --- a/.github/ISSUE_TEMPLATE/config.yml +++ b/.github/ISSUE_TEMPLATE/config.yml @@ -1,4 +1,4 @@ -blank_issues_enabled: true +blank_issues_enabled: false contact_links: - name: Security vulnerability url: https://github.com/TheStreamCode/keysoft/security/policy diff --git a/.github/dependabot.yml b/.github/dependabot.yml new file mode 100644 index 0000000..28a49e8 --- /dev/null +++ b/.github/dependabot.yml @@ -0,0 +1,11 @@ +version: 2 + +updates: + - package-ecosystem: bun + directory: / + schedule: + interval: weekly + day: monday + time: '06:00' + timezone: Europe/Rome + open-pull-requests-limit: 5 diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 9986a2e..235a3ce 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -32,12 +32,8 @@ jobs: with: bun-version: '1.3.14' - # Dependabot edits package.json but cannot regenerate bun.lock, so a frozen - # install fails on every one of its pull requests -- which is the sole reason - # they are all red. Typecheck, lint and test still run either way; only the - # lockfile constraint is relaxed, and only for that actor. - name: Install dependencies - run: bun install ${{ github.actor == 'dependabot[bot]' && '--no-frozen-lockfile' || '--frozen-lockfile' }} + run: bun install --frozen-lockfile - name: Check formatting run: bun run format:check diff --git a/CHANGELOG.md b/CHANGELOG.md index 4bbf61a..65bb384 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -6,6 +6,21 @@ All notable project changes are documented here. ### Security +- Made PIN rotation and transparent KDF upgrades transactional: preference reads now + happen before vault mutation, ciphertext and verifier metadata define the core commit, + and a later biometric cleanup failure can no longer roll back only one side of the + vault. An unrecoverable pre-commit rollback still closes the authenticated session. +- Changed validated backup imports from repeated per-record writes to one encrypted batch. + Imported records are merged by ID, password limits are checked against the merged vault, + all ciphertext is prepared before persistence, and decrypted caches update only after + the batch succeeds. +- Reject backup files whose size cannot be established before reading them, and reject KS1 + payloads that lack a complete AES-CBC ciphertext block or are not block-aligned. +- Require an active vault key before clearing password or note collections, and explicitly + remove `SYSTEM_ALERT_WINDOW` from generated Android manifests. +- Prevent initial PIN setup from overwriting an existing verifier. If first-time database + initialization fails after a new verifier was saved, remove that verifier and clear all + authentication/key state before returning failure. - Kept the cached master-key verifier unchanged when its SecureStore write fails, so an unpersisted verifier cannot be observed later in the same session. - Closed the authenticated session and cleared the in-memory vault key if a transparent @@ -42,12 +57,28 @@ All notable project changes are documented here. ### Tooling +- Updated Expo SDK 57 packages to the compatible versions selected by `expo install`, + refreshed compatible JavaScript dependencies, removed the duplicate TypeScript ESLint + plugin registration, and restored `expo-doctor` to 20/20 checks. +- Added weekly Bun Dependabot updates and made every CI installation use the committed + lockfile with `bun install --frozen-lockfile`. - Added `.codex/` to the ignored local agent-state directories, so a future Codex session cannot leave working state staged by accident, and folded the redundant trailing `.claude/settings.local.json` rule into the `.claude/` entry that already covered it. ### Documentation +- Reworked the GitHub README around the product value proposition, an immediate Google + Play call to action, concise trust links, and a four-screen gallery sourced from the + production store listing. Removed fast-stale dependency/test counters from the product + overview and aligned contributor validation with the one-command verification workflow. +- Disabled blank GitHub issues so bug, feature, and private security reports follow the + repository's structured intake paths. +- Updated the public GitHub description around Keysoft's offline-first promise and changed + the repository homepage from the generic studio site to the product's Google Play page. +- Added the dated full security and code-audit report in + `docs/security-audit-2026-08-08.md` and synchronized the security, development, and + release guides with the hardened import, PIN-change, dependency, and permission rules. - Documented the accepted cryptographic and operational trade-offs in `docs/security.md` under a new "Known Limitations" section: the shared AES/HMAC key, the PBKDF2-SHA1 backup KDF, the six-digit master PIN keyspace, the absence of unlock throttling, opt-in diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 815ebeb..c6ae12a 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -9,10 +9,13 @@ biometrics, import/export, notifications, or release configuration. ## Development Setup ```bash -bun install +bun install --frozen-lockfile bun run start ``` +Use Bun 1.3.14 and Node.js 22.13 or newer. The lockfile is part of the reviewed +dependency graph and must remain frozen during clean validation. + Android development uses Expo Go for day-to-day work. Release-grade validation for Argon2 and native modules requires an EAS/native Android build. @@ -21,10 +24,8 @@ for Argon2 and native modules requires an EAS/native Android build. Run: ```bash -bun run typecheck -bun run lint -bun run test -bunx expo-doctor +bun run verify +bun run deps:audit ``` For Android release-related changes, also run: diff --git a/README.md b/README.md index 8e71f60..dea8b7c 100644 --- a/README.md +++ b/README.md @@ -1,207 +1,179 @@ -![Keysoft secure private offline password manager banner](docs/assets/keysoft-banner.png) + + Keysoft — secure, private, offline password manager + # Keysoft -[![CI](https://github.com/TheStreamCode/keysoft/actions/workflows/ci.yml/badge.svg)](https://github.com/TheStreamCode/keysoft/actions/workflows/ci.yml) -[![License: Apache 2.0](https://img.shields.io/badge/license-Apache--2.0-blue.svg)](LICENSE) - -Keysoft is an offline-first password manager for Android, with cloud-simulator compatibility for iPhone and iPad, built with Expo, React Native, and TypeScript. It stores vault data locally and protects user content with authenticated encryption. - -The application is designed around a local-only operating model: the PIN/master password is never persisted, vault data is encrypted at rest, and the app does not require a backend service to operate. - -Keysoft works offline for vault management. Network access is limited to platform services such as Expo/EAS updates and is not used to sync, upload, or transmit vault contents, PINs, master passwords, or encryption keys. - -## Current Status - -| Area | Status | -| ------------------- | ---------------------------------- | -| Platform focus | Android release; iOS cloud testing | -| App version | 3.3.0 | -| Android versionCode | 129 (EAS production target) | -| Expo SDK | 57.0.9 | -| React Native | 0.86.2 | -| TypeScript | 6.0.3, strict mode | -| Test suite | 30 suites, 199 tests | -| Health check | `expo-doctor` 20/20 | - -Keysoft 3.3.0 is published on [Google Play](https://play.google.com/store/apps/details?id=it.mikesoft.keysoft). Production build numbers are managed remotely by EAS; the 3.3.0 release uses Android versionCode 129. `app.config.js` mirrors that value for local manifest visibility, while `appVersionSource: "remote"` keeps EAS authoritative for future build numbers. - -## Core Capabilities - -- Password vault with create, read, update, delete, search, pagination, and categories. -- Secure notes stored with the same vault encryption model. -- Local password generator backed by cryptographically secure randomness. -- Optional biometric unlock backed by SecureStore with device authentication. -- Local notifications for security reminders and backup prompts. -- Encrypted import/export workflow for user-managed backups. -- Italian and English localization with system-language detection. -- Automated i18n checks for Italian/English key parity, placeholder parity, and user-facing fallback regressions. -- Source-structure regression checks for lowercase directories and shared settings hook placement. -- Nocturne light/dark interface with responsive phone/tablet layouts, a dedicated PIN keypad, copy-first credential views, reduced-motion support, and accessible touch targets. -- Local vault-health analysis for weak, reused, and expired credentials. - -## Design And Interaction - -- Semantic theme tokens provide automatic light and dark appearances without screen-specific color branching. -- Responsive content bounds support compact phones, landscape, tablets, and split-view widths while preserving safe areas and 44-point minimum touch targets. -- Alerts and confirmations use the shared dialog primitive, selection workflows use bottom sheets, and non-blocking feedback uses in-app toasts. -- Entrance effects animate only opacity and transforms and respect the operating-system reduced-motion preference. -- The profile photo is previewed locally and persisted only when profile changes are saved; the same avatar and initial fallback are rendered on unlock, vault, and settings screens. -- The original Keysoft shield-and-eye artwork is the canonical launcher, adaptive, splash, favicon, and onboarding mark. +

+ A private, offline-first password manager for Android.
+ No account, no ads, no cloud vault, and no tracking SDKs. +

+ +

+ CI status + Latest release + Apache 2.0 license +

+ +

+ + Get it on Google Play + +

+ +

+ Google Play · + Privacy · + Security · + Latest release +

+ +Keysoft keeps passwords and secure notes encrypted on the device and works without a +backend service. Network access is limited to platform services such as Expo/EAS update +delivery; vault contents, PINs, master passwords, and encryption keys are never used for +sync or remote storage. + +## Why Keysoft + +- **Private by default:** no registration, cloud vault, advertising, or analytics SDK. +- **Useful offline:** create, search, organize, and copy credentials without connectivity. +- **Encrypted locally:** authenticated vault encryption with tamper detection. +- **Fast unlock:** optional biometric access backed by device-authenticated SecureStore. +- **User-owned backups:** password-protected import/export without a remote backup account. +- **Practical security tools:** secure notes, password generation, vault-health checks, + clipboard auto-clear, local reminders, and optional screenshot protection. +- **Accessible and responsive:** Italian and English UI, light/dark themes, reduced-motion + support, and phone/tablet layouts. + +## Product Tour + +The screenshots below are taken from the production Android listing on Google Play. + + + + + + + + + + + + + + +
Add a password in KeysoftGenerate a strong password in KeysoftStore secure notes in KeysoftExport an encrypted Keysoft backup
Quick entryPassword generatorSecure notesEncrypted backups
## Security Model -Keysoft uses the KS1 envelope for vault data: +Keysoft uses the versioned KS1 envelope for vault data: -- AES-256-CBC for encryption. -- HMAC-SHA256 for integrity verification. -- Argon2id in EAS/native builds when available, PBKDF2 fallback in Expo Go or where required. -- Expo Go is a development workflow. Vaults created in Expo Go use PBKDF2 fallback metadata; use EAS/native builds for release-grade Argon2 validation. -- 64-character hex derived keys. -- CSPRNG-backed salts, IVs, IDs, and password generation. -- The vault key stays in memory by default. If biometrics are enabled, the vault key is stored in SecureStore with device authentication required and is updated or removed when the PIN changes. -- PIN setup and PIN changes reuse the vault key derived during verifier creation to avoid duplicate KDF work while preserving the configured Argon2/PBKDF2 cost. -- Verifier metadata is cached only after SecureStore accepts the write. A failed KDF-upgrade rollback closes the session rather than continuing with an uncertain vault key. +- AES-256-CBC encryption with HMAC-SHA256 integrity verification. +- Argon2id key derivation in native builds; Expo Go uses the documented PBKDF2 + development fallback. +- CSPRNG-backed salts, IVs, identifiers, and password generation. +- A 64-character derived vault key held in memory by default. +- Optional biometric unlock stores only the derived vault key in SecureStore with device + authentication required. +- Encrypted backups use the versioned `KS1-PW1` format and a user-provided passphrase. -Backup files use a password-encrypted payload format (`KS1-PW1`) with KDF metadata and authenticated KS1 ciphertext. +Keysoft cannot recover a forgotten master PIN because it has no server-side recovery +material. Read the [security architecture](docs/security.md) for the full model, accepted +trade-offs, and migration rules. Vulnerabilities should be reported privately through the +[security policy](SECURITY.md), never through a public issue. -See [Security Architecture](docs/security.md) for the full model, operational assumptions, and storage rules. +## Current Release -## Documentation +Keysoft 3.3.0 is available on +[Google Play](https://play.google.com/store/apps/details?id=it.mikesoft.keysoft). Android is +the production platform. iPhone and iPad remain cloud-simulator compatibility targets and +are not currently distributed through the App Store. -- [Architecture](docs/architecture.md) -- [Security Architecture](docs/security.md) -- [Development Guide](docs/development.md) -- [Release Guide](docs/release.md) -- [iOS Testing Without Apple Hardware](docs/ios-testing.md) -- [Public Repository Checklist](docs/publication.md) -- [First-Party Copyright And Scope Record](COPYRIGHT.md) -- [Pre-Build Security/UI Review](docs/pre-build-security-ui-review.md) -- [Keysoft 3.3.0 Release Notes](docs/releases/3.3.0.md) -- [Changelog](CHANGELOG.md) - -## Requirements +The source of truth for shipped changes is the [changelog](CHANGELOG.md) and the +[latest GitHub release](https://github.com/TheStreamCode/keysoft/releases/latest). Exact +verification results are recorded in dated release and audit documents instead of being +duplicated here. -- Bun 1.3.14 (the version declared in `package.json` and used by CI) -- Node.js 22.13 or newer -- Expo Go installed on the Android device used for development -- Expo account access for EAS builds on expo.dev -- Expo CLI via `bunx expo` +## Developer Quick Start -## Installation - -```bash -bun install -``` +Requirements: -Use `bun install --frozen-lockfile` in CI and when validating a clean checkout. +- Bun 1.3.14. +- Node.js 22.13 or newer. +- Expo Go on an Android device for day-to-day development. -## Configuration - -Keysoft needs no environment variables or backend service for local development. The tracked `.env.example` documents this intentionally empty configuration. Local `.env*` files, `.secrets/`, signing keys, and generated native projects are ignored by Git. - -Never store secrets in `EXPO_PUBLIC_*` variables: Expo embeds those values in the client bundle. Store EAS credentials in EAS-managed secrets and repository automation credentials in GitHub Actions secrets. The Expo project identifier and update URLs in `app.config.js` are public application metadata, not credentials. - -## Development - -Start the Expo development server for Expo Go: +Install and start: ```bash +bun install bun run start ``` -Open on Android with Expo Go: +Useful commands: ```bash bun run android -``` - -Use a tunnel when the phone cannot reach the local machine over LAN: - -```bash bun run start:tunnel -``` - -Run web for development/testing: - -```bash bun run web -``` - -Build artifacts are produced on expo.dev through EAS: - -```bash -bun run build:android:preview -bun run build:android:production -bun run build:ios:simulator -``` - -EAS builds upload the project to expo.dev. Start them only after the release checklist is complete and the upload has been explicitly approved. - -### Build from GitHub - -The repository is linked to EAS Build. The Android production workflow runs only for version tags matching `v*` or by manual dispatch. Google Play submission is currently manual; `bun run submit:android:production` is reserved for a future configured submission profile. iOS is retained as a cloud-simulator test target, and App Store publication is intentionally outside the project release workflow. - -## Verification - -Run the full local verification suite before shipping changes: - -```bash bun run verify bun run deps:audit -bunx expo export --platform android --output-dir C:\tmp\keysoft-android-export ``` -`bun run verify` checks formatting, TypeScript, ESLint, the coverage-enabled Jest suite, and Expo project health. The individual commands remain available as `bun run format:check`, `bun run typecheck`, `bun run lint`, `bun run test`, and `bunx expo-doctor`. - -Current verified state: +Use `bun install --frozen-lockfile` for clean validation. Keysoft requires no local +environment variables or backend service. Never place credentials in `EXPO_PUBLIC_*` +variables: Expo embeds them in the client bundle. -- `bun run typecheck`: passing -- `bun run lint`: passing -- `bun run test:ci`: passing, 30 suites and 199 tests -- `bunx expo-doctor`: passing, 20/20 checks -- `bunx expo export --platform android --output-dir C:\tmp\keysoft-android-export`: passing -- `bunx expo export --platform ios --output-dir C:\tmp\keysoft-ios-export`: passing +Release artifacts are produced through EAS. EAS build, submission, tag, and release +operations must only be started through the documented, explicitly approved release +workflow. See the [development guide](docs/development.md) and +[release guide](docs/release.md). ## Project Structure ```text src/ - components/ Shared UI components - brand/ Canonical in-app brand mark - ui/ Dialog, bottom sheet, toast, motion, PIN keypad, and controls - contexts/ Application state providers - hooks/ Complex screen and behavior logic - settings/ Settings workflows extracted from SettingsScreen - (usePinManagement, useNotificationSettings, - useProfileForm, useExportImport) - locales/ i18n dictionaries (it.ts, en.ts) consumed by LanguageContext + components/ Shared UI and interaction primitives + contexts/ Authentication, language, theme, and alert state + hooks/ Complex screen and settings workflows + locales/ Italian and English dictionaries models/ TypeScript domain models - navigation/ Navigation configuration (typed via NativeStackScreenProps) - screens/ User-facing screens - services/ Business, crypto, storage, auth, and utility services - utils/ Shared platform and security helpers (incl. withTimeout) + navigation/ Typed application navigation + screens/ User-facing application screens + services/ Auth, crypto, storage, import/export, and utilities + utils/ Shared platform and security helpers ``` -Path aliases (`@/*`, `@components/*`, `@services/*`, …) are configured in -`tsconfig.json` and `babel.config.js` for use in new code. - -## Data Ownership - -Keysoft is local-first. The user owns their vault data and is responsible for keeping backup files and the master password secure. The app cannot recover a lost master password because no server-side recovery material exists. +## Documentation -## Support +- [Architecture](docs/architecture.md) +- [Security Architecture](docs/security.md) +- [Security and Code Audit (2026-08-08)](docs/security-audit-2026-08-08.md) +- [Development Guide](docs/development.md) +- [Release Guide](docs/release.md) +- [iOS Testing Without Apple Hardware](docs/ios-testing.md) +- [Public Repository Checklist](docs/publication.md) +- [Keysoft 3.3.0 Release Notes](docs/releases/3.3.0.md) +- [Changelog](CHANGELOG.md) -Product assistance is available over email at [keysoft@mikesoft.it](mailto:keysoft@mikesoft.it). Settings > Support opens a pre-addressed message and copies the address to the clipboard when the device has no mail client registered. Do not include passwords, PINs, encryption keys, or real vault data in support requests. +## Contributing -If Keysoft's local-first security work is useful to you, support continued development through GitHub Sponsors: [github.com/sponsors/TheStreamCode](https://github.com/sponsors/TheStreamCode). +Contributions are welcome through focused pull requests. Read +[CONTRIBUTING.md](CONTRIBUTING.md), keep security-sensitive changes small and testable, +and run `bun run verify` before requesting review. -The current public privacy notice is available in [English](https://mikesoft.it/en/keysoft-policy/) and [Italian](https://mikesoft.it/it/keysoft-policy/). It documents Android distribution, iOS cloud-simulator testing, local storage, Expo Updates traffic, permissions, and user-controlled backups. +## Data Ownership and Support -## License +Users own their local vault data and are responsible for retaining backup files and the +master passphrase. Product assistance is available at +[keysoft@mikesoft.it](mailto:keysoft@mikesoft.it); never include real vault contents, +PINs, encryption keys, or backup payloads in support requests. -This project is licensed under the [Apache License 2.0](LICENSE) (`Apache-2.0`). See the [first-party copyright and scope record](COPYRIGHT.md), [third-party notices](THIRD_PARTY_NOTICES.md), and [TRADEMARKS.md](TRADEMARKS.md). +Keysoft development can be supported through +[GitHub Sponsors](https://github.com/sponsors/TheStreamCode). -## Responsible Disclosure +## License and Attribution -Please do not open public issues for vulnerabilities. Follow [SECURITY.md](SECURITY.md) for private reporting guidance. +Keysoft is licensed under the [Apache License 2.0](LICENSE). See +[COPYRIGHT.md](COPYRIGHT.md), [THIRD_PARTY_NOTICES.md](THIRD_PARTY_NOTICES.md), and +[TRADEMARKS.md](TRADEMARKS.md) for first-party scope, dependency notices, and trademark +terms. diff --git a/app.config.js b/app.config.js index afd85d7..f9d3f3f 100644 --- a/app.config.js +++ b/app.config.js @@ -69,6 +69,7 @@ module.exports = { 'android.permission.RECORD_AUDIO', 'android.permission.READ_MEDIA_IMAGES', 'android.permission.READ_MEDIA_VIDEO', + 'android.permission.SYSTEM_ALERT_WINDOW', ], allowBackup: false, // Support multiple screen sizes diff --git a/bun.lock b/bun.lock index c8f2a80..686a0cd 100644 --- a/bun.lock +++ b/bun.lock @@ -9,31 +9,31 @@ "@expo/vector-icons": "^15.1.1", "@react-native-async-storage/async-storage": "^2.2.0", "@react-native-community/slider": "5.2.0", - "@react-navigation/bottom-tabs": "^7.18.14", - "@react-navigation/native": "^7.3.14", - "@react-navigation/native-stack": "^7.18.6", - "@react-navigation/stack": "^7.10.17", + "@react-navigation/bottom-tabs": "^7.18.16", + "@react-navigation/native": "^7.3.16", + "@react-navigation/native-stack": "^7.18.8", + "@react-navigation/stack": "^7.10.22", "crypto-js": "^4.2.0", - "expo": "~57.0.9", - "expo-asset": "~57.0.8", - "expo-build-properties": "~57.0.8", + "expo": "~57.0.11", + "expo-asset": "~57.0.9", + "expo-build-properties": "~57.0.9", "expo-clipboard": "~57.0.1", - "expo-constants": "~57.0.8", + "expo-constants": "~57.0.9", "expo-crypto": "~57.0.1", "expo-document-picker": "~57.0.1", - "expo-file-system": "~57.0.1", + "expo-file-system": "~57.0.2", "expo-font": "~57.0.1", - "expo-image-picker": "~57.0.7", + "expo-image-picker": "~57.0.8", "expo-local-authentication": "~57.0.2", "expo-localization": "~57.0.1", "expo-navigation-bar": "~57.0.2", - "expo-notifications": "~57.0.8", + "expo-notifications": "~57.0.9", "expo-screen-capture": "~57.0.1", "expo-secure-store": "~57.0.1", - "expo-sharing": "~57.0.8", + "expo-sharing": "~57.0.10", "expo-status-bar": "~57.0.1", "expo-system-ui": "~57.0.2", - "expo-updates": "~57.0.11", + "expo-updates": "~57.0.12", "react": "19.2.3", "react-dom": "19.2.3", "react-native": "0.86.2", @@ -50,14 +50,13 @@ }, "devDependencies": { "@babel/core": "^7.29.7", - "@babel/plugin-transform-export-namespace-from": "^7.27.1", + "@babel/plugin-transform-export-namespace-from": "^7.29.7", "@react-native/jest-preset": "0.86.2", "@testing-library/react-native": "^13.3.3", "@types/jest": "29.5.14", "@types/react": "~19.2.18", - "@typescript-eslint/eslint-plugin": "^8.63.0", "babel-plugin-module-resolver": "^5.0.3", - "babel-preset-expo": "~57.0.5", + "babel-preset-expo": "~57.0.6", "eslint": "^9.39.5", "eslint-config-expo": "~57.0.1", "globals": "^16.5.0", @@ -102,7 +101,7 @@ "@babel/helper-optimise-call-expression": ["@babel/helper-optimise-call-expression@7.27.1", "", { "dependencies": { "@babel/types": "^7.27.1" } }, "sha512-URMGH08NzYFhubNSGJrpUEphGKQwMQYBySzat5cAByY1/YgIRkULnIy3tAMeszlL/so2HbeilYloUmSpd7GdVw=="], - "@babel/helper-plugin-utils": ["@babel/helper-plugin-utils@7.27.1", "", {}, "sha512-1gn1Up5YXka3YYAHGKpbideQ5Yjf1tDa9qYcgysz+cNCXukyLl6DjPXhD3VRwSb8c0J9tA4b2+rHEZtc6R0tlw=="], + "@babel/helper-plugin-utils": ["@babel/helper-plugin-utils@7.29.7", "", {}, "sha512-G7sHYigPY17oO5SYWnfD/0MTBwVR781S/JI643e/JhUYgVgWE/61SoW3NH9KWUKyKq5LVh3npif99Wkt6j86Jw=="], "@babel/helper-remap-async-to-generator": ["@babel/helper-remap-async-to-generator@7.27.1", "", { "dependencies": { "@babel/helper-annotate-as-pure": "^7.27.1", "@babel/helper-wrap-function": "^7.27.1", "@babel/traverse": "^7.27.1" }, "peerDependencies": { "@babel/core": "^7.0.0" } }, "sha512-7fiA521aVw8lSPeI4ZOD3vRFkoqkJcS+z4hFo82bFSH/2tNd6eJ5qCVMS5OzDmZh/kaHQeBaeyxK6wljcPtveA=="], @@ -184,7 +183,7 @@ "@babel/plugin-transform-destructuring": ["@babel/plugin-transform-destructuring@7.28.5", "", { "dependencies": { "@babel/helper-plugin-utils": "^7.27.1", "@babel/traverse": "^7.28.5" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "sha512-Kl9Bc6D0zTUcFUvkNuQh4eGXPKKNDOJQXVyyM4ZAQPMveniJdxi8XMJwLo+xSoW3MIq81bD33lcUe9kZpl0MCw=="], - "@babel/plugin-transform-export-namespace-from": ["@babel/plugin-transform-export-namespace-from@7.27.1", "", { "dependencies": { "@babel/helper-plugin-utils": "^7.27.1" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "sha512-tQvHWSZ3/jH2xuq/vZDy0jNn+ZdXJeM8gHvX4lnJmsc3+50yPlWdZXIc5ay+umX+2/tJIqHqiEqcJvxlmIvRvQ=="], + "@babel/plugin-transform-export-namespace-from": ["@babel/plugin-transform-export-namespace-from@7.29.7", "", { "dependencies": { "@babel/helper-plugin-utils": "^7.29.7" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "sha512-24B2nOy2TeJSMheqwPD4DDQOV/elLSIlKxjZt4i05H5AgdPdWR3n18HnNrcJ+j76WJd9gbwb9jPjNYUy6RautA=="], "@babel/plugin-transform-flow-strip-types": ["@babel/plugin-transform-flow-strip-types@7.27.1", "", { "dependencies": { "@babel/helper-plugin-utils": "^7.27.1", "@babel/plugin-syntax-flow": "^7.27.1" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "sha512-G5eDKsu50udECw7DL2AcsysXiQyB7Nfg521t2OAJ4tbfTJ27doHLeF/vlI1NZGlLdbb/v+ibvtL1YBQqYOwJGg=="], @@ -272,13 +271,13 @@ "@eslint/plugin-kit": ["@eslint/plugin-kit@0.4.1", "", { "dependencies": { "@eslint/core": "^0.17.0", "levn": "^0.4.1" } }, "sha512-43/qtrDUokr7LJqoF2c3+RInu/t4zfrpYdoSDfYyhg52rwLV6TnOvdG4fXm7IkSB3wErkcmJS9iEhjVtOSEjjA=="], - "@expo/cli": ["@expo/cli@57.0.11", "", { "dependencies": { "@expo/code-signing-certificates": "^0.0.6", "@expo/config": "~57.0.6", "@expo/config-plugins": "~57.0.6", "@expo/devcert": "^1.2.1", "@expo/env": "~2.4.2", "@expo/image-utils": "^0.11.4", "@expo/inline-modules": "^0.1.4", "@expo/json-file": "^11.0.1", "@expo/log-box": "^57.0.2", "@expo/metro": "~56.0.0", "@expo/metro-config": "~57.0.7", "@expo/metro-file-map": "^57.0.1", "@expo/osascript": "^2.7.1", "@expo/package-manager": "^1.13.1", "@expo/plist": "^0.8.1", "@expo/prebuild-config": "^57.0.10", "@expo/require-utils": "^57.0.4", "@expo/router-server": "^57.0.4", "@expo/schema-utils": "^57.0.2", "@expo/spawn-async": "^1.8.0", "@expo/ws-tunnel": "^2.0.0", "@expo/xcpretty": "^4.4.4", "@react-native/dev-middleware": "0.86.2", "accepts": "^1.3.8", "agent-cli-detector": "^0.1.2", "arg": "^5.0.2", "bplist-creator": "0.1.0", "bplist-parser": "^0.3.1", "chalk": "^4.0.0", "ci-info": "^3.3.0", "compression": "^1.7.4", "connect": "^3.7.0", "debug": "^4.3.4", "dnssd-advertise": "^1.1.4", "expo-server": "^57.0.1", "fetch-nodeshim": "^0.4.10", "getenv": "^2.0.0", "glob": "^13.0.0", "lan-network": "^0.2.1", "multitars": "^1.0.0", "node-forge": "^1.3.3", "npm-package-arg": "^11.0.0", "ora": "^3.4.0", "picomatch": "^4.0.4", "pretty-format": "^29.7.0", "progress": "^2.0.3", "prompts": "^2.3.2", "resolve-from": "^5.0.0", "semver": "^7.6.0", "send": "^0.19.0", "slugify": "^1.3.4", "stacktrace-parser": "^0.1.10", "structured-headers": "^0.4.1", "terminal-link": "^2.1.1", "toqr": "^0.1.1", "wrap-ansi": "^7.0.0", "ws": "^8.12.1", "zod": "^3.25.76" }, "peerDependencies": { "expo": "*", "expo-router": "*", "react-native": "*" }, "optionalPeers": ["expo-router", "react-native"], "bin": { "expo-internal": "main.js" } }, "sha512-ENXCwRyL8Q9qbabUmm0L6w9kXTmdGotW7eDEEWmUDXLPux+nEzNDqw0MzWQ5K3ZsXS51QmUJZg5yETB+6SnNRg=="], + "@expo/cli": ["@expo/cli@57.0.13", "", { "dependencies": { "@expo/code-signing-certificates": "^0.0.6", "@expo/config": "~57.0.6", "@expo/config-plugins": "~57.0.7", "@expo/devcert": "^1.2.1", "@expo/env": "~2.4.2", "@expo/image-utils": "^0.11.4", "@expo/inline-modules": "^0.1.4", "@expo/json-file": "^11.0.1", "@expo/log-box": "^57.0.2", "@expo/metro": "~56.0.0", "@expo/metro-config": "~57.0.7", "@expo/metro-file-map": "^57.0.1", "@expo/osascript": "^2.7.1", "@expo/package-manager": "^1.13.1", "@expo/plist": "^0.8.1", "@expo/prebuild-config": "^57.0.10", "@expo/require-utils": "^57.0.4", "@expo/router-server": "^57.0.5", "@expo/schema-utils": "^57.0.2", "@expo/spawn-async": "^1.8.0", "@expo/ws-tunnel": "^2.0.0", "@expo/xcpretty": "^4.4.4", "@react-native/dev-middleware": "0.86.2", "accepts": "^1.3.8", "agent-cli-detector": "^0.1.2", "arg": "^5.0.2", "bplist-creator": "0.1.0", "bplist-parser": "^0.3.1", "chalk": "^4.0.0", "ci-info": "^3.3.0", "compression": "^1.7.4", "connect": "^3.7.0", "debug": "^4.3.4", "dnssd-advertise": "^1.1.4", "expo-server": "^57.0.1", "fetch-nodeshim": "^0.4.10", "getenv": "^2.0.0", "glob": "^13.0.0", "lan-network": "^0.2.1", "multitars": "^1.0.0", "node-forge": "^1.3.3", "npm-package-arg": "^11.0.0", "ora": "^3.4.0", "picomatch": "^4.0.4", "pretty-format": "^29.7.0", "progress": "^2.0.3", "prompts": "^2.3.2", "resolve-from": "^5.0.0", "semver": "^7.6.0", "send": "^0.19.0", "slugify": "^1.3.4", "stacktrace-parser": "^0.1.10", "structured-headers": "^0.4.1", "terminal-link": "^2.1.1", "toqr": "^0.1.1", "wrap-ansi": "^7.0.0", "ws": "^8.12.1", "zod": "^3.25.76" }, "peerDependencies": { "expo": "*", "expo-router": "*", "react-native": "*" }, "optionalPeers": ["expo-router", "react-native"], "bin": { "expo-internal": "main.js" } }, "sha512-8gjLMyx+s0dLeDHlcfjM9D9x5yrCU5C6516rmC7q/Wiyuj1fxgr/cbDSmjdpQKkjlvvfvNwtRyMk2zhvhPohiw=="], "@expo/code-signing-certificates": ["@expo/code-signing-certificates@0.0.6", "", { "dependencies": { "node-forge": "^1.3.3" } }, "sha512-iNe0puxwBNEcuua9gmTGzq+SuMDa0iATai1FlFTMHJ/vUmKvN/V//drXoLJkVb5i5H3iE/n/qIJxyoBnXouD0w=="], "@expo/config": ["@expo/config@57.0.6", "", { "dependencies": { "@expo/config-plugins": "~57.0.6", "@expo/config-types": "^57.0.2", "@expo/json-file": "^11.0.1", "@expo/require-utils": "^57.0.4", "deepmerge": "^4.3.1", "getenv": "^2.0.0", "glob": "^13.0.0", "resolve-workspace-root": "^2.0.0", "semver": "^7.6.0", "slugify": "^1.3.4" } }, "sha512-VpMJpB/De/fb9bBFVVBiK6Ntg9lt0kAleLH9hcZz85CYRUQ3jVFVA8rNC5f8y4cp2+FiiPNFp62+kEOFI6pDiw=="], - "@expo/config-plugins": ["@expo/config-plugins@57.0.6", "", { "dependencies": { "@expo/config-types": "^57.0.2", "@expo/json-file": "~11.0.1", "@expo/plist": "^0.8.1", "@expo/require-utils": "^57.0.4", "@expo/sdk-runtime-versions": "^1.0.0", "chalk": "^4.1.2", "debug": "^4.3.5", "getenv": "^2.0.0", "glob": "^13.0.0", "semver": "^7.5.4", "slugify": "^1.6.6", "xcode": "^3.0.1", "xml2js": "0.6.0" } }, "sha512-7CmKrS5Rnu8aSZyNlxH2qzA7Ls1HEa4EQvEVOAkHDKPr1e4Cg/nz7I7dUl09QDTVjMvkKYDH4Th0DuAsgqASaw=="], + "@expo/config-plugins": ["@expo/config-plugins@57.0.7", "", { "dependencies": { "@expo/config-types": "^57.0.2", "@expo/json-file": "~11.0.1", "@expo/plist": "^0.8.1", "@expo/require-utils": "^57.0.4", "@expo/sdk-runtime-versions": "^1.0.0", "chalk": "^4.1.2", "debug": "^4.3.5", "getenv": "^2.0.0", "glob": "^13.0.0", "semver": "^7.5.4", "slugify": "^1.6.6", "xcode": "^3.0.1", "xml2js": "0.6.0" } }, "sha512-jvXMiNuH8W7fmU9yCk4/jVwDX2G/5rWUg5PZ22mriccEeQVS9HJjQiUHivMaK6MxEG5L9f0RPScxe/nQfnpQvg=="], "@expo/config-types": ["@expo/config-types@57.0.2", "", {}, "sha512-ewW08OonrcRIsRKIlFvvcmmafE5zemb1ocu3HkNwtVPyRtj2w42pZCAkMIROYpcVBaPnc3mDT9UZDzwXWC3i6g=="], @@ -322,7 +321,7 @@ "@expo/require-utils": ["@expo/require-utils@57.0.4", "", { "dependencies": { "@babel/code-frame": "^7.20.0", "@babel/core": "^7.25.2", "@babel/plugin-transform-modules-commonjs": "^7.24.8" }, "peerDependencies": { "typescript": "^5.0.0 || ^5.0.0-0 || ^6.0.0 || ^7.0.0" }, "optionalPeers": ["typescript"] }, "sha512-e7xbg/9BTQcsZE/oErafZXtI7kh5IgfasLJ97J5sFSzX2cA74pDvdlhW1KHVSaDkQyQv6h1LSLhsY7dEeOk7hw=="], - "@expo/router-server": ["@expo/router-server@57.0.4", "", { "dependencies": { "debug": "^4.3.4" }, "peerDependencies": { "@expo/metro-runtime": "^57.0.7", "expo": "*", "expo-constants": "^57.0.7", "expo-font": "^57.0.1", "expo-router": "*", "expo-server": "^57.0.1", "react": "*", "react-dom": "*", "react-server-dom-webpack": "~19.0.1 || ~19.1.2 || ~19.2.1" }, "optionalPeers": ["@expo/metro-runtime", "expo-router", "react-dom", "react-server-dom-webpack"] }, "sha512-ucqCP0hK8nZb9+S8QJYdQxNCkfRClzkKdg2RpWYDKDYgRIHyoRyxEDRgDgvbhH+q78yfY83abU8OTx8MMOrf1g=="], + "@expo/router-server": ["@expo/router-server@57.0.5", "", { "dependencies": { "debug": "^4.3.4" }, "peerDependencies": { "@expo/metro-runtime": "^57.0.8", "expo": "*", "expo-constants": "^57.0.9", "expo-font": "^57.0.1", "expo-router": "*", "expo-server": "^57.0.1", "react": "*", "react-dom": "*", "react-server-dom-webpack": "~19.0.1 || ~19.1.2 || ~19.2.1" }, "optionalPeers": ["@expo/metro-runtime", "expo-router", "react-dom", "react-server-dom-webpack"] }, "sha512-vke39l0bo3H2q9JB/KXpAJ7HpscdTG3Mktbxanc8yn3riWzzSsnv0uxwZGZCrZrnDQzFxlLTXgbZrGkU26ng1w=="], "@expo/schema-utils": ["@expo/schema-utils@57.0.2", "", {}, "sha512-fMu/jyN0l1Wzv7XkeWR4IYCx1M8ryui3FdBNGrWwbRgJ7EhxXxK8E2jxP2W3pbgUwUY0V3hG8+GyfCZwny+Lxw=="], @@ -440,19 +439,19 @@ "@react-native/virtualized-lists": ["@react-native/virtualized-lists@0.86.2", "", { "dependencies": { "invariant": "^2.2.4", "nullthrows": "^1.1.1" }, "peerDependencies": { "@types/react": "^19.2.0", "react": "*", "react-native": "0.86.2" }, "optionalPeers": ["@types/react"] }, "sha512-uO0J72gh3EvE+1/GHRk18QRyBDTRHRB0AraAfojsRjbT7VMuJwKrZYaKGshavoaEud6aw00ZB9/8mTMIKjjcAw=="], - "@react-navigation/bottom-tabs": ["@react-navigation/bottom-tabs@7.18.14", "", { "dependencies": { "@react-navigation/elements": "^2.9.36", "color": "^4.2.3", "sf-symbols-typescript": "^2.1.0" }, "peerDependencies": { "@react-navigation/native": "^7.3.14", "react": ">= 18.2.0", "react-native": "*", "react-native-safe-area-context": ">= 4.0.0", "react-native-screens": ">= 4.0.0" } }, "sha512-A3V9rDSut459TBPtkD7rb0npUUBlJBfMunyRT5nOGKqPguhuXWk1h91NfQMuqyW2DCUvvFZChzsbLbj42rXTdQ=="], + "@react-navigation/bottom-tabs": ["@react-navigation/bottom-tabs@7.18.16", "", { "dependencies": { "@react-navigation/elements": "^2.9.38", "color": "^4.2.3", "sf-symbols-typescript": "^2.1.0" }, "peerDependencies": { "@react-navigation/native": "^7.3.16", "react": ">= 18.2.0", "react-native": "*", "react-native-safe-area-context": ">= 4.0.0", "react-native-screens": ">= 4.0.0" } }, "sha512-5tBFuxvsCQBvYauDZK6u/uPdD86i/caWgBzABlZfTh8W2J7YZSHjT9SWOsquSMmR6dpcNj6idMd4utCNzuOnZg=="], - "@react-navigation/core": ["@react-navigation/core@7.21.11", "", { "dependencies": { "@react-navigation/routers": "^7.6.4", "escape-string-regexp": "^4.0.0", "fast-deep-equal": "^3.1.3", "nanoid": "^3.3.11", "query-string": "^7.1.3", "react-is": "^19.1.0", "use-latest-callback": "^0.2.4", "use-sync-external-store": "^1.5.0" }, "peerDependencies": { "react": ">= 18.2.0" } }, "sha512-bCW1PsLA/eOXDOukcJFEzlcL3Zpy8DJuDCfkDDwAQlAgoSZ/J9+ZeDRUMmCUi6xbnFgvFEEIMertaLeErOFP0Q=="], + "@react-navigation/core": ["@react-navigation/core@7.21.12", "", { "dependencies": { "@react-navigation/routers": "^7.6.4", "escape-string-regexp": "^4.0.0", "fast-deep-equal": "^3.1.3", "nanoid": "^3.3.11", "query-string": "^7.1.3", "react-is": "^19.1.0", "use-latest-callback": "^0.2.4", "use-sync-external-store": "^1.5.0" }, "peerDependencies": { "react": ">= 18.2.0" } }, "sha512-FopGMGy5df+IMqUYg9w7ygwK0oP4RaQbMnpb7VFP30+vZdd8MqsAGc+bZZwdiVSnzK9hzhgJtZV9XF0ZFlUYOQ=="], - "@react-navigation/elements": ["@react-navigation/elements@2.9.36", "", { "dependencies": { "color": "^4.2.3", "use-latest-callback": "^0.2.4", "use-sync-external-store": "^1.5.0" }, "peerDependencies": { "@react-native-masked-view/masked-view": ">= 0.2.0", "@react-navigation/native": "^7.3.14", "react": ">= 18.2.0", "react-native": "*", "react-native-safe-area-context": ">= 4.0.0" }, "optionalPeers": ["@react-native-masked-view/masked-view"] }, "sha512-+10x9s5v2Q7FwAYdSmPMgILtxZyC5e4hWJQu8g5o3u4p8DUToTBmGvys/UvmEr+h9xmm0Go42qw9Ff2ape53kQ=="], + "@react-navigation/elements": ["@react-navigation/elements@2.9.38", "", { "dependencies": { "color": "^4.2.3", "use-latest-callback": "^0.2.4", "use-sync-external-store": "^1.5.0" }, "peerDependencies": { "@react-native-masked-view/masked-view": ">= 0.2.0", "@react-navigation/native": "^7.3.16", "react": ">= 18.2.0", "react-native": "*", "react-native-safe-area-context": ">= 4.0.0" }, "optionalPeers": ["@react-native-masked-view/masked-view"] }, "sha512-M/2HWDiSO4zO7VyfAnovrTPWOAzTC+1DnVT7ZWZW93+/KVRF9OYlqixIUpPenQ0iQh2j1EaQ4zOe/134Arisqw=="], - "@react-navigation/native": ["@react-navigation/native@7.3.14", "", { "dependencies": { "@react-navigation/core": "^7.21.11", "escape-string-regexp": "^4.0.0", "fast-deep-equal": "^3.1.3", "nanoid": "^3.3.11", "standard-navigation": "^0.0.8", "use-latest-callback": "^0.2.4" }, "peerDependencies": { "react": ">= 18.2.0", "react-native": "*" } }, "sha512-hcKTDNBuuAA1/xW6QeKYmMPVhk5W9dKGQpPmn5dQeeePwMpu5OZ14NOgwKH0w9D3tg2jupojTcVL0tsx5DTFXg=="], + "@react-navigation/native": ["@react-navigation/native@7.3.16", "", { "dependencies": { "@react-navigation/core": "^7.21.12", "escape-string-regexp": "^4.0.0", "fast-deep-equal": "^3.1.3", "nanoid": "^3.3.11", "standard-navigation": "^0.0.8", "use-latest-callback": "^0.2.4" }, "peerDependencies": { "react": ">= 18.2.0", "react-native": "*" } }, "sha512-Wy/6mai2HpA5AEVFk7JFfvv4RUArwuN2UenP/fc3NK7kOyfSlNu1tmb/3JDPpMzPIRbF1MPB8PKAHjVB29qNEQ=="], - "@react-navigation/native-stack": ["@react-navigation/native-stack@7.18.6", "", { "dependencies": { "@react-navigation/elements": "^2.9.36", "color": "^4.2.3", "sf-symbols-typescript": "^2.1.0", "warn-once": "^0.1.1" }, "peerDependencies": { "@react-navigation/native": "^7.3.14", "react": ">= 18.2.0", "react-native": "*", "react-native-safe-area-context": ">= 4.0.0", "react-native-screens": ">= 4.0.0" } }, "sha512-KuvvSBddHrbKC4c6yKz+UCFey2xgTuPQHgjf2wJQAvA7JM8jCQa3G1+QzhO6d44nYNKir3y6EounXZvQE/BX6w=="], + "@react-navigation/native-stack": ["@react-navigation/native-stack@7.18.8", "", { "dependencies": { "@react-navigation/elements": "^2.9.38", "color": "^4.2.3", "sf-symbols-typescript": "^2.1.0", "warn-once": "^0.1.1" }, "peerDependencies": { "@react-navigation/native": "^7.3.16", "react": ">= 18.2.0", "react-native": "*", "react-native-safe-area-context": ">= 4.0.0", "react-native-screens": ">= 4.0.0" } }, "sha512-Abcdt2ndmbeNSzJCXggxduK7X9yvMIajPNPdHgxsAZaA+16aIhb7TXZ2kRXprStZX5TRg8x+8G07Ne3kFwIQDg=="], "@react-navigation/routers": ["@react-navigation/routers@7.6.4", "", { "dependencies": { "nanoid": "^3.3.11" } }, "sha512-GI7eJm8/KsZUQaYcXvEExikKurRZRgEsSzyZ7faENfi65yqJBCXjDMwyN1pF6pNW1MoLH1ErDwDivFxY6BzD3w=="], - "@react-navigation/stack": ["@react-navigation/stack@7.10.17", "", { "dependencies": { "@react-navigation/elements": "^2.9.36", "color": "^4.2.3", "use-latest-callback": "^0.2.4" }, "peerDependencies": { "@react-navigation/native": "^7.3.14", "react": ">= 18.2.0", "react-native": "*", "react-native-gesture-handler": ">= 2.0.0", "react-native-safe-area-context": ">= 4.0.0", "react-native-screens": ">= 4.0.0" } }, "sha512-2b/AC8YxfPkFsN8DZGjrMiX6G86unbEonE0E8dA5LugzfKF/s28VBM7yBwZKRsp3ys5aVCvt/Z3zviQA/uGAIA=="], + "@react-navigation/stack": ["@react-navigation/stack@7.10.22", "", { "dependencies": { "@react-navigation/elements": "^2.9.38", "color": "^4.2.3", "use-latest-callback": "^0.2.4" }, "peerDependencies": { "@react-navigation/native": "^7.3.16", "react": ">= 18.2.0", "react-native": "*", "react-native-gesture-handler": ">= 2.0.0", "react-native-safe-area-context": ">= 4.0.0", "react-native-screens": ">= 4.0.0" } }, "sha512-R6I4nEWnm2M78FvyKRBApvi3g2o8K8YfA9/GE975xiV9+LrZVsHzeZE41mNa+lQKKpytd8DBlRIWMlKnKk/KhA=="], "@rtsao/scc": ["@rtsao/scc@1.1.0", "", {}, "sha512-zt6OdqaDoOnJ1ZYsCYGt9YmWzDXl4vQdKTyJev62gFhRGKdx7mcT54V9KIjg+d2wi9EXsPvAPKe7i7WjfVWB8g=="], @@ -654,7 +653,7 @@ "babel-preset-current-node-syntax": ["babel-preset-current-node-syntax@1.1.0", "", { "dependencies": { "@babel/plugin-syntax-async-generators": "^7.8.4", "@babel/plugin-syntax-bigint": "^7.8.3", "@babel/plugin-syntax-class-properties": "^7.12.13", "@babel/plugin-syntax-class-static-block": "^7.14.5", "@babel/plugin-syntax-import-attributes": "^7.24.7", "@babel/plugin-syntax-import-meta": "^7.10.4", "@babel/plugin-syntax-json-strings": "^7.8.3", "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4", "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3", "@babel/plugin-syntax-numeric-separator": "^7.10.4", "@babel/plugin-syntax-object-rest-spread": "^7.8.3", "@babel/plugin-syntax-optional-catch-binding": "^7.8.3", "@babel/plugin-syntax-optional-chaining": "^7.8.3", "@babel/plugin-syntax-private-property-in-object": "^7.14.5", "@babel/plugin-syntax-top-level-await": "^7.14.5" }, "peerDependencies": { "@babel/core": "^7.0.0" } }, "sha512-ldYss8SbBlWva1bs28q78Ju5Zq1F+8BrqBZZ0VFhLBvhh6lCpC2o3gDJi/5DRLs9FgYZCnmPYIVFU4lRXCkyUw=="], - "babel-preset-expo": ["babel-preset-expo@57.0.5", "", { "dependencies": { "@babel/generator": "^7.20.5", "@babel/helper-module-imports": "^7.25.9", "@babel/plugin-proposal-decorators": "^7.12.9", "@babel/plugin-proposal-export-default-from": "^7.24.7", "@babel/plugin-syntax-dynamic-import": "^7.8.3", "@babel/plugin-syntax-export-default-from": "^7.24.7", "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3", "@babel/plugin-syntax-optional-chaining": "^7.8.3", "@babel/plugin-transform-async-generator-functions": "^7.25.4", "@babel/plugin-transform-async-to-generator": "^7.24.7", "@babel/plugin-transform-block-scoping": "^7.25.0", "@babel/plugin-transform-class-properties": "^7.25.4", "@babel/plugin-transform-class-static-block": "^7.27.1", "@babel/plugin-transform-classes": "^7.25.4", "@babel/plugin-transform-destructuring": "^7.24.8", "@babel/plugin-transform-export-namespace-from": "^7.25.9", "@babel/plugin-transform-flow-strip-types": "^7.25.2", "@babel/plugin-transform-for-of": "^7.24.7", "@babel/plugin-transform-logical-assignment-operators": "^7.24.7", "@babel/plugin-transform-modules-commonjs": "^7.24.8", "@babel/plugin-transform-named-capturing-groups-regex": "^7.24.7", "@babel/plugin-transform-nullish-coalescing-operator": "^7.24.7", "@babel/plugin-transform-object-rest-spread": "^7.24.7", "@babel/plugin-transform-optional-catch-binding": "^7.24.7", "@babel/plugin-transform-optional-chaining": "^7.24.8", "@babel/plugin-transform-parameters": "^7.24.7", "@babel/plugin-transform-private-methods": "^7.24.7", "@babel/plugin-transform-private-property-in-object": "^7.24.7", "@babel/plugin-transform-react-display-name": "^7.24.7", "@babel/plugin-transform-react-jsx": "^7.28.6", "@babel/plugin-transform-react-jsx-development": "^7.27.1", "@babel/plugin-transform-react-pure-annotations": "^7.27.1", "@babel/plugin-transform-runtime": "^7.24.7", "@babel/plugin-transform-typescript": "^7.25.2", "@babel/plugin-transform-unicode-regex": "^7.24.7", "@babel/preset-typescript": "^7.23.0", "@react-native/babel-plugin-codegen": "0.86.2", "babel-plugin-react-compiler": "^1.0.0", "babel-plugin-react-native-web": "~0.21.0", "babel-plugin-syntax-hermes-parser": "^0.36.0", "babel-plugin-transform-flow-enums": "^0.0.2", "debug": "^4.3.4" }, "peerDependencies": { "@babel/runtime": "^7.20.0", "expo": "*", "expo-widgets": "^57.0.7", "react-refresh": ">=0.14.0 <1.0.0" }, "optionalPeers": ["@babel/runtime", "expo", "expo-widgets"] }, "sha512-sz9ZBTiUAlu5P9VORVNKoeAaY2qKFQRC6eQV5Y8aMkqcorvXKEv97UeCkFMLmMBEPKA+QeWImREKkX9/H21WQA=="], + "babel-preset-expo": ["babel-preset-expo@57.0.6", "", { "dependencies": { "@babel/generator": "^7.20.5", "@babel/helper-module-imports": "^7.25.9", "@babel/plugin-proposal-decorators": "^7.12.9", "@babel/plugin-proposal-export-default-from": "^7.24.7", "@babel/plugin-syntax-dynamic-import": "^7.8.3", "@babel/plugin-syntax-export-default-from": "^7.24.7", "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3", "@babel/plugin-syntax-optional-chaining": "^7.8.3", "@babel/plugin-transform-async-generator-functions": "^7.25.4", "@babel/plugin-transform-async-to-generator": "^7.24.7", "@babel/plugin-transform-block-scoping": "^7.25.0", "@babel/plugin-transform-class-properties": "^7.25.4", "@babel/plugin-transform-class-static-block": "^7.27.1", "@babel/plugin-transform-classes": "^7.25.4", "@babel/plugin-transform-destructuring": "^7.24.8", "@babel/plugin-transform-export-namespace-from": "^7.25.9", "@babel/plugin-transform-flow-strip-types": "^7.25.2", "@babel/plugin-transform-for-of": "^7.24.7", "@babel/plugin-transform-logical-assignment-operators": "^7.24.7", "@babel/plugin-transform-modules-commonjs": "^7.24.8", "@babel/plugin-transform-named-capturing-groups-regex": "^7.24.7", "@babel/plugin-transform-nullish-coalescing-operator": "^7.24.7", "@babel/plugin-transform-object-rest-spread": "^7.24.7", "@babel/plugin-transform-optional-catch-binding": "^7.24.7", "@babel/plugin-transform-optional-chaining": "^7.24.8", "@babel/plugin-transform-parameters": "^7.24.7", "@babel/plugin-transform-private-methods": "^7.24.7", "@babel/plugin-transform-private-property-in-object": "^7.24.7", "@babel/plugin-transform-react-display-name": "^7.24.7", "@babel/plugin-transform-react-jsx": "^7.28.6", "@babel/plugin-transform-react-jsx-development": "^7.27.1", "@babel/plugin-transform-react-pure-annotations": "^7.27.1", "@babel/plugin-transform-runtime": "^7.24.7", "@babel/plugin-transform-typescript": "^7.25.2", "@babel/plugin-transform-unicode-regex": "^7.24.7", "@babel/preset-typescript": "^7.23.0", "@react-native/babel-plugin-codegen": "0.86.2", "babel-plugin-react-compiler": "^1.0.0", "babel-plugin-react-native-web": "~0.21.0", "babel-plugin-syntax-hermes-parser": "^0.36.0", "babel-plugin-transform-flow-enums": "^0.0.2", "debug": "^4.3.4" }, "peerDependencies": { "@babel/runtime": "^7.20.0", "expo": "*", "expo-widgets": "^57.0.8", "react-refresh": ">=0.14.0 <1.0.0" }, "optionalPeers": ["@babel/runtime", "expo", "expo-widgets"] }, "sha512-ASyy0iP7yPQtq2QaMEnZG4O7YQ/x4sTMguk7PZcow2OHFnWsBpX6v+UCmh/uwCzGfD1q93jDQEuACWwWx4kSrw=="], "babel-preset-jest": ["babel-preset-jest@29.6.3", "", { "dependencies": { "babel-plugin-jest-hoist": "^29.6.3", "babel-preset-current-node-syntax": "^1.0.0" }, "peerDependencies": { "@babel/core": "^7.0.0" } }, "sha512-0B3bhxR6snWXJZtR/RliHTDPRgn1sNHOR0yVtq/IiQFyuOVjFS+wuio/R4gSNkyYmKmJB4wGZv2NZanmKmTnNA=="], @@ -890,17 +889,17 @@ "expect": ["expect@29.7.0", "", { "dependencies": { "@jest/expect-utils": "^29.7.0", "jest-get-type": "^29.6.3", "jest-matcher-utils": "^29.7.0", "jest-message-util": "^29.7.0", "jest-util": "^29.7.0" } }, "sha512-2Zks0hf1VLFYI1kbh0I5jP3KHHyCHpkfyHBzsSXRFgl/Bg9mWYfMW8oD+PdMPlEwy5HNsR9JutYy6pMeOh61nw=="], - "expo": ["expo@57.0.9", "", { "dependencies": { "@babel/runtime": "^7.20.0", "@expo/cli": "^57.0.11", "@expo/config": "~57.0.6", "@expo/config-plugins": "~57.0.6", "@expo/devtools": "~57.0.1", "@expo/dom-webview": "~57.0.1", "@expo/fingerprint": "^0.20.6", "@expo/local-build-cache-provider": "^57.0.5", "@expo/log-box": "^57.0.2", "@expo/metro": "~56.0.0", "@expo/metro-config": "~57.0.7", "@ungap/structured-clone": "^1.3.0", "babel-preset-expo": "~57.0.5", "expo-asset": "~57.0.8", "expo-constants": "~57.0.8", "expo-file-system": "~57.0.1", "expo-font": "~57.0.1", "expo-keep-awake": "~57.0.1", "expo-modules-autolinking": "~57.0.9", "expo-modules-core": "~57.0.8", "pretty-format": "^29.7.0", "react-refresh": "^0.14.2", "whatwg-url-minimum": "^0.1.2" }, "peerDependencies": { "@expo/metro-runtime": "*", "react": "*", "react-dom": "*", "react-native": "*", "react-native-web": "*", "react-native-webview": "*" }, "optionalPeers": ["@expo/metro-runtime", "react-dom", "react-native-web", "react-native-webview"], "bin": { "expo": "bin/cli", "fingerprint": "bin/fingerprint", "expo-modules-autolinking": "bin/autolinking" } }, "sha512-NDEvnU+vjRdMbtOyDC25OSok9/E97al97pyx+bMphQgNRGAED0D7oF8ha7oGYsLE+7jFzpPADVM9S60dGbpHIA=="], + "expo": ["expo@57.0.11", "", { "dependencies": { "@babel/runtime": "^7.20.0", "@expo/cli": "^57.0.13", "@expo/config": "~57.0.6", "@expo/config-plugins": "~57.0.7", "@expo/devtools": "~57.0.1", "@expo/dom-webview": "~57.0.1", "@expo/fingerprint": "^0.20.6", "@expo/local-build-cache-provider": "^57.0.5", "@expo/log-box": "^57.0.2", "@expo/metro": "~56.0.0", "@expo/metro-config": "~57.0.7", "@ungap/structured-clone": "^1.3.0", "babel-preset-expo": "~57.0.6", "expo-asset": "~57.0.9", "expo-constants": "~57.0.9", "expo-file-system": "~57.0.2", "expo-font": "~57.0.1", "expo-keep-awake": "~57.0.1", "expo-modules-autolinking": "~57.0.9", "expo-modules-core": "~57.0.10", "pretty-format": "^29.7.0", "react-refresh": "^0.14.2", "whatwg-url-minimum": "^0.1.2" }, "peerDependencies": { "@expo/metro-runtime": "*", "react": "*", "react-dom": "*", "react-native": "*", "react-native-web": "*", "react-native-webview": "*" }, "optionalPeers": ["@expo/metro-runtime", "react-dom", "react-native-web", "react-native-webview"], "bin": { "expo": "bin/cli", "fingerprint": "bin/fingerprint", "expo-modules-autolinking": "bin/autolinking" } }, "sha512-R97257N39Dw0kQFuI4/RvYx95GQ+dmePdo8hxcMOjDxAT4VcCckjILJeAWCE19Jxjb92hZ5NDXAfDPkkV1RB9w=="], "expo-application": ["expo-application@57.0.2", "", { "peerDependencies": { "expo": "*" } }, "sha512-q31YwcXyymviAmdrtDfAg3Dld4VMxLCNAfgMHip7vZpPX4lzF/AfwsywqBJUAjQnJknzaNAkzqvMVjO5XmKYDA=="], - "expo-asset": ["expo-asset@57.0.8", "", { "dependencies": { "@expo/image-utils": "^0.11.4", "expo-constants": "~57.0.8" }, "peerDependencies": { "expo": "*", "react": "*", "react-native": "*" } }, "sha512-sGocG+Wd2WcZ1KjKyB2LfUZXzrBM0VHEATGcpJKF9T3HM56M/sMbH73vv+n85u5Zr0FkJjEbV1DWhGPimCR1QQ=="], + "expo-asset": ["expo-asset@57.0.9", "", { "dependencies": { "@expo/image-utils": "^0.11.4", "expo-constants": "~57.0.9" }, "peerDependencies": { "expo": "*", "react": "*", "react-native": "*" } }, "sha512-FXlwwW5ThJ2kwXqVX0VcYcDrbmzPDUGPYJOuQZYfsdVB+TLA8LmOgU0Y5ykzLmLs5ONiqs/YjT6Uubv1NUQFzg=="], - "expo-build-properties": ["expo-build-properties@57.0.8", "", { "dependencies": { "@expo/schema-utils": "^57.0.2", "resolve-from": "^5.0.0", "semver": "^7.6.0" }, "peerDependencies": { "expo": "*" } }, "sha512-6/SDeqKLKaF8MRfLZ3JhiiDN0y5uXtyefhWRZ42ZX03QVZ8Fw4dnbdTSHpsBvbKNIluYk5bP/zosdwkbeeNd9A=="], + "expo-build-properties": ["expo-build-properties@57.0.9", "", { "dependencies": { "@expo/schema-utils": "^57.0.2", "resolve-from": "^5.0.0", "semver": "^7.6.0" }, "peerDependencies": { "expo": "*" } }, "sha512-IX8Nz85yNDZyqBK7zbLEfn4ijMGaF6TmLjCY2KE0UKltUoV78DhgN6ksPZbDbPDvqLpU2fMY/5OD4CbYB7hHwg=="], "expo-clipboard": ["expo-clipboard@57.0.1", "", { "peerDependencies": { "expo": "*", "react": "*", "react-native": "*" } }, "sha512-HWICri4+1ao7S6QEfcorxVumXDiDnx1guGGewjZgGJWLGxFYs0RgH8ujBs+lkTzBkMmlwADaWSlaesR+nDJt5Q=="], - "expo-constants": ["expo-constants@57.0.8", "", { "dependencies": { "@expo/env": "~2.4.2" }, "peerDependencies": { "expo": "*", "react-native": "*" } }, "sha512-ts+B7E5076BtkblrKGy7+Sm/R2obHfTwqhmYQVYbWRtilv3+C/xNwHZhyNEnAvzM/JjKqx7UdaITUBYaeFreZw=="], + "expo-constants": ["expo-constants@57.0.9", "", { "dependencies": { "@expo/env": "~2.4.2" }, "peerDependencies": { "expo": "*", "react-native": "*" } }, "sha512-Y47sGiF+U8fwicUSPdJPjB27PuU+FgLK4Mpai0ksZF5hv8jNN3HBqKuDNxsiu70uHBKf80TaR4gwMPh0pmETiQ=="], "expo-crypto": ["expo-crypto@57.0.1", "", { "peerDependencies": { "expo": "*" } }, "sha512-xwegXQw3ATgeL1ZuqbSNrGzOeG+zNeh6Z6DSJk825Qpa3TEQQ1kG3ioE1p3g/SNF373BAVz2iBKUTSytlIbBRA=="], @@ -908,13 +907,13 @@ "expo-eas-client": ["expo-eas-client@57.0.1", "", {}, "sha512-4w51+zsl/ziUHQMJgLgUdgsNhRPAwHBfySpPB1hpWU21X74QS9T4SqDftaRnrDagn/DfcrXUMJvHbDQUxLPJNA=="], - "expo-file-system": ["expo-file-system@57.0.1", "", { "peerDependencies": { "expo": "*", "react-native": "*" } }, "sha512-w7/ERvQFrGP2apTO9lDtZ+O6JQIhfakL7+Xqzh+rfMO9B4LB4qwrz+YvLgir8KFRVX64JHBnRuYBVLY1oQZcqw=="], + "expo-file-system": ["expo-file-system@57.0.2", "", { "peerDependencies": { "expo": "*", "react-native": "*" } }, "sha512-bPgzpaOJ3NWHZxV++Osj/1QoFzFe/QOo1jBF4EODJdiZgrrxyi2dv+7PLhKuut5QqPBuihUOITRh3s5jhRtA5A=="], "expo-font": ["expo-font@57.0.1", "", { "dependencies": { "fontfaceobserver": "^2.1.0" }, "peerDependencies": { "expo": "*", "react": "*", "react-native": "*" } }, "sha512-QyS9L1Kh9sKJg4gfU6rdbpxpmH+DyzBX8z6jVvXMUDoqLr1GqmkO/Wu379KCXjL///kWbhpNlbi7AgBuj4VdIQ=="], "expo-image-loader": ["expo-image-loader@57.0.1", "", { "peerDependencies": { "expo": "*" } }, "sha512-uhrZKLT/cTl2mXyR28kPpVkS5O+PK9N1QA/07IFM4f5T4g0lTW1JHT3NEWwEEsGFldPmVX4j7LwUVVZxE+woug=="], - "expo-image-picker": ["expo-image-picker@57.0.7", "", { "dependencies": { "expo-image-loader": "~57.0.1" }, "peerDependencies": { "expo": "*" } }, "sha512-aPZis1VeeAOeWrM/VID/As7/hF/WM6egtN2AUY+ODV97oBKfAZcGHMw7MR/5BoEy3HXzR5n1ZSYMEwnHBhICvg=="], + "expo-image-picker": ["expo-image-picker@57.0.8", "", { "dependencies": { "expo-image-loader": "~57.0.1" }, "peerDependencies": { "expo": "*" } }, "sha512-LXJCGxunnQ4beqk+TW3+llRyss/XITOKWdIjqgF1H9mL3CgKN+hvABWAqLVWapGz7RoJBf+r53FO9i48yicbbw=="], "expo-json-utils": ["expo-json-utils@57.0.1", "", {}, "sha512-cgTe1NqzQdYs/WN+3nIY5IZg8s0pb0xaTUbhYvxQDn137GbwRfHoGM2se3m3Vsl4Qu+B9G4RPEK5WJDEU2Do7g=="], @@ -928,13 +927,13 @@ "expo-modules-autolinking": ["expo-modules-autolinking@57.0.9", "", { "dependencies": { "@expo/require-utils": "^57.0.4", "@expo/spawn-async": "^1.8.0", "chalk": "^4.1.0", "commander": "^7.2.0" }, "bin": { "expo-modules-autolinking": "bin/expo-modules-autolinking.js" } }, "sha512-lj2nsAKMMRLXSFnGgaaQrWJ2fdSpLPc/bca6Rkiw4g8zYPn7qX4MRUJgavvzm/hBrzvMnlhXVgJtidOGuwBh+w=="], - "expo-modules-core": ["expo-modules-core@57.0.8", "", { "dependencies": { "@expo/expo-modules-macros-plugin": "0.6.1", "expo-modules-jsi": "~57.0.4", "invariant": "^2.2.4" }, "peerDependencies": { "react": "*", "react-native": "*", "react-native-worklets": "^0.7.4 || ^0.8.0 || ^0.9.0 || ^0.10.0" }, "optionalPeers": ["react-native-worklets"] }, "sha512-ZUU943Oso3B8jFggC+2+LOk8oa+im66IQlleYay6WP5iexbdF2fqpgC4BcYsN4xhCkDKh7KDINSt1FlcxyRRjQ=="], + "expo-modules-core": ["expo-modules-core@57.0.10", "", { "dependencies": { "@expo/expo-modules-macros-plugin": "0.6.1", "expo-modules-jsi": "~57.0.4", "invariant": "^2.2.4" }, "peerDependencies": { "react": "*", "react-native": "*", "react-native-worklets": "^0.7.4 || ^0.8.0 || ^0.9.0 || ^0.10.0" }, "optionalPeers": ["react-native-worklets"] }, "sha512-aRi3G8OctoyZl8x9CLTVpbPljClfKm2eqKRgBzhcGsrH3gS1t5Y2ye7+PIZK4XK2VVP5iGqygN2b1vtqRo3xVQ=="], "expo-modules-jsi": ["expo-modules-jsi@57.0.4", "", { "peerDependencies": { "react-native": "*" } }, "sha512-vt7FyqUqqFXiRVnBqYD7y+GSPTgeua5Ocoy0+SYt+RSHkZEA2Fyop7If3g1TYDzQObYybPRo7TG2Rle1XLaWFw=="], "expo-navigation-bar": ["expo-navigation-bar@57.0.2", "", { "dependencies": { "debug": "^4.3.2" }, "peerDependencies": { "expo": "*", "react": "*", "react-native": "*" } }, "sha512-Ufe49dsTZjarA7gMMwwwnNJWpXo+oTyl5Ud0g3lsGVrj2HXjyw9cb9098N8+CoWpjfIa5PghuRYYXrcCrGQIHg=="], - "expo-notifications": ["expo-notifications@57.0.8", "", { "dependencies": { "@expo/image-utils": "^0.11.4", "abort-controller": "^3.0.0", "badgin": "^1.1.5", "expo-application": "~57.0.2", "expo-constants": "~57.0.8" }, "peerDependencies": { "expo": "*", "react": "*", "react-native": "*" } }, "sha512-9pTNFMB9vk7MmULRSq7SD2nBRXhIh7IYAOSAFzFIYna6csJKdzeuKikjuUwP5KZYwxejoaN2BYBBqdLKaUpT/w=="], + "expo-notifications": ["expo-notifications@57.0.9", "", { "dependencies": { "@expo/image-utils": "^0.11.4", "abort-controller": "^3.0.0", "badgin": "^1.1.5", "expo-application": "~57.0.2", "expo-constants": "~57.0.9" }, "peerDependencies": { "expo": "*", "react": "*", "react-native": "*" } }, "sha512-AeA4sdgvfeyw5/O+JPekCIex8JfoBO21fABfZCKAeXF19pWaVtXva08dqwF41JW/LWAmvrshCAH36gP+jdVD4Q=="], "expo-screen-capture": ["expo-screen-capture@57.0.1", "", { "peerDependencies": { "expo": "*", "react": "*" } }, "sha512-toam1doTc0auN0SzQA2ziamXaDhevvCBxhrGyYdVMpfbmj0+0brm+u/pAUkJJMe/f+l3LvWRwltV0dLaMdiY9A=="], @@ -942,7 +941,7 @@ "expo-server": ["expo-server@57.0.1", "", {}, "sha512-sBfVDH6dmKVHZxqUxbfkzS00PZELMZt1IpnHKxcOTMZtR/t7CtRAFrbXcisG+EyzeqHSVDacZT+1tbYfZt5D8w=="], - "expo-sharing": ["expo-sharing@57.0.8", "", { "dependencies": { "@expo/config-plugins": "^57.0.6", "@expo/config-types": "^57.0.2", "@expo/plist": "^0.8.1" }, "peerDependencies": { "expo": "*", "react": "*", "react-native": "*" } }, "sha512-ZjiA09iJjzveachyBlbIijSH++fiacdvuenxb/gsdW21V3SUSxMQd+krPmafnhnMus5aBqpP0TXCBfBJN+0Bfg=="], + "expo-sharing": ["expo-sharing@57.0.10", "", { "dependencies": { "@expo/config-plugins": "^57.0.7", "@expo/config-types": "^57.0.2", "@expo/plist": "^0.8.1" }, "peerDependencies": { "expo": "*", "react": "*", "react-native": "*" } }, "sha512-WvZSgY96NIR3ZHEud5T4K5Q+OK+WW7PGN8CZ1zIYIhxlwKlMOf9qGNCYVDY3pMPU8FK7n+gbiguGxulWEXot6w=="], "expo-status-bar": ["expo-status-bar@57.0.1", "", { "peerDependencies": { "expo": "*", "react": "*", "react-native": "*" } }, "sha512-Xwaq1gAoVRWx5dPG5VhT5RSbnI9OilhZnO5qoPBnUaBAa5VzRzfdS8q0/bsPt0jR2DKLtGuP0bQ6efMJ4RIMDg=="], @@ -950,7 +949,7 @@ "expo-system-ui": ["expo-system-ui@57.0.2", "", { "dependencies": { "@react-native/normalize-colors": "0.86.2", "debug": "^4.3.2" }, "peerDependencies": { "expo": "*", "react-native": "*", "react-native-web": "*" }, "optionalPeers": ["react-native-web"] }, "sha512-zABCRqFSioDBAo/RtmS0dQiGgDtDPZUVk01Y3Ti4ducobNM4HTM2sNAtq+YPpEUhaVW3hccPVsEUH4LK/ADVhA=="], - "expo-updates": ["expo-updates@57.0.11", "", { "dependencies": { "@expo/code-signing-certificates": "^0.0.6", "@expo/plist": "^0.8.1", "@expo/spawn-async": "^1.8.0", "arg": "^4.1.0", "chalk": "^4.1.2", "debug": "^4.3.4", "expo-eas-client": "~57.0.1", "expo-manifests": "~57.0.1", "expo-structured-headers": "~57.0.0", "expo-updates-interface": "~57.0.1", "getenv": "^2.0.0", "glob": "^13.0.0", "ignore": "^5.3.1", "nullthrows": "^1.1.1", "resolve-from": "^5.0.0" }, "peerDependencies": { "expo": "*", "expo-dev-client": "*", "react": "*", "react-native": "*" }, "optionalPeers": ["expo-dev-client"], "bin": { "expo-updates": "bin/cli.js" } }, "sha512-V8m+bVHvyUXggjmhxt/t4yyj6oDfdAN0kdx0nAt9p2i7xGci6lkzfWzcwsNUE0ZmStHR4ZyzQVFR1U0vP7C/7g=="], + "expo-updates": ["expo-updates@57.0.12", "", { "dependencies": { "@expo/code-signing-certificates": "^0.0.6", "@expo/plist": "^0.8.1", "@expo/spawn-async": "^1.8.0", "arg": "^4.1.0", "chalk": "^4.1.2", "debug": "^4.3.4", "expo-eas-client": "~57.0.1", "expo-manifests": "~57.0.1", "expo-structured-headers": "~57.0.0", "expo-updates-interface": "~57.0.1", "getenv": "^2.0.0", "glob": "^13.0.0", "ignore": "^5.3.1", "nullthrows": "^1.1.1", "resolve-from": "^5.0.0" }, "peerDependencies": { "expo": "*", "expo-dev-client": "*", "react": "*", "react-native": "*" }, "optionalPeers": ["expo-dev-client"], "bin": { "expo-updates": "bin/cli.js" } }, "sha512-ZFsW8Mi9qFrrYPSXF++1FXejjflRdgbVPzaSJJATuHelVmIIb3D98gCO9sIsaLPHO1RCQVj1ltkj51VnwVL+4g=="], "expo-updates-interface": ["expo-updates-interface@57.0.1", "", { "peerDependencies": { "expo": "*" } }, "sha512-+LUWwJ0gf/TEKMVdQAw/Gjih4dvrk+URgy24X9qEGKuuMDZqjBRm9T4yQyBVALGL5TTdPUaB6ILxx3lshm3pwQ=="], @@ -1080,7 +1079,7 @@ "iconv-lite": ["iconv-lite@0.6.3", "", { "dependencies": { "safer-buffer": ">= 2.1.2 < 3.0.0" } }, "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw=="], - "ignore": ["ignore@7.0.5", "", {}, "sha512-Hs59xBNfUIunMFgWAbGX5cq6893IbWg4KnrjbYwX3tx0ztorVgTDA6B2sxf8ejHJ4wz8BqGUMYlnzNBer5NvGg=="], + "ignore": ["ignore@5.3.2", "", {}, "sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g=="], "image-size": ["image-size@1.2.1", "", { "dependencies": { "queue": "6.0.2" }, "bin": "bin/image-size.js" }, "sha512-rH+46sQJ2dlwfjfhCyNx5thzrv+dtmBIhPHk0zgRUukHzZ/kRueTJXoYYsclBaKcSMBWuGbOFXtioLpzTb5euw=="], @@ -1556,8 +1555,6 @@ "react-native-web": ["react-native-web@0.21.2", "", { "dependencies": { "@babel/runtime": "^7.18.6", "@react-native/normalize-colors": "^0.74.1", "fbjs": "^3.0.4", "inline-style-prefixer": "^7.0.1", "memoize-one": "^6.0.0", "nullthrows": "^1.1.1", "postcss-value-parser": "^4.2.0", "styleq": "^0.1.3" }, "peerDependencies": { "react": "^18.0.0 || ^19.0.0", "react-dom": "^18.0.0 || ^19.0.0" } }, "sha512-SO2t9/17zM4iEnFvlu2DA9jqNbzNhoUP+AItkoCOyFmDMOhUnBBznBDCYN92fGdfAkfQlWzPoez6+zLxFNsZEg=="], - "react-native-webview": ["react-native-webview@13.16.1", "", { "dependencies": { "escape-string-regexp": "^4.0.0", "invariant": "2.2.4" }, "peerDependencies": { "react": "*", "react-native": "*" } }, "sha512-If0eHhoEdOYDcHsX+xBFwHMbWBGK1BvGDQDQdVkwtSIXiq1uiqjkpWVP2uQ1as94J0CzvFE9PUNDuhiX0Z6ubw=="], - "react-native-worklets": ["react-native-worklets@0.10.1", "", { "dependencies": { "@babel/plugin-transform-arrow-functions": "^7.27.1", "@babel/plugin-transform-class-properties": "^7.28.6", "@babel/plugin-transform-classes": "^7.28.6", "@babel/plugin-transform-nullish-coalescing-operator": "^7.28.6", "@babel/plugin-transform-optional-chaining": "^7.28.6", "@babel/plugin-transform-shorthand-properties": "^7.27.1", "@babel/plugin-transform-template-literals": "^7.27.1", "@babel/plugin-transform-unicode-regex": "^7.27.1", "@babel/preset-typescript": "^7.28.5", "@babel/types": "^7.27.1", "convert-source-map": "^2.0.0", "semver": "^7.7.4" }, "peerDependencies": { "@babel/core": "*", "@react-native/metro-config": "*", "react": "*", "react-native": "0.83 - 0.86" } }, "sha512-62mRM19bDpfpdI8HLkEErcdOsrAPDtE9lA/sw+5lLRpzBHNhxaoj9QyY2KjXqUmirelxkX4zuPGTC3VdA0feJA=="], "react-refresh": ["react-refresh@0.14.2", "", {}, "sha512-jCvmsr+1IUSMUyzOkRcvnVbX3ZYC6g9TDrDbFuFmRDq7PD4yaGbLKNQL6k2jnArV8hjYxh7hVhAZB6s9HDGpZA=="], @@ -1898,6 +1895,8 @@ "@babel/helper-define-polyfill-provider/@babel/helper-compilation-targets": ["@babel/helper-compilation-targets@7.27.2", "", { "dependencies": { "@babel/compat-data": "^7.27.2", "@babel/helper-validator-option": "^7.27.1", "browserslist": "^4.24.0", "lru-cache": "^5.1.1", "semver": "^6.3.1" } }, "sha512-2+1thGUUWWjLTYTHZWK1n8Yga0ijBz1XAhUXcKy81rd5g6yh7hGqMp45v7cadSbEHc9G3OTv45SyneRN3ps4DQ=="], + "@babel/helper-define-polyfill-provider/@babel/helper-plugin-utils": ["@babel/helper-plugin-utils@7.27.1", "", {}, "sha512-1gn1Up5YXka3YYAHGKpbideQ5Yjf1tDa9qYcgysz+cNCXukyLl6DjPXhD3VRwSb8c0J9tA4b2+rHEZtc6R0tlw=="], + "@babel/helper-define-polyfill-provider/debug": ["debug@4.4.1", "", { "dependencies": { "ms": "^2.1.3" } }, "sha512-KcKCqiftBJcZr++7ykoDIEwSa3XWowTfNPo92BYxjXiyYEVrUQh2aLyhxBCwww+heortUFxEJYcRzosstTEBYQ=="], "@babel/helper-member-expression-to-functions/@babel/traverse": ["@babel/traverse@7.28.5", "", { "dependencies": { "@babel/code-frame": "^7.27.1", "@babel/generator": "^7.28.5", "@babel/helper-globals": "^7.28.0", "@babel/parser": "^7.28.5", "@babel/template": "^7.27.2", "@babel/types": "^7.28.5", "debug": "^4.3.1" } }, "sha512-TCCj4t55U90khlYkVV/0TfkJkAkUg3jZFA3Neb7unZT8CPok7iiRfaX0F+WnqWqt7OxhOn0uBKXCw4lbL8W0aQ=="], @@ -1922,17 +1921,63 @@ "@babel/helper-wrap-function/@babel/types": ["@babel/types@7.28.5", "", { "dependencies": { "@babel/helper-string-parser": "^7.27.1", "@babel/helper-validator-identifier": "^7.28.5" } }, "sha512-qQ5m48eI/MFLQ5PxQj4PFaprjyCTLI37ElWMmNs0K8Lk3dVeOdNpB3ks8jc7yM5CDmVC73eMVk/trk3fgmrUpA=="], - "@babel/plugin-syntax-jsx/@babel/helper-plugin-utils": ["@babel/helper-plugin-utils@7.29.7", "", {}, "sha512-G7sHYigPY17oO5SYWnfD/0MTBwVR781S/JI643e/JhUYgVgWE/61SoW3NH9KWUKyKq5LVh3npif99Wkt6j86Jw=="], + "@babel/plugin-proposal-decorators/@babel/helper-plugin-utils": ["@babel/helper-plugin-utils@7.27.1", "", {}, "sha512-1gn1Up5YXka3YYAHGKpbideQ5Yjf1tDa9qYcgysz+cNCXukyLl6DjPXhD3VRwSb8c0J9tA4b2+rHEZtc6R0tlw=="], + + "@babel/plugin-proposal-export-default-from/@babel/helper-plugin-utils": ["@babel/helper-plugin-utils@7.27.1", "", {}, "sha512-1gn1Up5YXka3YYAHGKpbideQ5Yjf1tDa9qYcgysz+cNCXukyLl6DjPXhD3VRwSb8c0J9tA4b2+rHEZtc6R0tlw=="], + + "@babel/plugin-syntax-async-generators/@babel/helper-plugin-utils": ["@babel/helper-plugin-utils@7.27.1", "", {}, "sha512-1gn1Up5YXka3YYAHGKpbideQ5Yjf1tDa9qYcgysz+cNCXukyLl6DjPXhD3VRwSb8c0J9tA4b2+rHEZtc6R0tlw=="], + + "@babel/plugin-syntax-bigint/@babel/helper-plugin-utils": ["@babel/helper-plugin-utils@7.27.1", "", {}, "sha512-1gn1Up5YXka3YYAHGKpbideQ5Yjf1tDa9qYcgysz+cNCXukyLl6DjPXhD3VRwSb8c0J9tA4b2+rHEZtc6R0tlw=="], + + "@babel/plugin-syntax-class-properties/@babel/helper-plugin-utils": ["@babel/helper-plugin-utils@7.27.1", "", {}, "sha512-1gn1Up5YXka3YYAHGKpbideQ5Yjf1tDa9qYcgysz+cNCXukyLl6DjPXhD3VRwSb8c0J9tA4b2+rHEZtc6R0tlw=="], + + "@babel/plugin-syntax-class-static-block/@babel/helper-plugin-utils": ["@babel/helper-plugin-utils@7.27.1", "", {}, "sha512-1gn1Up5YXka3YYAHGKpbideQ5Yjf1tDa9qYcgysz+cNCXukyLl6DjPXhD3VRwSb8c0J9tA4b2+rHEZtc6R0tlw=="], + + "@babel/plugin-syntax-decorators/@babel/helper-plugin-utils": ["@babel/helper-plugin-utils@7.27.1", "", {}, "sha512-1gn1Up5YXka3YYAHGKpbideQ5Yjf1tDa9qYcgysz+cNCXukyLl6DjPXhD3VRwSb8c0J9tA4b2+rHEZtc6R0tlw=="], + + "@babel/plugin-syntax-dynamic-import/@babel/helper-plugin-utils": ["@babel/helper-plugin-utils@7.27.1", "", {}, "sha512-1gn1Up5YXka3YYAHGKpbideQ5Yjf1tDa9qYcgysz+cNCXukyLl6DjPXhD3VRwSb8c0J9tA4b2+rHEZtc6R0tlw=="], + + "@babel/plugin-syntax-export-default-from/@babel/helper-plugin-utils": ["@babel/helper-plugin-utils@7.27.1", "", {}, "sha512-1gn1Up5YXka3YYAHGKpbideQ5Yjf1tDa9qYcgysz+cNCXukyLl6DjPXhD3VRwSb8c0J9tA4b2+rHEZtc6R0tlw=="], + + "@babel/plugin-syntax-flow/@babel/helper-plugin-utils": ["@babel/helper-plugin-utils@7.27.1", "", {}, "sha512-1gn1Up5YXka3YYAHGKpbideQ5Yjf1tDa9qYcgysz+cNCXukyLl6DjPXhD3VRwSb8c0J9tA4b2+rHEZtc6R0tlw=="], + + "@babel/plugin-syntax-import-attributes/@babel/helper-plugin-utils": ["@babel/helper-plugin-utils@7.27.1", "", {}, "sha512-1gn1Up5YXka3YYAHGKpbideQ5Yjf1tDa9qYcgysz+cNCXukyLl6DjPXhD3VRwSb8c0J9tA4b2+rHEZtc6R0tlw=="], + + "@babel/plugin-syntax-import-meta/@babel/helper-plugin-utils": ["@babel/helper-plugin-utils@7.27.1", "", {}, "sha512-1gn1Up5YXka3YYAHGKpbideQ5Yjf1tDa9qYcgysz+cNCXukyLl6DjPXhD3VRwSb8c0J9tA4b2+rHEZtc6R0tlw=="], + + "@babel/plugin-syntax-json-strings/@babel/helper-plugin-utils": ["@babel/helper-plugin-utils@7.27.1", "", {}, "sha512-1gn1Up5YXka3YYAHGKpbideQ5Yjf1tDa9qYcgysz+cNCXukyLl6DjPXhD3VRwSb8c0J9tA4b2+rHEZtc6R0tlw=="], + + "@babel/plugin-syntax-logical-assignment-operators/@babel/helper-plugin-utils": ["@babel/helper-plugin-utils@7.27.1", "", {}, "sha512-1gn1Up5YXka3YYAHGKpbideQ5Yjf1tDa9qYcgysz+cNCXukyLl6DjPXhD3VRwSb8c0J9tA4b2+rHEZtc6R0tlw=="], + + "@babel/plugin-syntax-nullish-coalescing-operator/@babel/helper-plugin-utils": ["@babel/helper-plugin-utils@7.27.1", "", {}, "sha512-1gn1Up5YXka3YYAHGKpbideQ5Yjf1tDa9qYcgysz+cNCXukyLl6DjPXhD3VRwSb8c0J9tA4b2+rHEZtc6R0tlw=="], + + "@babel/plugin-syntax-numeric-separator/@babel/helper-plugin-utils": ["@babel/helper-plugin-utils@7.27.1", "", {}, "sha512-1gn1Up5YXka3YYAHGKpbideQ5Yjf1tDa9qYcgysz+cNCXukyLl6DjPXhD3VRwSb8c0J9tA4b2+rHEZtc6R0tlw=="], + + "@babel/plugin-syntax-object-rest-spread/@babel/helper-plugin-utils": ["@babel/helper-plugin-utils@7.27.1", "", {}, "sha512-1gn1Up5YXka3YYAHGKpbideQ5Yjf1tDa9qYcgysz+cNCXukyLl6DjPXhD3VRwSb8c0J9tA4b2+rHEZtc6R0tlw=="], - "@babel/plugin-syntax-typescript/@babel/helper-plugin-utils": ["@babel/helper-plugin-utils@7.29.7", "", {}, "sha512-G7sHYigPY17oO5SYWnfD/0MTBwVR781S/JI643e/JhUYgVgWE/61SoW3NH9KWUKyKq5LVh3npif99Wkt6j86Jw=="], + "@babel/plugin-syntax-optional-catch-binding/@babel/helper-plugin-utils": ["@babel/helper-plugin-utils@7.27.1", "", {}, "sha512-1gn1Up5YXka3YYAHGKpbideQ5Yjf1tDa9qYcgysz+cNCXukyLl6DjPXhD3VRwSb8c0J9tA4b2+rHEZtc6R0tlw=="], + + "@babel/plugin-syntax-optional-chaining/@babel/helper-plugin-utils": ["@babel/helper-plugin-utils@7.27.1", "", {}, "sha512-1gn1Up5YXka3YYAHGKpbideQ5Yjf1tDa9qYcgysz+cNCXukyLl6DjPXhD3VRwSb8c0J9tA4b2+rHEZtc6R0tlw=="], + + "@babel/plugin-syntax-private-property-in-object/@babel/helper-plugin-utils": ["@babel/helper-plugin-utils@7.27.1", "", {}, "sha512-1gn1Up5YXka3YYAHGKpbideQ5Yjf1tDa9qYcgysz+cNCXukyLl6DjPXhD3VRwSb8c0J9tA4b2+rHEZtc6R0tlw=="], + + "@babel/plugin-syntax-top-level-await/@babel/helper-plugin-utils": ["@babel/helper-plugin-utils@7.27.1", "", {}, "sha512-1gn1Up5YXka3YYAHGKpbideQ5Yjf1tDa9qYcgysz+cNCXukyLl6DjPXhD3VRwSb8c0J9tA4b2+rHEZtc6R0tlw=="], + + "@babel/plugin-transform-arrow-functions/@babel/helper-plugin-utils": ["@babel/helper-plugin-utils@7.27.1", "", {}, "sha512-1gn1Up5YXka3YYAHGKpbideQ5Yjf1tDa9qYcgysz+cNCXukyLl6DjPXhD3VRwSb8c0J9tA4b2+rHEZtc6R0tlw=="], + + "@babel/plugin-transform-async-generator-functions/@babel/helper-plugin-utils": ["@babel/helper-plugin-utils@7.27.1", "", {}, "sha512-1gn1Up5YXka3YYAHGKpbideQ5Yjf1tDa9qYcgysz+cNCXukyLl6DjPXhD3VRwSb8c0J9tA4b2+rHEZtc6R0tlw=="], "@babel/plugin-transform-async-generator-functions/@babel/traverse": ["@babel/traverse@7.28.5", "", { "dependencies": { "@babel/code-frame": "^7.27.1", "@babel/generator": "^7.28.5", "@babel/helper-globals": "^7.28.0", "@babel/parser": "^7.28.5", "@babel/template": "^7.27.2", "@babel/types": "^7.28.5", "debug": "^4.3.1" } }, "sha512-TCCj4t55U90khlYkVV/0TfkJkAkUg3jZFA3Neb7unZT8CPok7iiRfaX0F+WnqWqt7OxhOn0uBKXCw4lbL8W0aQ=="], "@babel/plugin-transform-async-to-generator/@babel/helper-module-imports": ["@babel/helper-module-imports@7.27.1", "", { "dependencies": { "@babel/traverse": "^7.27.1", "@babel/types": "^7.27.1" } }, "sha512-0gSFWUPNXNopqtIPQvlD5WgXYI5GY2kP2cCvoT8kczjbfcfuIljTbcWrulD1CIPIX2gt1wghbDy08yE1p+/r3w=="], + "@babel/plugin-transform-async-to-generator/@babel/helper-plugin-utils": ["@babel/helper-plugin-utils@7.27.1", "", {}, "sha512-1gn1Up5YXka3YYAHGKpbideQ5Yjf1tDa9qYcgysz+cNCXukyLl6DjPXhD3VRwSb8c0J9tA4b2+rHEZtc6R0tlw=="], + + "@babel/plugin-transform-block-scoping/@babel/helper-plugin-utils": ["@babel/helper-plugin-utils@7.27.1", "", {}, "sha512-1gn1Up5YXka3YYAHGKpbideQ5Yjf1tDa9qYcgysz+cNCXukyLl6DjPXhD3VRwSb8c0J9tA4b2+rHEZtc6R0tlw=="], + "@babel/plugin-transform-class-properties/@babel/helper-create-class-features-plugin": ["@babel/helper-create-class-features-plugin@7.29.7", "", { "dependencies": { "@babel/helper-annotate-as-pure": "^7.29.7", "@babel/helper-member-expression-to-functions": "^7.29.7", "@babel/helper-optimise-call-expression": "^7.29.7", "@babel/helper-replace-supers": "^7.29.7", "@babel/helper-skip-transparent-expression-wrappers": "^7.29.7", "@babel/traverse": "^7.29.7", "semver": "^6.3.1" }, "peerDependencies": { "@babel/core": "^7.0.0" } }, "sha512-IY3ZD9Tmooqr3TUhc3DUWxiuo8xx1DWLhd5M7hQ+ZWJamqM2BbalrBJb2MisSLoYorOj75U03qULCxQTY9r3hg=="], - "@babel/plugin-transform-class-properties/@babel/helper-plugin-utils": ["@babel/helper-plugin-utils@7.29.7", "", {}, "sha512-G7sHYigPY17oO5SYWnfD/0MTBwVR781S/JI643e/JhUYgVgWE/61SoW3NH9KWUKyKq5LVh3npif99Wkt6j86Jw=="], + "@babel/plugin-transform-class-static-block/@babel/helper-plugin-utils": ["@babel/helper-plugin-utils@7.27.1", "", {}, "sha512-1gn1Up5YXka3YYAHGKpbideQ5Yjf1tDa9qYcgysz+cNCXukyLl6DjPXhD3VRwSb8c0J9tA4b2+rHEZtc6R0tlw=="], "@babel/plugin-transform-classes/@babel/helper-compilation-targets": ["@babel/helper-compilation-targets@7.28.6", "", { "dependencies": { "@babel/compat-data": "^7.28.6", "@babel/helper-validator-option": "^7.27.1", "browserslist": "^4.24.0", "lru-cache": "^5.1.1", "semver": "^6.3.1" } }, "sha512-JYtls3hqi15fcx5GaSNL7SCTJ2MNmjrkHXg4FSpOA/grxK8KwyZ5bubHsCq8FXCkua6xhuaaBit+3b7+VZRfcA=="], @@ -1942,43 +1987,57 @@ "@babel/plugin-transform-classes/@babel/traverse": ["@babel/traverse@7.29.0", "", { "dependencies": { "@babel/code-frame": "^7.29.0", "@babel/generator": "^7.29.0", "@babel/helper-globals": "^7.28.0", "@babel/parser": "^7.29.0", "@babel/template": "^7.28.6", "@babel/types": "^7.29.0", "debug": "^4.3.1" } }, "sha512-4HPiQr0X7+waHfyXPZpWPfWL/J7dcN1mx9gL6WdQVMbPnF3+ZhSMs8tCxN7oHddJE9fhNE7+lxdnlyemKfJRuA=="], + "@babel/plugin-transform-destructuring/@babel/helper-plugin-utils": ["@babel/helper-plugin-utils@7.27.1", "", {}, "sha512-1gn1Up5YXka3YYAHGKpbideQ5Yjf1tDa9qYcgysz+cNCXukyLl6DjPXhD3VRwSb8c0J9tA4b2+rHEZtc6R0tlw=="], + "@babel/plugin-transform-destructuring/@babel/traverse": ["@babel/traverse@7.28.5", "", { "dependencies": { "@babel/code-frame": "^7.27.1", "@babel/generator": "^7.28.5", "@babel/helper-globals": "^7.28.0", "@babel/parser": "^7.28.5", "@babel/template": "^7.27.2", "@babel/types": "^7.28.5", "debug": "^4.3.1" } }, "sha512-TCCj4t55U90khlYkVV/0TfkJkAkUg3jZFA3Neb7unZT8CPok7iiRfaX0F+WnqWqt7OxhOn0uBKXCw4lbL8W0aQ=="], - "@babel/plugin-transform-modules-commonjs/@babel/helper-plugin-utils": ["@babel/helper-plugin-utils@7.29.7", "", {}, "sha512-G7sHYigPY17oO5SYWnfD/0MTBwVR781S/JI643e/JhUYgVgWE/61SoW3NH9KWUKyKq5LVh3npif99Wkt6j86Jw=="], + "@babel/plugin-transform-flow-strip-types/@babel/helper-plugin-utils": ["@babel/helper-plugin-utils@7.27.1", "", {}, "sha512-1gn1Up5YXka3YYAHGKpbideQ5Yjf1tDa9qYcgysz+cNCXukyLl6DjPXhD3VRwSb8c0J9tA4b2+rHEZtc6R0tlw=="], + + "@babel/plugin-transform-for-of/@babel/helper-plugin-utils": ["@babel/helper-plugin-utils@7.27.1", "", {}, "sha512-1gn1Up5YXka3YYAHGKpbideQ5Yjf1tDa9qYcgysz+cNCXukyLl6DjPXhD3VRwSb8c0J9tA4b2+rHEZtc6R0tlw=="], - "@babel/plugin-transform-nullish-coalescing-operator/@babel/helper-plugin-utils": ["@babel/helper-plugin-utils@7.29.7", "", {}, "sha512-G7sHYigPY17oO5SYWnfD/0MTBwVR781S/JI643e/JhUYgVgWE/61SoW3NH9KWUKyKq5LVh3npif99Wkt6j86Jw=="], + "@babel/plugin-transform-logical-assignment-operators/@babel/helper-plugin-utils": ["@babel/helper-plugin-utils@7.27.1", "", {}, "sha512-1gn1Up5YXka3YYAHGKpbideQ5Yjf1tDa9qYcgysz+cNCXukyLl6DjPXhD3VRwSb8c0J9tA4b2+rHEZtc6R0tlw=="], + + "@babel/plugin-transform-named-capturing-groups-regex/@babel/helper-plugin-utils": ["@babel/helper-plugin-utils@7.27.1", "", {}, "sha512-1gn1Up5YXka3YYAHGKpbideQ5Yjf1tDa9qYcgysz+cNCXukyLl6DjPXhD3VRwSb8c0J9tA4b2+rHEZtc6R0tlw=="], "@babel/plugin-transform-object-rest-spread/@babel/helper-compilation-targets": ["@babel/helper-compilation-targets@7.27.2", "", { "dependencies": { "@babel/compat-data": "^7.27.2", "@babel/helper-validator-option": "^7.27.1", "browserslist": "^4.24.0", "lru-cache": "^5.1.1", "semver": "^6.3.1" } }, "sha512-2+1thGUUWWjLTYTHZWK1n8Yga0ijBz1XAhUXcKy81rd5g6yh7hGqMp45v7cadSbEHc9G3OTv45SyneRN3ps4DQ=="], + "@babel/plugin-transform-object-rest-spread/@babel/helper-plugin-utils": ["@babel/helper-plugin-utils@7.27.1", "", {}, "sha512-1gn1Up5YXka3YYAHGKpbideQ5Yjf1tDa9qYcgysz+cNCXukyLl6DjPXhD3VRwSb8c0J9tA4b2+rHEZtc6R0tlw=="], + "@babel/plugin-transform-object-rest-spread/@babel/traverse": ["@babel/traverse@7.28.5", "", { "dependencies": { "@babel/code-frame": "^7.27.1", "@babel/generator": "^7.28.5", "@babel/helper-globals": "^7.28.0", "@babel/parser": "^7.28.5", "@babel/template": "^7.27.2", "@babel/types": "^7.28.5", "debug": "^4.3.1" } }, "sha512-TCCj4t55U90khlYkVV/0TfkJkAkUg3jZFA3Neb7unZT8CPok7iiRfaX0F+WnqWqt7OxhOn0uBKXCw4lbL8W0aQ=="], - "@babel/plugin-transform-optional-chaining/@babel/helper-plugin-utils": ["@babel/helper-plugin-utils@7.29.7", "", {}, "sha512-G7sHYigPY17oO5SYWnfD/0MTBwVR781S/JI643e/JhUYgVgWE/61SoW3NH9KWUKyKq5LVh3npif99Wkt6j86Jw=="], + "@babel/plugin-transform-optional-catch-binding/@babel/helper-plugin-utils": ["@babel/helper-plugin-utils@7.27.1", "", {}, "sha512-1gn1Up5YXka3YYAHGKpbideQ5Yjf1tDa9qYcgysz+cNCXukyLl6DjPXhD3VRwSb8c0J9tA4b2+rHEZtc6R0tlw=="], "@babel/plugin-transform-optional-chaining/@babel/helper-skip-transparent-expression-wrappers": ["@babel/helper-skip-transparent-expression-wrappers@7.29.7", "", { "dependencies": { "@babel/traverse": "^7.29.7", "@babel/types": "^7.29.7" } }, "sha512-brcMGQaVzIeUb+6/bs1Av0f8YuNNjKY2JyvfRCsFuFsdKccEQ5Ges2y74D74NZ1Rz8lKJ9ksJkfqwQFJ/iNEyQ=="], - "@babel/plugin-transform-react-jsx/@babel/helper-annotate-as-pure": ["@babel/helper-annotate-as-pure@7.29.7", "", { "dependencies": { "@babel/types": "^7.29.7" } }, "sha512-OoK6239jHPuSQOoS0kfTVKn0b/rVTk0seKq4Gd2UMLtmOVLjDC0ki3e+c90Trqv2gMfvJFqkiljrr568+qddiw=="], + "@babel/plugin-transform-parameters/@babel/helper-plugin-utils": ["@babel/helper-plugin-utils@7.27.1", "", {}, "sha512-1gn1Up5YXka3YYAHGKpbideQ5Yjf1tDa9qYcgysz+cNCXukyLl6DjPXhD3VRwSb8c0J9tA4b2+rHEZtc6R0tlw=="], - "@babel/plugin-transform-react-jsx/@babel/helper-plugin-utils": ["@babel/helper-plugin-utils@7.29.7", "", {}, "sha512-G7sHYigPY17oO5SYWnfD/0MTBwVR781S/JI643e/JhUYgVgWE/61SoW3NH9KWUKyKq5LVh3npif99Wkt6j86Jw=="], + "@babel/plugin-transform-private-methods/@babel/helper-plugin-utils": ["@babel/helper-plugin-utils@7.27.1", "", {}, "sha512-1gn1Up5YXka3YYAHGKpbideQ5Yjf1tDa9qYcgysz+cNCXukyLl6DjPXhD3VRwSb8c0J9tA4b2+rHEZtc6R0tlw=="], - "@babel/plugin-transform-react-jsx-development/@babel/plugin-transform-react-jsx": ["@babel/plugin-transform-react-jsx@7.27.1", "", { "dependencies": { "@babel/helper-annotate-as-pure": "^7.27.1", "@babel/helper-module-imports": "^7.27.1", "@babel/helper-plugin-utils": "^7.27.1", "@babel/plugin-syntax-jsx": "^7.27.1", "@babel/types": "^7.27.1" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "sha512-2KH4LWGSrJIkVf5tSiBFYuXDAoWRq2MMwgivCf+93dd0GQi8RXLjKA/0EvRnVV5G0hrHczsquXuD01L8s6dmBw=="], + "@babel/plugin-transform-private-property-in-object/@babel/helper-plugin-utils": ["@babel/helper-plugin-utils@7.27.1", "", {}, "sha512-1gn1Up5YXka3YYAHGKpbideQ5Yjf1tDa9qYcgysz+cNCXukyLl6DjPXhD3VRwSb8c0J9tA4b2+rHEZtc6R0tlw=="], - "@babel/plugin-transform-react-jsx-self/@babel/helper-plugin-utils": ["@babel/helper-plugin-utils@7.29.7", "", {}, "sha512-G7sHYigPY17oO5SYWnfD/0MTBwVR781S/JI643e/JhUYgVgWE/61SoW3NH9KWUKyKq5LVh3npif99Wkt6j86Jw=="], + "@babel/plugin-transform-react-display-name/@babel/helper-plugin-utils": ["@babel/helper-plugin-utils@7.27.1", "", {}, "sha512-1gn1Up5YXka3YYAHGKpbideQ5Yjf1tDa9qYcgysz+cNCXukyLl6DjPXhD3VRwSb8c0J9tA4b2+rHEZtc6R0tlw=="], - "@babel/plugin-transform-react-jsx-source/@babel/helper-plugin-utils": ["@babel/helper-plugin-utils@7.29.7", "", {}, "sha512-G7sHYigPY17oO5SYWnfD/0MTBwVR781S/JI643e/JhUYgVgWE/61SoW3NH9KWUKyKq5LVh3npif99Wkt6j86Jw=="], + "@babel/plugin-transform-react-jsx/@babel/helper-annotate-as-pure": ["@babel/helper-annotate-as-pure@7.29.7", "", { "dependencies": { "@babel/types": "^7.29.7" } }, "sha512-OoK6239jHPuSQOoS0kfTVKn0b/rVTk0seKq4Gd2UMLtmOVLjDC0ki3e+c90Trqv2gMfvJFqkiljrr568+qddiw=="], + + "@babel/plugin-transform-react-jsx-development/@babel/plugin-transform-react-jsx": ["@babel/plugin-transform-react-jsx@7.27.1", "", { "dependencies": { "@babel/helper-annotate-as-pure": "^7.27.1", "@babel/helper-module-imports": "^7.27.1", "@babel/helper-plugin-utils": "^7.27.1", "@babel/plugin-syntax-jsx": "^7.27.1", "@babel/types": "^7.27.1" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "sha512-2KH4LWGSrJIkVf5tSiBFYuXDAoWRq2MMwgivCf+93dd0GQi8RXLjKA/0EvRnVV5G0hrHczsquXuD01L8s6dmBw=="], - "@babel/plugin-transform-regenerator/@babel/helper-plugin-utils": ["@babel/helper-plugin-utils@7.29.7", "", {}, "sha512-G7sHYigPY17oO5SYWnfD/0MTBwVR781S/JI643e/JhUYgVgWE/61SoW3NH9KWUKyKq5LVh3npif99Wkt6j86Jw=="], + "@babel/plugin-transform-react-pure-annotations/@babel/helper-plugin-utils": ["@babel/helper-plugin-utils@7.27.1", "", {}, "sha512-1gn1Up5YXka3YYAHGKpbideQ5Yjf1tDa9qYcgysz+cNCXukyLl6DjPXhD3VRwSb8c0J9tA4b2+rHEZtc6R0tlw=="], "@babel/plugin-transform-runtime/@babel/helper-module-imports": ["@babel/helper-module-imports@7.27.1", "", { "dependencies": { "@babel/traverse": "^7.27.1", "@babel/types": "^7.27.1" } }, "sha512-0gSFWUPNXNopqtIPQvlD5WgXYI5GY2kP2cCvoT8kczjbfcfuIljTbcWrulD1CIPIX2gt1wghbDy08yE1p+/r3w=="], + "@babel/plugin-transform-runtime/@babel/helper-plugin-utils": ["@babel/helper-plugin-utils@7.27.1", "", {}, "sha512-1gn1Up5YXka3YYAHGKpbideQ5Yjf1tDa9qYcgysz+cNCXukyLl6DjPXhD3VRwSb8c0J9tA4b2+rHEZtc6R0tlw=="], + + "@babel/plugin-transform-shorthand-properties/@babel/helper-plugin-utils": ["@babel/helper-plugin-utils@7.27.1", "", {}, "sha512-1gn1Up5YXka3YYAHGKpbideQ5Yjf1tDa9qYcgysz+cNCXukyLl6DjPXhD3VRwSb8c0J9tA4b2+rHEZtc6R0tlw=="], + + "@babel/plugin-transform-template-literals/@babel/helper-plugin-utils": ["@babel/helper-plugin-utils@7.27.1", "", {}, "sha512-1gn1Up5YXka3YYAHGKpbideQ5Yjf1tDa9qYcgysz+cNCXukyLl6DjPXhD3VRwSb8c0J9tA4b2+rHEZtc6R0tlw=="], + "@babel/plugin-transform-typescript/@babel/helper-annotate-as-pure": ["@babel/helper-annotate-as-pure@7.29.7", "", { "dependencies": { "@babel/types": "^7.29.7" } }, "sha512-OoK6239jHPuSQOoS0kfTVKn0b/rVTk0seKq4Gd2UMLtmOVLjDC0ki3e+c90Trqv2gMfvJFqkiljrr568+qddiw=="], "@babel/plugin-transform-typescript/@babel/helper-create-class-features-plugin": ["@babel/helper-create-class-features-plugin@7.29.7", "", { "dependencies": { "@babel/helper-annotate-as-pure": "^7.29.7", "@babel/helper-member-expression-to-functions": "^7.29.7", "@babel/helper-optimise-call-expression": "^7.29.7", "@babel/helper-replace-supers": "^7.29.7", "@babel/helper-skip-transparent-expression-wrappers": "^7.29.7", "@babel/traverse": "^7.29.7", "semver": "^6.3.1" }, "peerDependencies": { "@babel/core": "^7.0.0" } }, "sha512-IY3ZD9Tmooqr3TUhc3DUWxiuo8xx1DWLhd5M7hQ+ZWJamqM2BbalrBJb2MisSLoYorOj75U03qULCxQTY9r3hg=="], - "@babel/plugin-transform-typescript/@babel/helper-plugin-utils": ["@babel/helper-plugin-utils@7.29.7", "", {}, "sha512-G7sHYigPY17oO5SYWnfD/0MTBwVR781S/JI643e/JhUYgVgWE/61SoW3NH9KWUKyKq5LVh3npif99Wkt6j86Jw=="], - "@babel/plugin-transform-typescript/@babel/helper-skip-transparent-expression-wrappers": ["@babel/helper-skip-transparent-expression-wrappers@7.29.7", "", { "dependencies": { "@babel/traverse": "^7.29.7", "@babel/types": "^7.29.7" } }, "sha512-brcMGQaVzIeUb+6/bs1Av0f8YuNNjKY2JyvfRCsFuFsdKccEQ5Ges2y74D74NZ1Rz8lKJ9ksJkfqwQFJ/iNEyQ=="], - "@babel/preset-typescript/@babel/helper-plugin-utils": ["@babel/helper-plugin-utils@7.29.7", "", {}, "sha512-G7sHYigPY17oO5SYWnfD/0MTBwVR781S/JI643e/JhUYgVgWE/61SoW3NH9KWUKyKq5LVh3npif99Wkt6j86Jw=="], + "@babel/plugin-transform-unicode-regex/@babel/helper-plugin-utils": ["@babel/helper-plugin-utils@7.27.1", "", {}, "sha512-1gn1Up5YXka3YYAHGKpbideQ5Yjf1tDa9qYcgysz+cNCXukyLl6DjPXhD3VRwSb8c0J9tA4b2+rHEZtc6R0tlw=="], "@babel/traverse/debug": ["debug@4.4.1", "", { "dependencies": { "ms": "^2.1.3" } }, "sha512-KcKCqiftBJcZr++7ykoDIEwSa3XWowTfNPo92BYxjXiyYEVrUQh2aLyhxBCwww+heortUFxEJYcRzosstTEBYQ=="], @@ -1986,8 +2045,6 @@ "@eslint/eslintrc/globals": ["globals@14.0.0", "", {}, "sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ=="], - "@eslint/eslintrc/ignore": ["ignore@5.3.2", "", {}, "sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g=="], - "@expo/cli/arg": ["arg@5.0.2", "", {}, "sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg=="], "@expo/cli/glob": ["glob@13.0.0", "", { "dependencies": { "minimatch": "^10.1.1", "minipass": "^7.1.2", "path-scurry": "^2.0.0" } }, "sha512-tvZgpqk6fz4BaNZ66ZsRaZnbHvP/jG3uKJvAZOwEVUL4RTA5nJeeLYfyN9/VA8NX/V3IBG+hkeuGpKjvELkVhA=="], @@ -2000,6 +2057,8 @@ "@expo/cli/zod": ["zod@3.25.76", "", {}, "sha512-gzUt/qt81nXsFGKIFcC3YnfEAx5NkunCfnDlvuBSSFS02bcXu4Lmea0AFIUwbLWxWPx3d9p8S5QoaujKcNQxcQ=="], + "@expo/config/@expo/config-plugins": ["@expo/config-plugins@57.0.6", "", { "dependencies": { "@expo/config-types": "^57.0.2", "@expo/json-file": "~11.0.1", "@expo/plist": "^0.8.1", "@expo/require-utils": "^57.0.4", "@expo/sdk-runtime-versions": "^1.0.0", "chalk": "^4.1.2", "debug": "^4.3.5", "getenv": "^2.0.0", "glob": "^13.0.0", "semver": "^7.5.4", "slugify": "^1.6.6", "xcode": "^3.0.1", "xml2js": "0.6.0" } }, "sha512-7CmKrS5Rnu8aSZyNlxH2qzA7Ls1HEa4EQvEVOAkHDKPr1e4Cg/nz7I7dUl09QDTVjMvkKYDH4Th0DuAsgqASaw=="], + "@expo/config/glob": ["glob@13.0.0", "", { "dependencies": { "minimatch": "^10.1.1", "minipass": "^7.1.2", "path-scurry": "^2.0.0" } }, "sha512-tvZgpqk6fz4BaNZ66ZsRaZnbHvP/jG3uKJvAZOwEVUL4RTA5nJeeLYfyN9/VA8NX/V3IBG+hkeuGpKjvELkVhA=="], "@expo/config/semver": ["semver@7.7.4", "", { "bin": { "semver": "bin/semver.js" } }, "sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA=="], @@ -2014,20 +2073,22 @@ "@expo/fingerprint/glob": ["glob@13.0.0", "", { "dependencies": { "minimatch": "^10.1.1", "minipass": "^7.1.2", "path-scurry": "^2.0.0" } }, "sha512-tvZgpqk6fz4BaNZ66ZsRaZnbHvP/jG3uKJvAZOwEVUL4RTA5nJeeLYfyN9/VA8NX/V3IBG+hkeuGpKjvELkVhA=="], - "@expo/fingerprint/ignore": ["ignore@5.3.2", "", {}, "sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g=="], - "@expo/fingerprint/minimatch": ["minimatch@10.2.4", "", { "dependencies": { "brace-expansion": "^5.0.2" } }, "sha512-oRjTw/97aTBN0RHbYCdtF1MQfvusSIBQM0IZEgzl6426+8jSC0nF1a/GmnVLpfB9yyr6g6FTqWqiZVbxrtaCIg=="], "@expo/fingerprint/semver": ["semver@7.7.4", "", { "bin": { "semver": "bin/semver.js" } }, "sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA=="], "@expo/image-utils/semver": ["semver@7.7.4", "", { "bin": { "semver": "bin/semver.js" } }, "sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA=="], + "@expo/inline-modules/@expo/config-plugins": ["@expo/config-plugins@57.0.6", "", { "dependencies": { "@expo/config-types": "^57.0.2", "@expo/json-file": "~11.0.1", "@expo/plist": "^0.8.1", "@expo/require-utils": "^57.0.4", "@expo/sdk-runtime-versions": "^1.0.0", "chalk": "^4.1.2", "debug": "^4.3.5", "getenv": "^2.0.0", "glob": "^13.0.0", "semver": "^7.5.4", "slugify": "^1.6.6", "xcode": "^3.0.1", "xml2js": "0.6.0" } }, "sha512-7CmKrS5Rnu8aSZyNlxH2qzA7Ls1HEa4EQvEVOAkHDKPr1e4Cg/nz7I7dUl09QDTVjMvkKYDH4Th0DuAsgqASaw=="], + "@expo/metro-config/@babel/core": ["@babel/core@7.29.0", "", { "dependencies": { "@babel/code-frame": "^7.29.0", "@babel/generator": "^7.29.0", "@babel/helper-compilation-targets": "^7.28.6", "@babel/helper-module-transforms": "^7.28.6", "@babel/helpers": "^7.28.6", "@babel/parser": "^7.29.0", "@babel/template": "^7.28.6", "@babel/traverse": "^7.29.0", "@babel/types": "^7.29.0", "@jridgewell/remapping": "^2.3.5", "convert-source-map": "^2.0.0", "debug": "^4.1.0", "gensync": "^1.0.0-beta.2", "json5": "^2.2.3", "semver": "^6.3.1" } }, "sha512-CGOfOJqWjg2qW/Mb6zNsDm+u5vFQ8DxXfbM09z69p5Z6+mE1ikP2jUXw+j42Pf1XTYED2Rni5f95npYeuwMDQA=="], "@expo/metro-config/glob": ["glob@13.0.0", "", { "dependencies": { "minimatch": "^10.1.1", "minipass": "^7.1.2", "path-scurry": "^2.0.0" } }, "sha512-tvZgpqk6fz4BaNZ66ZsRaZnbHvP/jG3uKJvAZOwEVUL4RTA5nJeeLYfyN9/VA8NX/V3IBG+hkeuGpKjvELkVhA=="], "@expo/metro-runtime/pretty-format": ["pretty-format@29.7.0", "", { "dependencies": { "@jest/schemas": "^29.6.3", "ansi-styles": "^5.0.0", "react-is": "^18.0.0" } }, "sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ=="], + "@expo/prebuild-config/@expo/config-plugins": ["@expo/config-plugins@57.0.6", "", { "dependencies": { "@expo/config-types": "^57.0.2", "@expo/json-file": "~11.0.1", "@expo/plist": "^0.8.1", "@expo/require-utils": "^57.0.4", "@expo/sdk-runtime-versions": "^1.0.0", "chalk": "^4.1.2", "debug": "^4.3.5", "getenv": "^2.0.0", "glob": "^13.0.0", "semver": "^7.5.4", "slugify": "^1.6.6", "xcode": "^3.0.1", "xml2js": "0.6.0" } }, "sha512-7CmKrS5Rnu8aSZyNlxH2qzA7Ls1HEa4EQvEVOAkHDKPr1e4Cg/nz7I7dUl09QDTVjMvkKYDH4Th0DuAsgqASaw=="], + "@expo/prebuild-config/semver": ["semver@7.7.4", "", { "bin": { "semver": "bin/semver.js" } }, "sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA=="], "@expo/require-utils/@babel/core": ["@babel/core@7.29.0", "", { "dependencies": { "@babel/code-frame": "^7.29.0", "@babel/generator": "^7.29.0", "@babel/helper-compilation-targets": "^7.28.6", "@babel/helper-module-transforms": "^7.28.6", "@babel/helpers": "^7.28.6", "@babel/parser": "^7.29.0", "@babel/template": "^7.28.6", "@babel/traverse": "^7.29.0", "@babel/types": "^7.29.0", "@jridgewell/remapping": "^2.3.5", "convert-source-map": "^2.0.0", "debug": "^4.1.0", "gensync": "^1.0.0-beta.2", "json5": "^2.2.3", "semver": "^6.3.1" } }, "sha512-CGOfOJqWjg2qW/Mb6zNsDm+u5vFQ8DxXfbM09z69p5Z6+mE1ikP2jUXw+j42Pf1XTYED2Rni5f95npYeuwMDQA=="], @@ -2096,6 +2157,8 @@ "@types/react-test-renderer/@types/react": ["@types/react@19.2.14", "", { "dependencies": { "csstype": "^3.2.2" } }, "sha512-ilcTH/UniCkMdtexkoCN0bI7pMcJDvmQFPvuPvmEaYA/NSfFTAgdUSLAoVjaRJm7+6PvcM+q1zYOwS4wTYMF9w=="], + "@typescript-eslint/eslint-plugin/ignore": ["ignore@7.0.5", "", {}, "sha512-Hs59xBNfUIunMFgWAbGX5cq6893IbWg4KnrjbYwX3tx0ztorVgTDA6B2sxf8ejHJ4wz8BqGUMYlnzNBer5NvGg=="], + "@typescript-eslint/typescript-estree/minimatch": ["minimatch@10.2.4", "", { "dependencies": { "brace-expansion": "^5.0.2" } }, "sha512-oRjTw/97aTBN0RHbYCdtF1MQfvusSIBQM0IZEgzl6426+8jSC0nF1a/GmnVLpfB9yyr6g6FTqWqiZVbxrtaCIg=="], "@typescript-eslint/typescript-estree/semver": ["semver@7.7.4", "", { "bin": { "semver": "bin/semver.js" } }, "sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA=="], @@ -2108,6 +2171,8 @@ "anymatch/picomatch": ["picomatch@2.3.1", "", {}, "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA=="], + "babel-plugin-istanbul/@babel/helper-plugin-utils": ["@babel/helper-plugin-utils@7.27.1", "", {}, "sha512-1gn1Up5YXka3YYAHGKpbideQ5Yjf1tDa9qYcgysz+cNCXukyLl6DjPXhD3VRwSb8c0J9tA4b2+rHEZtc6R0tlw=="], + "babel-plugin-jest-hoist/@babel/template": ["@babel/template@7.27.2", "", { "dependencies": { "@babel/code-frame": "^7.27.1", "@babel/parser": "^7.27.2", "@babel/types": "^7.27.1" } }, "sha512-LPDZ85aEJyYSd18/DkjNh4/y1ntkE5KwUHWTiqgRxruuZL2F1yuHligVHLvcHY2vMHXttKFpJn6LwfI7cw7ODw=="], "babel-plugin-jest-hoist/@babel/types": ["@babel/types@7.28.5", "", { "dependencies": { "@babel/helper-string-parser": "^7.27.1", "@babel/helper-validator-identifier": "^7.28.5" } }, "sha512-qQ5m48eI/MFLQ5PxQj4PFaprjyCTLI37ElWMmNs0K8Lk3dVeOdNpB3ks8jc7yM5CDmVC73eMVk/trk3fgmrUpA=="], @@ -2116,6 +2181,8 @@ "babel-plugin-react-compiler/@babel/types": ["@babel/types@7.28.5", "", { "dependencies": { "@babel/helper-string-parser": "^7.27.1", "@babel/helper-validator-identifier": "^7.28.5" } }, "sha512-qQ5m48eI/MFLQ5PxQj4PFaprjyCTLI37ElWMmNs0K8Lk3dVeOdNpB3ks8jc7yM5CDmVC73eMVk/trk3fgmrUpA=="], + "babel-preset-expo/@babel/plugin-transform-export-namespace-from": ["@babel/plugin-transform-export-namespace-from@7.27.1", "", { "dependencies": { "@babel/helper-plugin-utils": "^7.27.1" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "sha512-tQvHWSZ3/jH2xuq/vZDy0jNn+ZdXJeM8gHvX4lnJmsc3+50yPlWdZXIc5ay+umX+2/tJIqHqiEqcJvxlmIvRvQ=="], + "chalk/ansi-styles": ["ansi-styles@4.3.0", "", { "dependencies": { "color-convert": "^2.0.1" } }, "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg=="], "compressible/mime-db": ["mime-db@1.54.0", "", {}, "sha512-aU5EJuIN2WDemCcAp2vFBfp/m4EAhWJnUNSSw0ixs7/kXbd6Pg64EmwJkNdFhB8aWt1sH2CTXrLxo/iAGV3oPQ=="], @@ -2132,8 +2199,6 @@ "escodegen/source-map": ["source-map@0.6.1", "", {}, "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g=="], - "eslint/ignore": ["ignore@5.3.2", "", {}, "sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g=="], - "eslint-import-resolver-node/debug": ["debug@3.2.7", "", { "dependencies": { "ms": "^2.1.1" } }, "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ=="], "eslint-import-resolver-typescript/debug": ["debug@4.4.1", "", { "dependencies": { "ms": "^2.1.3" } }, "sha512-KcKCqiftBJcZr++7ykoDIEwSa3XWowTfNPo92BYxjXiyYEVrUQh2aLyhxBCwww+heortUFxEJYcRzosstTEBYQ=="], @@ -2164,8 +2229,6 @@ "expo-updates/glob": ["glob@13.0.0", "", { "dependencies": { "minimatch": "^10.1.1", "minipass": "^7.1.2", "path-scurry": "^2.0.0" } }, "sha512-tvZgpqk6fz4BaNZ66ZsRaZnbHvP/jG3uKJvAZOwEVUL4RTA5nJeeLYfyN9/VA8NX/V3IBG+hkeuGpKjvELkVhA=="], - "expo-updates/ignore": ["ignore@5.3.2", "", {}, "sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g=="], - "fbjs/promise": ["promise@7.3.1", "", { "dependencies": { "asap": "~2.0.3" } }, "sha512-nolQXZ/4L+bP/UGlkfaIujX9BKxGwmQ9OT4mOt5yvy8iK1h3wqTEJCijzGANTCCl9nWjY41juyAn2K3Q1hLLTg=="], "finalhandler/debug": ["debug@2.6.9", "", { "dependencies": { "ms": "2.0.0" } }, "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA=="], @@ -2566,6 +2629,8 @@ "@babel/plugin-transform-react-jsx-development/@babel/plugin-transform-react-jsx/@babel/helper-module-imports": ["@babel/helper-module-imports@7.27.1", "", { "dependencies": { "@babel/traverse": "^7.27.1", "@babel/types": "^7.27.1" } }, "sha512-0gSFWUPNXNopqtIPQvlD5WgXYI5GY2kP2cCvoT8kczjbfcfuIljTbcWrulD1CIPIX2gt1wghbDy08yE1p+/r3w=="], + "@babel/plugin-transform-react-jsx-development/@babel/plugin-transform-react-jsx/@babel/helper-plugin-utils": ["@babel/helper-plugin-utils@7.27.1", "", {}, "sha512-1gn1Up5YXka3YYAHGKpbideQ5Yjf1tDa9qYcgysz+cNCXukyLl6DjPXhD3VRwSb8c0J9tA4b2+rHEZtc6R0tlw=="], + "@babel/plugin-transform-react-jsx-development/@babel/plugin-transform-react-jsx/@babel/plugin-syntax-jsx": ["@babel/plugin-syntax-jsx@7.27.1", "", { "dependencies": { "@babel/helper-plugin-utils": "^7.27.1" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "sha512-y8YTNIeKoyhGd9O0Jiyzyyqk8gdjnumGTQPsz0xOZOQ2RmkVJeZ1vmmfIvFEKqucBG6axJGBZDE/7iI5suUI/w=="], "@babel/plugin-transform-react-jsx-development/@babel/plugin-transform-react-jsx/@babel/types": ["@babel/types@7.28.5", "", { "dependencies": { "@babel/helper-string-parser": "^7.27.1", "@babel/helper-validator-identifier": "^7.28.5" } }, "sha512-qQ5m48eI/MFLQ5PxQj4PFaprjyCTLI37ElWMmNs0K8Lk3dVeOdNpB3ks8jc7yM5CDmVC73eMVk/trk3fgmrUpA=="], @@ -2610,6 +2675,10 @@ "@expo/fingerprint/minimatch/brace-expansion": ["brace-expansion@5.0.5", "", { "dependencies": { "balanced-match": "^4.0.2" } }, "sha512-VZznLgtwhn+Mact9tfiwx64fA9erHH/MCXEUfB/0bX/6Fz6ny5EGTXYltMocqg4xFAQZtnO3DHWWXi8RiuN7cQ=="], + "@expo/inline-modules/@expo/config-plugins/glob": ["glob@13.0.0", "", { "dependencies": { "minimatch": "^10.1.1", "minipass": "^7.1.2", "path-scurry": "^2.0.0" } }, "sha512-tvZgpqk6fz4BaNZ66ZsRaZnbHvP/jG3uKJvAZOwEVUL4RTA5nJeeLYfyN9/VA8NX/V3IBG+hkeuGpKjvELkVhA=="], + + "@expo/inline-modules/@expo/config-plugins/semver": ["semver@7.7.4", "", { "bin": { "semver": "bin/semver.js" } }, "sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA=="], + "@expo/metro-config/@babel/core/@babel/code-frame": ["@babel/code-frame@7.29.0", "", { "dependencies": { "@babel/helper-validator-identifier": "^7.28.5", "js-tokens": "^4.0.0", "picocolors": "^1.1.1" } }, "sha512-9NhCeYjq9+3uxgdtp20LSiJXJvN0FeCtNGpJxuMFZ1Kv3cWUNb6DOhJwUvcVCzKGR66cw4njwM6hrJLqgOwbcw=="], "@expo/metro-config/@babel/core/@babel/generator": ["@babel/generator@7.29.1", "", { "dependencies": { "@babel/parser": "^7.29.0", "@babel/types": "^7.29.0", "@jridgewell/gen-mapping": "^0.3.12", "@jridgewell/trace-mapping": "^0.3.28", "jsesc": "^3.0.2" } }, "sha512-qsaF+9Qcm2Qv8SRIMMscAvG4O3lJ0F1GuMo5HR/Bp02LopNgnZBC/EkbevHFeGs4ls/oPz9v+Bsmzbkbe+0dUw=="], @@ -2640,6 +2709,8 @@ "@expo/metro-runtime/pretty-format/react-is": ["react-is@18.3.1", "", {}, "sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg=="], + "@expo/prebuild-config/@expo/config-plugins/glob": ["glob@13.0.0", "", { "dependencies": { "minimatch": "^10.1.1", "minipass": "^7.1.2", "path-scurry": "^2.0.0" } }, "sha512-tvZgpqk6fz4BaNZ66ZsRaZnbHvP/jG3uKJvAZOwEVUL4RTA5nJeeLYfyN9/VA8NX/V3IBG+hkeuGpKjvELkVhA=="], + "@expo/require-utils/@babel/core/@babel/code-frame": ["@babel/code-frame@7.29.0", "", { "dependencies": { "@babel/helper-validator-identifier": "^7.28.5", "js-tokens": "^4.0.0", "picocolors": "^1.1.1" } }, "sha512-9NhCeYjq9+3uxgdtp20LSiJXJvN0FeCtNGpJxuMFZ1Kv3cWUNb6DOhJwUvcVCzKGR66cw4njwM6hrJLqgOwbcw=="], "@expo/require-utils/@babel/core/@babel/generator": ["@babel/generator@7.29.1", "", { "dependencies": { "@babel/parser": "^7.29.0", "@babel/types": "^7.29.0", "@jridgewell/gen-mapping": "^0.3.12", "@jridgewell/trace-mapping": "^0.3.28", "jsesc": "^3.0.2" } }, "sha512-qsaF+9Qcm2Qv8SRIMMscAvG4O3lJ0F1GuMo5HR/Bp02LopNgnZBC/EkbevHFeGs4ls/oPz9v+Bsmzbkbe+0dUw=="], @@ -2720,8 +2791,18 @@ "@react-native/babel-preset/@babel/core/debug": ["debug@4.4.1", "", { "dependencies": { "ms": "^2.1.3" } }, "sha512-KcKCqiftBJcZr++7ykoDIEwSa3XWowTfNPo92BYxjXiyYEVrUQh2aLyhxBCwww+heortUFxEJYcRzosstTEBYQ=="], + "@react-native/babel-preset/@babel/plugin-transform-class-properties/@babel/helper-plugin-utils": ["@babel/helper-plugin-utils@7.27.1", "", {}, "sha512-1gn1Up5YXka3YYAHGKpbideQ5Yjf1tDa9qYcgysz+cNCXukyLl6DjPXhD3VRwSb8c0J9tA4b2+rHEZtc6R0tlw=="], + "@react-native/babel-preset/@babel/plugin-transform-modules-commonjs/@babel/helper-module-transforms": ["@babel/helper-module-transforms@7.28.3", "", { "dependencies": { "@babel/helper-module-imports": "^7.27.1", "@babel/helper-validator-identifier": "^7.27.1", "@babel/traverse": "^7.28.3" }, "peerDependencies": { "@babel/core": "^7.0.0" } }, "sha512-gytXUbs8k2sXS9PnQptz5o0QnpLL51SwASIORY6XaBKF88nsOT0Zw9szLqlSGQDP/4TljBAD5y98p2U1fqkdsw=="], + "@react-native/babel-preset/@babel/plugin-transform-modules-commonjs/@babel/helper-plugin-utils": ["@babel/helper-plugin-utils@7.27.1", "", {}, "sha512-1gn1Up5YXka3YYAHGKpbideQ5Yjf1tDa9qYcgysz+cNCXukyLl6DjPXhD3VRwSb8c0J9tA4b2+rHEZtc6R0tlw=="], + + "@react-native/babel-preset/@babel/plugin-transform-nullish-coalescing-operator/@babel/helper-plugin-utils": ["@babel/helper-plugin-utils@7.27.1", "", {}, "sha512-1gn1Up5YXka3YYAHGKpbideQ5Yjf1tDa9qYcgysz+cNCXukyLl6DjPXhD3VRwSb8c0J9tA4b2+rHEZtc6R0tlw=="], + + "@react-native/babel-preset/@babel/plugin-transform-optional-chaining/@babel/helper-plugin-utils": ["@babel/helper-plugin-utils@7.27.1", "", {}, "sha512-1gn1Up5YXka3YYAHGKpbideQ5Yjf1tDa9qYcgysz+cNCXukyLl6DjPXhD3VRwSb8c0J9tA4b2+rHEZtc6R0tlw=="], + + "@react-native/babel-preset/@babel/plugin-transform-typescript/@babel/helper-plugin-utils": ["@babel/helper-plugin-utils@7.27.1", "", {}, "sha512-1gn1Up5YXka3YYAHGKpbideQ5Yjf1tDa9qYcgysz+cNCXukyLl6DjPXhD3VRwSb8c0J9tA4b2+rHEZtc6R0tlw=="], + "@react-native/babel-preset/@babel/plugin-transform-typescript/@babel/plugin-syntax-typescript": ["@babel/plugin-syntax-typescript@7.27.1", "", { "dependencies": { "@babel/helper-plugin-utils": "^7.27.1" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "sha512-xfYCBMxveHrRMnAWl1ZlPXOZjzkN82THFvLhQhFXFt81Z5HnN+EtUkZhv/zcKpmT3fzmWZB0ywiBrbC3vogbwQ=="], "@react-native/babel-preset/@react-native/babel-plugin-codegen/@react-native/codegen": ["@react-native/codegen@0.86.0", "", { "dependencies": { "@babel/core": "^7.25.2", "@babel/parser": "^7.29.0", "hermes-parser": "0.36.0", "invariant": "^2.2.4", "nullthrows": "^1.1.1", "tinyglobby": "^0.2.15", "yargs": "^17.6.2" } }, "sha512-uTs9DBo3+/lUqinsGZK0FKJRBVClrwMXoZToaDxE1Q2SL2e55vs2GwyZfIKzPl5uJnbu4PfFMIp0/mLXLWUMuA=="], @@ -2800,6 +2881,8 @@ "babel-plugin-react-compiler/@babel/types/@babel/helper-validator-identifier": ["@babel/helper-validator-identifier@7.28.5", "", {}, "sha512-qSs4ifwzKJSV39ucNjsvc6WVHs6b7S03sOh2OcHF9UHfVPqWWALUsNUVzhSBiItjRZoLHx7nIarVjqKVusUZ1Q=="], + "babel-preset-expo/@babel/plugin-transform-export-namespace-from/@babel/helper-plugin-utils": ["@babel/helper-plugin-utils@7.27.1", "", {}, "sha512-1gn1Up5YXka3YYAHGKpbideQ5Yjf1tDa9qYcgysz+cNCXukyLl6DjPXhD3VRwSb8c0J9tA4b2+rHEZtc6R0tlw=="], + "compression/debug/ms": ["ms@2.0.0", "", {}, "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A=="], "connect/debug/ms": ["ms@2.0.0", "", {}, "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A=="], @@ -2816,8 +2899,6 @@ "eslint-plugin-expo/eslint/debug": ["debug@4.4.1", "", { "dependencies": { "ms": "^2.1.3" } }, "sha512-KcKCqiftBJcZr++7ykoDIEwSa3XWowTfNPo92BYxjXiyYEVrUQh2aLyhxBCwww+heortUFxEJYcRzosstTEBYQ=="], - "eslint-plugin-expo/eslint/ignore": ["ignore@5.3.2", "", {}, "sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g=="], - "eslint-plugin-expo/eslint/minimatch": ["minimatch@3.1.2", "", { "dependencies": { "brace-expansion": "^1.1.7" } }, "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw=="], "eslint-plugin-react-hooks/@babel/core/@babel/code-frame": ["@babel/code-frame@7.29.0", "", { "dependencies": { "@babel/helper-validator-identifier": "^7.28.5", "js-tokens": "^4.0.0", "picocolors": "^1.1.1" } }, "sha512-9NhCeYjq9+3uxgdtp20LSiJXJvN0FeCtNGpJxuMFZ1Kv3cWUNb6DOhJwUvcVCzKGR66cw4njwM6hrJLqgOwbcw=="], @@ -2948,6 +3029,10 @@ "jest-snapshot/@babel/generator/@babel/parser": ["@babel/parser@7.28.5", "", { "dependencies": { "@babel/types": "^7.28.5" }, "bin": { "parser": "bin/babel-parser.js" } }, "sha512-KKBU1VGYR7ORr3At5HAtUQ+TV3SzRCXmA/8OdDZiLDBIZxVyzXuztPjfLd3BV1PRAQGCMWWSHYhL0F8d5uHBDQ=="], + "jest-snapshot/@babel/plugin-syntax-jsx/@babel/helper-plugin-utils": ["@babel/helper-plugin-utils@7.27.1", "", {}, "sha512-1gn1Up5YXka3YYAHGKpbideQ5Yjf1tDa9qYcgysz+cNCXukyLl6DjPXhD3VRwSb8c0J9tA4b2+rHEZtc6R0tlw=="], + + "jest-snapshot/@babel/plugin-syntax-typescript/@babel/helper-plugin-utils": ["@babel/helper-plugin-utils@7.27.1", "", {}, "sha512-1gn1Up5YXka3YYAHGKpbideQ5Yjf1tDa9qYcgysz+cNCXukyLl6DjPXhD3VRwSb8c0J9tA4b2+rHEZtc6R0tlw=="], + "jest-snapshot/@babel/types/@babel/helper-string-parser": ["@babel/helper-string-parser@7.27.1", "", {}, "sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA=="], "jest-snapshot/@babel/types/@babel/helper-validator-identifier": ["@babel/helper-validator-identifier@7.28.5", "", {}, "sha512-qSs4ifwzKJSV39ucNjsvc6WVHs6b7S03sOh2OcHF9UHfVPqWWALUsNUVzhSBiItjRZoLHx7nIarVjqKVusUZ1Q=="], @@ -3226,6 +3311,12 @@ "@expo/fingerprint/minimatch/brace-expansion/balanced-match": ["balanced-match@4.0.4", "", {}, "sha512-BLrgEcRTwX2o6gGxGOCNyMvGSp35YofuYzw9h1IMTRmKqttAZZVU67bdb9Pr2vUHA8+j3i2tJfjO6C6+4myGTA=="], + "@expo/inline-modules/@expo/config-plugins/glob/minimatch": ["minimatch@10.1.1", "", { "dependencies": { "@isaacs/brace-expansion": "^5.0.0" } }, "sha512-enIvLvRAFZYXJzkCYG5RKmPfrFArdLv+R+lbQ53BmIMLIry74bjKzX6iHAm8WYamJkhSSEabrWN5D97XnKObjQ=="], + + "@expo/inline-modules/@expo/config-plugins/glob/minipass": ["minipass@7.1.2", "", {}, "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw=="], + + "@expo/inline-modules/@expo/config-plugins/glob/path-scurry": ["path-scurry@2.0.1", "", { "dependencies": { "lru-cache": "^11.0.0", "minipass": "^7.1.2" } }, "sha512-oWyT4gICAu+kaA7QWk/jvCHWarMKNs6pXOGWKDTr7cw4IGcUbW+PeTfbaQiLGheFRpjo6O9J0PmyMfQPjH71oA=="], + "@expo/metro-config/@babel/core/@babel/code-frame/@babel/helper-validator-identifier": ["@babel/helper-validator-identifier@7.28.5", "", {}, "sha512-qSs4ifwzKJSV39ucNjsvc6WVHs6b7S03sOh2OcHF9UHfVPqWWALUsNUVzhSBiItjRZoLHx7nIarVjqKVusUZ1Q=="], "@expo/metro-config/@babel/core/@babel/helper-compilation-targets/@babel/compat-data": ["@babel/compat-data@7.29.0", "", {}, "sha512-T1NCJqT/j9+cn8fvkt7jtwbLBfLC/1y1c7NtCeXFRgzGTsafi68MRv8yzkYSapBnFA6L3U2VSc02ciDzoAJhJg=="], @@ -3246,6 +3337,12 @@ "@expo/metro-runtime/pretty-format/@jest/schemas/@sinclair/typebox": ["@sinclair/typebox@0.27.8", "", {}, "sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA=="], + "@expo/prebuild-config/@expo/config-plugins/glob/minimatch": ["minimatch@10.1.1", "", { "dependencies": { "@isaacs/brace-expansion": "^5.0.0" } }, "sha512-enIvLvRAFZYXJzkCYG5RKmPfrFArdLv+R+lbQ53BmIMLIry74bjKzX6iHAm8WYamJkhSSEabrWN5D97XnKObjQ=="], + + "@expo/prebuild-config/@expo/config-plugins/glob/minipass": ["minipass@7.1.2", "", {}, "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw=="], + + "@expo/prebuild-config/@expo/config-plugins/glob/path-scurry": ["path-scurry@2.0.1", "", { "dependencies": { "lru-cache": "^11.0.0", "minipass": "^7.1.2" } }, "sha512-oWyT4gICAu+kaA7QWk/jvCHWarMKNs6pXOGWKDTr7cw4IGcUbW+PeTfbaQiLGheFRpjo6O9J0PmyMfQPjH71oA=="], + "@expo/require-utils/@babel/core/@babel/code-frame/@babel/helper-validator-identifier": ["@babel/helper-validator-identifier@7.28.5", "", {}, "sha512-qSs4ifwzKJSV39ucNjsvc6WVHs6b7S03sOh2OcHF9UHfVPqWWALUsNUVzhSBiItjRZoLHx7nIarVjqKVusUZ1Q=="], "@expo/require-utils/@babel/core/@babel/helper-compilation-targets/@babel/compat-data": ["@babel/compat-data@7.29.0", "", {}, "sha512-T1NCJqT/j9+cn8fvkt7jtwbLBfLC/1y1c7NtCeXFRgzGTsafi68MRv8yzkYSapBnFA6L3U2VSc02ciDzoAJhJg=="], @@ -3558,6 +3655,10 @@ "@babel/plugin-transform-runtime/@babel/helper-module-imports/@babel/traverse/@babel/code-frame/@babel/helper-validator-identifier": ["@babel/helper-validator-identifier@7.28.5", "", {}, "sha512-qSs4ifwzKJSV39ucNjsvc6WVHs6b7S03sOh2OcHF9UHfVPqWWALUsNUVzhSBiItjRZoLHx7nIarVjqKVusUZ1Q=="], + "@expo/inline-modules/@expo/config-plugins/glob/path-scurry/lru-cache": ["lru-cache@11.2.4", "", {}, "sha512-B5Y16Jr9LB9dHVkh6ZevG+vAbOsNOYCX+sXvFWFu7B3Iz5mijW3zdbMyhsh8ANd2mSWBYdJgnqi+mL7/LrOPYg=="], + + "@expo/prebuild-config/@expo/config-plugins/glob/path-scurry/lru-cache": ["lru-cache@11.2.4", "", {}, "sha512-B5Y16Jr9LB9dHVkh6ZevG+vAbOsNOYCX+sXvFWFu7B3Iz5mijW3zdbMyhsh8ANd2mSWBYdJgnqi+mL7/LrOPYg=="], + "@istanbuljs/load-nyc-config/find-up/locate-path/p-locate/p-limit": ["p-limit@2.3.0", "", { "dependencies": { "p-try": "^2.0.0" } }, "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w=="], "@jest/reporters/istanbul-lib-instrument/@babel/core/@babel/code-frame/@babel/helper-validator-identifier": ["@babel/helper-validator-identifier@7.28.5", "", {}, "sha512-qSs4ifwzKJSV39ucNjsvc6WVHs6b7S03sOh2OcHF9UHfVPqWWALUsNUVzhSBiItjRZoLHx7nIarVjqKVusUZ1Q=="], diff --git a/docs/assets/screenshots/add-password.png b/docs/assets/screenshots/add-password.png new file mode 100644 index 0000000000000000000000000000000000000000..d753190fb554aae6e2b6cb2719ded5042652a7e6 GIT binary patch literal 53878 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

H!A@%KK$p}ef3~YY|?w&H6^dL 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�mP|~*x_JU|LoO3BB2sc&M1HRb^Q^# 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 DDv+P9 literal 0 HcmV?d00001 diff --git a/docs/assets/screenshots/secure-notes.png b/docs/assets/screenshots/secure-notes.png new file mode 100644 index 0000000000000000000000000000000000000000..f19633bf5a6267211785f22d434b6caa7b96410b GIT binary patch literal 48269 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͂%W5O4D+^Gpz{F>Y*? zVQ1d&-|>vEJz=yoeEc8+Ow689E{hK07k1KGO>itBoGthQ=Xu-0Deeoc z2A$U#5^n6%E}6Ql+Pb>BI$$WA1**yXb3z&}BJfM4zKH=jz%@uXqljXViIo-GIgM@I z%^_PTQT9W&?^z3Ntk7i`ZA?jJrPCwPrSr?=!*}LnoYF6f1Go0@Kd@(tm+ixMnYa!- z(L9x%qWO%pRahB_1E+Su<+S@wShKRJX}q;!T`#1}rw0zAjG+|vfzM6@9%gbX+s<0~ zD(8UzumIel`pTdmpU!;5agh%dJU(fch=i1#VavevM?aK!2%OZv!}9+-P>4bh#gd3w z^E9R}zA=6dhj={UzXMKT9Ns+?A|u*5|AObKLo;^)2b)ot?>qK#QQ6+H+rNK$) z7SX))o7CF|_I0CP2Q%-cy!DO|lpGdaj9h`K0BSsX8db589%M$O$>dK72EV#DkiE;{ zddrKp7GoJ|r+z~^eGpxRGDC{h(E`uIT#y_$YY+Dr{9N5ZuKLJ0Si|^wDoUITtpkz1 z1fPVX`#yZ+Bq5P=tAf=Rj{r3bjQi6?@Nj$B#GqBz754=N#+1}tGnna^?1r~oiQhhd68t-X6 zTk*nbC8bJB^|8Ya7yn#nnF{cr#d#qrNjKL)2jta-}NTNO(be$Bv0j4=5$F`u=iL z>9%F7nlxY7dOzQv#=wQ7c7eRki?nUt9PLN@;3#AozJUCQOFii9gIUHN|Kc2o9FiDA zQBDl38O8;6eTccXE7Gw??R+q3RU%WNJWi?V1jG3Jwe88h6q@L0XeLy94Sz?2@7~1^ zy)5JDUheafW>CX*G&lltJ=dcBVX1-sRJH)T!H0bLsihhtevpO6Y}-U3I>spR&&GZL zyhDQ28+0x!Psvipq@)xnW*?>?k}G?v&PgM(h%;ekgdKcAA5sIFS(O$q{w+wG z`xVLca^$`l>3-3ivHymprx8VSAeoLM4^bPjVUAS;h5Li51ie^L8OYmuAVH^! zh}9K;K{!>T8aPDknxW`-N$Tz3VO~Y!RZQbt)swo<2w*XUt=LB2P>m+E4R%OA65M!l z(b#I&uQ3%MGs@0IG;e)R_RFt$AdKt>Ad7dkYb~ZBi-q*CI;h=p=9!BJqIne&89v*t z-K_nElIl;*(fcRzB@>GL0x8EfV@F;!M_k(4ezNpjWA`D5f+fc(>M#3oe@8;d9WUH6 zN^-u@5$rn%czxW6ddD41z35kA%Z^D`$VWB?-{BF&WWtji@x(ch-_VHWTPxNl&$pa&*+O9T!hjmxtMFG!(D;t@ogC z7q7l(XOc&9Ab)5p&Fjx1*0)3E5M;vHt4Iegs2b_&elB zCDxE$41P!$igQMsCwfOy5=>w?RbPLbB>4E&K~Z6==b?khOLTGpaa2Tehh6qMIxaztG3`sUI654Vk5KwuiV!uBgiZ?& zkz`pYKTs>8?83V@p)Z(%;~%idW9SOTmm@a!R6b(07rf8u$k_Qq+!)f z8#f-?yA&-ztzG>nuKmbq&zy1|l!@mXmoxvoJJ_&>otEuOM1yI{bYHpj5}P!INOOtC z0Wpg%TOfk)!>OpNC~_&Xwpre%vc0j2be&|zjhc-&lo_|gN@Wg)Gfm~MLuZoxL&XZB z_YQ~UN#oe3o#Qc*O)AJv`2`}Ww~fH4MXR>AqFJrAKG)}vUe9%_;!iC5owxUzd}mI* zp2y&2g;_}bdGC?Mcv$z!c($OM+}x$(BleQ*!JBLtLWBdaJTIoJx7um#+kJn{8D0MB z$G|K!SlnhaBLG+}qicNK&)^2GIN*HnZHs2f{fmG5>FlN0`588t7~rK?8`#0-XF=P^ ziT<7W_@BqLi|R6CQy6iOYFwp7#!Uz2pz7&)Ar<+7R#gpuG=!SqFCWiEX=Cvm7AX0KESnQ(cU3Cj8%nAfqK5LwS z>^4t4q0YnKf|QV##=U6r7Fg`Z*R9<{&AoO56_h}PmF>vGEtz5}x2cVs<{Ize@TSfU z-t}E5OyqTz?Cr0w=tuh@upIw?{i1>=tQG(lKpdXn`VNZ5pQo9N@#7fs*8L7>Ynv`U z+)f^(-jra>zH#{xdywZ1iw6WhP#E>?_0XKnk*3W1OcI@}DPtEJ9Hebt9rs@C@-*S| zxyX+9{!hW{-OQEQS7U#RFd3A0cNWHt$zfL0%3g<~2>87cEvvmUbF9b`)P1bemECZ1 zh6c7ek1r=xHrK^unaV0`nd*1};zkb> zMva?W`_3!QV^fK*pWQ~*xSQV9KL&sUEN(_xI8~dBX%SW*o^zlcFb3irA2!_ANBmo1 z$hbn{S-Q_bGFH#zye%{X6#A z@ZY4g4xcpSt+eQ=in$vzluZM8_Z5!xG&$O>--bol(NmD@)+77AS@+mji}Bw{V-W8S zbL{jzKX~R&bB8+l7q9dCD%H9!Mf8s>cjO&sqR3h%1ky?XJSo~0yj$HhH{!+YphmHa zjgP7_HanA?ufDe%!xs5?A?uNAGAC-X{rNtzpH26B>Dygz|NaCgU9Ws}AmnD#Z@^Xh z*#_gNRM1;UKN`tJ3Pt$3ce<~#{45|kj%*r?LXh0OgB%cWx@DWA^mMVcf5vO00{(zm za3ITQf;~;jh`qmeiTf+=;Um(~NX)N77R)A!K7V@!VpNvtNX{KJh1h13-yF88_{S6} zsDS`UJ3ra6AWuY?P4Q&a-si^0nAO9)d`MYd0WqsycFmgpptee6|L~(O5;Ny>VRw0 zB_%*TZJ=uhTSCH7gDr5_O+@H#uyBUKh9DfQ)DeF{7G!5w5QYNRz+J$1Hn;7^c{#%QM14C|qWl0ccwSALeo|rovSa z2?GOOuVN`VTsK@bggmDH8PFRx!u|{zdQ8Jc|Ar6?-#rp^BBi$Y=#PSc>0uIp8NmT3xGz18}5ErW^Vojj@d5ROSBz{ zs2-5XSE_i!ym0r^K6qrVJDnLi?{+?4-oy~_Z%ifT=|XRN!noSzGLovZk5j{_4pj_R zDJ&l$Z^u1+uaE*b9*=aq)-~`gXtUIR9b*?!7<{JVjik(ZU=CatMiZxtiq?t`5=KM( zYB_?>QpWt~Nv5i8%x620ff7;}Bq3W{6Zx^@Vkv`o!{cL0?9)OBf4solv~IpqP${sk z<*iX)(>FxbqY=JJb*AhuAK8$*O6QU5T6vX8J0G8n*yWe#XrjLt$Z2y2bA12&9e`Sx z)z>zMv+{F*nqou5x#^kL|KT6Jej2=F16S+^MJAq>^I4X+!q+2`l;oSlaaZL;G0>|3Lt04}gGMm5?|0Mh-+ z*ATt4*wus>_U&_kAx69f8a3Ng!nD4Ojp3H3)-$Fk`@3n!dAAzgoY{ZmwsYol^WHk| zx=Y>Vx(*SrYYSGp(Mncw!M`<+rWM#bc9RW$yrt@VzFCRf8OK&rJJnv_-5&%Weaaqg zSe9rb@-S-t7wHz;Rv&N+@t61U?&E(wa=uDo)2(;d5~02Qdbu3V4tk|Snuz;&4M9h!)Fbc9xR4C`x4ZI2uW_&d*y z@M7t(k$?Jfw`Kk&vA%lS`0EoPj(Gn2LDZWr;G?MLwL+puwx(W3YhJzI#A&Bs-U1)r zIYPArg5)3en2xbXG9q9WxbA>fsx+9t?*iMW0thH%f1V2>d0x@X%SXH+>YlW`AWxL3zCwEaiW7>v7*4!q9 zn^s*%|F8d(56#RQ6uXu0^LC;LYxMe3mO3H}H7ca~ZayJkvhne<`WcaWd-T_IkTsRh z8|u;%^c(W_HuUoTVc%EX_k5F4CSrOUb+@8Fll+dcY$hB%H|!UkEar%TGyq|9qe1^$ zRgCFA3nX-hG`Y<736<~ShhhZUHIDb2rjKudT9O4lxnJMw*cIvGi3)GJ4~s~L1Bmcy zwab4t?w3XmArX{J7GXUk3)i&YBpG91s$XXl*81B=ngszdi&yMWIk_k&SKTxf9KNSs z&qNuRCvGrBg^!b6nQ7RRLG?}@`3C^v1^2uTP@NG&5{VAS zFOInvh#rZu7#souexG6JwL(I!`A)5>{r$}FeL*kz{s&Oh8(8kCVO&*r(C(iC-o0xd z;a>s+Hb+J}7PEw6=;eH4Y0Ko)Kh8fD{}8AfV(ReLo?Bb_+4q5Ie5;Bgz41sV)$?cA zr5Zd{sfd|hT2boZ=1IxN^c$GJgPw$-ZjOP7IdeoB$D&Gu81*B53LCc!(L@ai9Vo7+ z)ibBZ}7$%|CTU*fp2!5 z+7XM2Z&|)97G8%)B*I#^g`ezJR<%+}r2nyd4~1uaUbUmUZ6&LSzwm;ugSZsA-k4vcT?Hx_cz=)&yQq0qziDNsZzz9w(X z6dG6G>#I)NDNdl7ZTqzJYjKvj)h-vRQd8%aHq-wNjb^;MwAOx3Ga+kjQ^+7~iNy)_ z&S+A}o^D8F_4Dv9(cuEWB45CJ0Efn+$H}JoB5;G?lY$WIm!oEgT?*H2C6||7mcLKS z*pwIR6X)-BbFOL^# zP<_VUmK2_v%#7tw5;u+_BS0HZYosK2^6%S151q3E&;uddF^bQjrt7GUKq!VHox6E5 zsaAYlDgA%GFz->d!WI8c&In`$O1d@F2_A>J7l47ld$EtREM%$Z^%0wg1%E^Sa7x3A z^G-NcuDon=)Q{L1w^gA1DT&!=`uoX(uWL^_ZkvT};l~NtXuxfc9ShwnS*?Yk6iY z!|diTiDJeGu?5KTW{5x=1ei1ttm=4LTu1)C6*c7Rpw}40E}5zhw1t;+Ntu!R7n!oa z{(2z_dAN*PSllu+BKDwoS@3;*9?lOau`8jkPCzWuqR&j`$OueJ@}oz@stHUIV7;fI zUa0M1)a{lyiR1RaFZUu2ut?37#`s`Toj5+6s4$KM0L5HAJPlh5`JMKZN>#Bx92}sr zXKgfpFS&k!w~bGc;ZQVz+94l0`EzPN~l$s~^x$E`yv7_0UY1h&pZ2~ptcl?7 zHh@S|stAI#AYDL|-jRSHy%~`b1f=&~LQ|10pi-p?tY_zp>AaX(C_wg*m_V@?_&X!qShSA8WNnOscIU&O5ZIEniKAXKV zjYbIKGUm@kW2NoI4#%{@$m0jJ*P#tjcZijI_4}@_L($=Zdyp($ru({%(OMwr&HTs6 z29>sCm5}Kr2E?WGBQnGJQXb;L8ijULutDJ08N270m|Dq#Zdi~EXCu7hC}+gzI(8Sm z`?R(1(X)sa$HV0vBSj3!P%?BAkH9e#OhVC~MRQ=YqjH>M%}kXe7NC7v`MFOhoiPd zN2bOH@$9N+RRS{aL%jyXd{K+dm~7r%W$l$T5+zo*>>w(3>%O~(@!P)8PVOuGk6@#v z@Pob_Z?3caUarE~I)PX9(7)v>+|a#A3hg~5*Cm3`eo(*;x%qe6^=zNN0LHikRs+#v zQSgb#me4GN4vU~vi#yt)S*&@GosU(xkL*>ZY;}$__7~AGioyO{;{3L`V70HCxRLJ) zqUCQsTWPm{FAbXlnN@koPeWx%IUr0tfcDZ}SckRS`%Od~rX2%`LJ-PTmhzNVKB+{x z%*2K8(xlDRpoUOc_X$4zWi!~}V%CV<6v<2C>AtdR4SatEcNRRJFaGhX?tCfXsh%F2 zu=^|VO5m%whFg}DOd2NYx7SSSV8Th|<;scW!j)B=bYD< zj>E6obaNY2JT0ewLD5I>U-v%#8NXMU7rwFNzno!fUcCJm;67c^2FNvVdhz|Xt|maf zT73E|izQ1!`D1BmH%8VbpLyFSyRtqTAuqk^KLlueq2@IN`qF%qu6>47T{~3rQagtG ziHzzkDS}F|S~@_yu#G*@Lebc8! zfNo_OU3e0?f+T1gYI;MzBvM~bPj|dGoA8D;!!b=YgkV#UcUg7sb+Ycb`}3opd95wA z9PE7NH(}HwCN55?-#V3*2wLv?md2Skm`B|**%QbE4ee|mlXu#Uy&f&QJg+T_LV7pA z80E!ug=i=}vYufBY(bK5PLq^v%LXiCQ;x*NW9#f5tGI1Q5^>)+Ye^)MC6&rjg!J*d z66BK7q)J&$a4Njepi_=VrcfdBh^#j#!hKE&tn9O>su^@K@gX=Y<75{VZfrtrqHgW~ zJ7fugygOa8dj&3K^P?nlqf3D-gqxn3pS@-s^*>BdeUY^ZF85M*MN=7dDaL|UVO*lu zRefe2T_$$MZ9mNIAReJlhXW+lP2ENszA8Pt$@8Lu@eN;MFiz<4UTO`|?Tc7BVw zB+N^a(PHC!xo4KO_Olz>vGQz|!qNX0uj`)MSp*jQbJ8z%-rJ3C=*BF(mz&;j6IsgjBhgW``?AcJ#Euc%&Pqjx?eNjo#-Hc5)|o$frHf-8j|o8rviXH! z6Z8a10Ik%Aa?$O7dH(UvIq}Zfys&CE0%gtz|N99eww#}Un1knKPC*32q1L-u?Wq3@bY^p zI{gv|Gn6Gc?2){VZt$o={V_u;5YTiEh-67$>Ww~wXtj#`mIQ7)0vle976c_+4z`FD zYk{uKA3oONC)ZiPPI1LINmAZHx2{n2?Sw%OY^P3N0)d=SFA~t#%e}H^E3uUhy)&O) z<4RtzS+2yUfp|*vl98Z1(%z#q(rc^XorPeU&iz}0bu$L;>$O%>MdJ3%w7xJ}sWgj! zVHUBxe8aE%@#WvjN$zwmc4&9&dY8o`!H;auP0AR{&4%E0^baIrWW?Q z@xzJ}ZllDlrt6fOBz!n%_3fUmqY#}z|L{;1axuf?d2CI$BC@5_*y>}gC-vvIW;!ep zO%hU94HE6M)tx68HMGOu_^&rB!(WY#FYGk^%tdyG5I@h*X@jxhey2NNZvXMW4Kdrv z)NZ|acOKm3gb{9ke!aOd^J=3wt5DH?@RFW0kQ%tbjNfqHfBvV=&DiohDQW!@*OoN; z#?<8+XIE#?5)u-1zC&fuy^`VDxQtj#RJlQ}u($k4LO_nhI`i3L|1m@%Hl`vSwL+ug?>%_Kzpw0hrNY;=Qp5K!c? z)fYzg35J>{6m8PBdQpkP1s}hnGKX= zRRP+#Tqa(Tkj_634@@}BVi}8VzgH#P=Q`lT(fio+^_PqsI@>V+J($AGv83Y3-SS8F zSuyRS&fd;UoR5&Nz zJnchgDLVY0Pkuj`WR_J$hM3Ix zGko#rALBE*&4e`MNlQ z{24sh^_`bw&?Ie}`D{iQ7<==ztGDW1*EV!ec$@X}yN<;3YDnh2B)c)yH%`jRJBR)Z z@-p0SeIL5Q7`B-SslX4q_cS*EtQs|G6Ze=YZyv|47tdXFf>V_CqFKB{_lv1bSaO#_ zyq69VHPT!5JDb6pe6XS4Ain#3LaMiAeYP^5_`oo?9Cv`DsYLNXVN*1{CDqaANeC(t$btM@)uE$l5Spvao7 zrJeC*^@62N3E*R?7tVN2*Qe%&&3R)Y0><@J#0V0$ovY!$yzYM~>B${fFFk@)W!UW} zQg+_BlU_fp(^pQ-OAq77!QG+(TbRiBU+on84)dzChJ6b{#65lN)O~r>T{5Uy49ra< z-VZ-Uj&9@y|Gs0X`y>Zs8t9Vxt@eJz!aYyN#i-0Km2$Ueje~)acB6@?t>xbC+?$Ea z8g>+&U0!QO+=PfvPo0?87XwGHo1f732|JtJ!&86mAa0%|=#1|vIJQ=j=)?{0ax4{?q}iOYy&lohx!YZsx;eSi9=rhw!&T^hZX-4ejn8A=3cJ}T8{Cpm*JHm99(y#8)RA+SG;c#w0fezNIYlm5@mrXQSB#c}&=Rv<%9S_IpyyM0Eu;~4fI`S?uO zf)}GaF$Df$bN)0M!&04BoT`1PY+j`e0+;M z%~){HcRJ>#OncX}eKSiA0rc~BT$3-$(|cSM6iuHU3%h-D_u@F;x4Gj5N2=Y=r{c9EZh87m!QXw!e+u3>4)h@7c{WcraOZe zQibt*EekbORX;l4(?lonAu#RE*(-wg|kK6lVWJ(^MZ5ikEXakzadwW{K7iEsVO3Hue!Eir*|YxlQ1=8W=Yxxy65CMn5+K#;LT zb8IW zR;~2c*1*7kQG}W7$7`0AaF{j%x|*PvmB=Aa^JYkpoMF&5x@^O!&+OMdy$|$;vCcY7 zo~o>|W}pOnvD1&W(rAUQT{Zw!)+STiY(>)rbT>gU9YAjJr9%kF5_CH2!3QCH1tiA! z_1ux!Wt&_#kuNb-=UeO)ehlSBt97610a(G(4=jIn$uG=()?B?)0!;tCZ=aalgs8)C zK?sx?ZxgpZQ#Ua46_lP+_^Y!_4uDqt!=}I8lFnMJk$?JjcA@aDH-XaPb3=??im=I; z6`Qe_gONHzT`EEH(jg6uW|QHfp}_B z#%#tK3wWO#M5|H&nf&$5j(|l`a2g4oRHMDwq4ZtX`&T3pQ z`%vN6wCA8{K=8oz0SGx+b7q<-Kq?D&2*%lgN4Vz>l`FD7v8am zEc*cvFb+x=`;u#RX(sSSRGLdbpE3Kbl&C%BEP87gv7g0W{~%i48OUE@oVWM!er0+5 zvsJ&*Ba?h~9RNkl0NtlS=PfDsrj*3gtCkj>V)(d%u6siiZ~=Ku0C=0`V-t--a=m?u z)W8B8&p&UZ`Al}ppi04KK|bKPwyE&Q9G^x@VaoQ`x|Y9g`LeF&@zS;`y(qLa=(B$R z^=H5ApL&{v0)=lHe;L;?HJweYcdM2epsr$)8o&|oCAB2no?-ow5U+*Nn;q!K#` zW{PEUkfzN`C~}*ITd**|Sm$3-O2a%qB?L=eqphz4lAAEqYhMFipMB0G#mq~e9RfXK zgJQCz1{BzcB6ZOmOsqnOVJRG0VydhCK_)2RA#oX7xg6O~mD1m|-_~@KTrpHrjSNYk z>|rl~&%W5W3$R$pd(+n|URG^p_{erz%R|0L?B}e*Iq;AUJQdW`z0#e8qB(AZY}Uc8 zpz;ul6(LPlIKBOH@Hu{!G2-FW>7%1>FFYv@U!yL!acz3gu)cRla+iFPKc3*0(6$GU z$1eiD`JWb4?R>G8o|ce{z};s_s1H(3T-;oXUNQ#<~r%IMAD<>R=Q;K8yohfziU zmG~BN9*!!8tG^*5n8@NinoarLZJY%CxAG*yPa7Q^a)W*0_SMb3F*oElC#Gh?Pp))N z2TUK~5cNbwjwhMJ1bkfl#6)qw3U~E+X(cicYQMx*g}arA8~f{%+ySKQQ$QV3N(kTT z5a*&KHEnPC5qPrLo+NTzMM6;3dKNa~U5@+E=ZAOBJSF=m4zd0~u8H;2R%^OF*au!W%i&OMz+S?&QE=31UGG^28CS4K z`CiWWZotjevPIbJ_O*B4U^OC1H%9*Exeu@H>~Q+G-{y?fU~Gc4r_irR8fmTvBj;=8 zW`+II{m&mbGiGFE-DYF+ynu!%sYy%s8}`B=c(*KQb*}c^!czO4DNi^F;LoEiQ>^0w{PdZc#1 zVEXwh`VbJ0Cf8I22(z?!9Ba+~?vT0%ZKFeqnd&y1q{eMb&4FHpiU6eEg(s3qCIdbg z3WT2uyAQX5(#_ZcPqjT2QVFaTbaa&bHBVj%#Myv88(K8Z!9FbOs}|B_TyEbe{$;HS zv9$EMVN@eDe*;L~HZtO6Sn?p?%CK(V9|;pqZ|I-9(X|*Zw5@EPvbBV;QU!1BiqH9} zo{6zNGyg>XcZ&)1*$D6{({V;?TQS_K<sJs8jp>9$y+`8<(V>58Jxl~` zSrfxkK~^9O8(rU)i0f<^+`Oa(*!+`MKGT;*xpzZGdln+eh8;ib0rB^i zW82>J1f9P7&lE$c#rQmGf>Uswqg<4CwgFP8YuBr#FH>ElTy$ zLows7Y`{TzI{(w8Mh4{z;b?pZe&jz#V&NigXUW3CL3__QZ|p}HHsxPQFsBsscaY}0 zyW!u#z_NjCy6!;T)RBF3_imhpN?0tOl#k@L3`we|SkOo{M`-$m%3zUsz}_UFkP&IQ=L5C2PQVk&*r_B*<-I?n$AR=cp&JDhMQ!CSSKni`a`bEA1>_3<`rcr=S5n2` z;7=q&b%|@=#gIgV*Vq270Q{_#S3$_ME<|Z308myKG}T{=sI%9S0jNiRXQ;s!MhsxO z(W>E>gq%BPOXpc6#bW=y(}lsfy%ecqw)<@zL6 zg09ttjpd&Dd-V^I&^o}6@Zh<&Mf%^7Ki+Dls#5kqya;IAC0ser=)|{U7AN*uH?UUN zoAB9xykAnF`(#865M3~#B6oaZX2kUEf--3!`H$+HC(i$o^Gy!jIizW~HO2wR_H1DxzFOtjA?Wln36%&*BGcy7}LUtx{<=YW8u z+md&reWLxxeZ&P|L?iGPSXm+$|Mz5lT|1Co{g!qF9*a0i9F^$Wd$pg1S&4SK9P^9QQrL{h5F}( z6%4A-RVEfSA2%^31cX#O=zXY-=HeK#yAm7b1@@n}+_>1OC@Uj>5&Ks6<9^ph!AC&@#p9-7He0_r3)IC071;V=)Y6~&k|#l8x>Zy~^zh|d z>cIAY0$KpkJ)wQn<;6R+^##IxvI!ThncB6N3AvMi3frRSqGE&3V{Cj6fAUcnsqKkL zsuGO=$hPxfDy{(a9b8hpYNp3Gi@uvTZcr+mK{DJq6?7h~%-7G?eKO7$dANsHVAQ^kIv9WpY zJ8z1v)QUS)5C0x}4_*lT1Tc<&4A9C6SWuF~OQhcf^YYmyy^WXU3N}>@tp1qNyiaWA z7TlQ@2hMBPLkb_ps^9n<88DNvv$Gwv6+ev9xz1?S_Yy%kcE zq5Y9e>9r)x`-qjG1?sj(#t(sa*_h4~{|jYb6+0yrni0TbO~5=}-~Mp&oX$0^IJ*^+ z@Af`J8%MFZ3C+_6CPdOSIbm~^_Pf19cSbloz1i+R?^+!X$3P(9R?9-ql^Zlgz#4>2 zHJfte(8Kv;w#l*zy%V}Li%OKC>S5agF^EAnSJ5KUZ_(SRAYgyHd527X=G6BS+^m&P z4!)gd7Rcj~1~-d;Y`qh~#runRZr)|=jza%$0+bu(ObTb6 zR^F0N%Q`Rtn*~%ntt1)7foz(%eB3X{V(4fgk932-^39W`!2%sY?NhF(A8i!xZ7*z_ zfufequNIx?d0U z<8^FOU3u8wjLx(@r3u3!qmyPZT0p<831%PVZz{Bf}Q;QoL29)~1e;S7W2S##&VeKJ1f1zbx>S z>1WTXxD=qBd=8`N>_-eeqqSW@I1{C_onLe^V)-!P{Enk1C>89FV*n|M@GGbHRq0+^ zi4eetlzaZ-?OedNmGj-ZlF30U-bBCAn_xBp7WI>U3ZdQL-`vCq2U&pcysQH9l5ojj z8$Opa3^KOr^ct)$;pxQ8&Cg?hhj7UP=gDnKAwAnzgM^-|i)}hg+m0$A>U;r#?*4nf zj43Tus8a3fcLMn0f+2QjF@mT@udo@-5P4n5SO#FnXMYsyGvH4bezsd2ZAM|Ydr&-6 zIcvAVA^->1Al6cYdBQF%?cVWx)*b6uXJrfooqe5KXOXYF*2(H5qalwfO9+WK3?kc4f-N*?|hxQFo#$6y@V! z0r;rWKW)dGX2b_;e>?>D%#~EBTQ9bPA*!2|&INu@(RAZI#;jAb&gHf7Jh)km^-+ph z*`E_m^=qeU-rdJ%N>QDoh7M%$ZvHjcwb7OLs=Fg1$SQY_2HBytV+OU;HhAKJ^)r|e zyz)fM&#ONwODT{fZT=GYV5f(MP!#y8h{IK7W|S-J;Hsw!(Ot(`H1+S=H154&Nyy&* zdggUDRzRNL_es)!$VYl{ z&d?zNur1>FYOuz(nFBbV`4~8FZ}W=ii%a_^BSy?I6ewozUQEl)s3h4@UX#wCerAp` z|CCj!4b%~24(Ea%6_H&6EIj0+A)gFuNy(|gnA;e&t5vEjAu|z5(~7={$dk)gqiA=x zVH>5jaDo20kl6YBf!(^UFkc6UkLt;PzaNjQZnc%TqfilN-|524Gh6eW1|pdvfHq%A zY)`mzD)*sh%+_2s5cdAXZ~?ELF4^xR?oy-{<+zzIoFlj#0ROKZV^ zsVEAq%GGVYvxqmx?zWLxsC0s{yGublnMs>wKP^sq)C%IwQB|UbW!CImp?$@0CKk;m z><%g7rD*XS3 z>Hj8{!`)AIC@P0V?-p&geaacwDRd>QR#Z2Fnrh2W`F;g9N6x3*u8SbXwYL}*bM0fV zQau)w$EmfO?sW8FHR;_zv$H7TS+m^3idC;p%)DYXe5kT^!nV_CtlWe@{H*FN{5#FH z2i_Aoor`HP8bA@C`1wUgb29=y!bbxr-WIFvp8fq(-m9#BaU^kN^qz%Gz~t*-wi`Sx z`SD#>vr02EVpI&=${xm1v9v#@KZKuW5U*?0jkeVfzXheg_#EOse(`lQi-EMv`JJY5 zcwOAGBOt;?1rYec#AM04Bu6~nh2O^h;#FT4xDnpa6fl!JpFQ9$RO zZmx`-`)uM$AR*^SAh0fay2_H!TX+FX*AcgF!i|WaUYS;u6@+WtBMYRL|M#iUS()%X zw*#N()hP+7rv>D3I9wg0=TZ%cS@GxV{c5-!^gdm$3o_wjnW~}q6)FOjO<64U))tEPlX=+IqKKMALwYXQBJ`9=nNT|+AjP+d3tXxa=Sq% zKW10f%flkoq|Bh;3mhZy+z-9i>iDQ)Jgg{Qc}ida0BcOF)|l_JH%pPJe!zg06H%qxDA&Xla>R*NjdofgGh zq9fhO0P!_8U@O$`heagKbrmtl1&V^6sYraRedX*9o!$PQ_5}u>yF5!A&AsuVnC^vY zt2y{gC0UG{1gZWbq*wVbMzi2c&f!E=Edhn*=D#xGvr$MuY$E4#lY6ho(ybE1&gmQL9#AK<(W zX(euH>02YfgRZHr7LyS1a`m!p4-0(N>ZN)8l(-%Wx!hipQ=k8u)EFX#6 z>n0&yB=6Rhh4xG+395>YP0I2@F8*zpVvbekvyTkl*<)So$Pb$G9oGUpecEU+mU4(7 z30RFj)mvVOBIyG`CGhw;NP=(!Ye z18N4IUc+P|+c_JjOYXsdVD#BfsV9clc%$R>BOJr9BNlAX6%VZ)4((1%$MN)&tF370 zttGj=gh>Z&vh1trWMbFh?AI)7fXf%!q7J7u397>1d81?@k?W(KyNa{%J~_bu?2o>W z5;^Ii5LCwgND|6B9E(k=#I&EmBP}e-;T=0Dv#j#r;7_;DJKehxXG~=ta&_Jou9I`ld8R&L{oecd{Z?f0Ht5GZb|P@`UdW)3DIr==Gu7r&G5`N_t~pD=^gWP=dv#$fhmpcU-nX{q_Fy%hQFNP=q~K|pRanEk%ws%D+GDA z*p~}OTCYQ{IVH2RRC#;Q_Bke*MkfJN@*YivJ?tj8_psx&=k$-QOOqUP(z$>#a*0h+zj?pv3XLks#f!7xu=>f>gVx(yneV{I+tK<#kk$VMbvR zBPKRn&Qc}{gl!jX1w70*d|W&pC??T;@VarHt;UlORj&=;pX%@`5pCE4xK_f`T;iB| zgW095XEbgU0jXbupdIWlYB^0UOlBH9O81ue_+NwUc$tyXMR3|cMw2W9f%J!l7Jo<95Ez-dvMWXQSL8yELwAlp02_efPRu(Y_|5&`{@&~lr$Y1ME19RFt39SNwY z^}eMR<;v(OaIL)7TUuKg@uL?Nnb4y(_4D`i9OvWJ*7^B&?}DV z@BA(qP$az4-8jxbHPx?jg><9%jM4#XGqa?!IPL^Ro4~PL-t>brs-cz0oSy3me-W%= zt$&%xVG;&pc55RtCaWHdI3@Cfc8In?+R#StcCJM}LL6kvL{i+Tet{Sl{4fv(t!Wy( zY_MmJxo4UnEy0PtqYfl3*aBjhZS?AO|WI&ucl`netVPLp^GarbWzg1T55LQ zQ50d{4{zR?P3n`R2){@L;(t&V0ZoV4Zr^_{%6u*1ZSw%f4klEG8$uKY4zP1hjOKk{ z#Zqeebfv2cV5DFLipghaYfk7!uTHjF*}vJ!qKapaY^!&Kl!O9`lx5 zNRXA4mX1waa@LY1lDws=^USO)BB_B(t)x{m7o>0eVNtLifNw*jMr%4fIgjzf5MKlCrO+`5?kZ zq9N85x6}7%(=jr6cHS!pV~GZ7S4qic==NpMCbRQvgOX)DFPYOrq<_wFb_*!)gTuSb zEdY}MxHiz;+#>JI^?{0k*qh#ikmoa&&p1#%08H&Sw7w=u`TEz=L4Z84UMg_F7EXyuPPT?W^02Mwpp}6 zd&;WV%=ixZ{{Scd&5Hd0Mpyo)(Eq%r|LH3Ke@4p;kxcHKqKNr;Zy7*3bhQjYHIMCH F|1SfYYtaAz literal 0 HcmV?d00001 diff --git a/docs/development.md b/docs/development.md index 5ba11cb..04f2af2 100644 --- a/docs/development.md +++ b/docs/development.md @@ -143,6 +143,10 @@ bun install --frozen-lockfile bun run verify ``` +Dependabot uses the Bun ecosystem on a weekly schedule and must update both +`package.json` and `bun.lock`. CI never relaxes the lockfile check for automation: +all actors run `bun install --frozen-lockfile`. + Keep Expo-native packages on the versions selected by `expo install`. Major upgrades of Expo, React Native, React, Jest, ESLint, or TypeScript require a coordinated migration and must not be forced through transitive overrides. Remove a direct dependency only after confirming it has no source, configuration, script, or native-plugin consumer and completing the full verification plus Android export. If `expo-doctor` reports duplicate native modules after a valid dependency update, regenerate `node_modules` and reinstall from the lockfile. diff --git a/docs/publication.md b/docs/publication.md index da9189c..e801d3e 100644 --- a/docs/publication.md +++ b/docs/publication.md @@ -21,6 +21,12 @@ publicly reviewable. provenance and license terms. - Review `README.md`, `LICENSE`, `COPYRIGHT.md`, `TRADEMARKS.md`, `SECURITY.md`, and `CONTRIBUTING.md`. +- Confirm the README leads with a clear product promise, a working store call to action, + current production screenshots, and links to privacy, security, and the latest release. +- Keep exact test/dependency snapshots in dated audits or releases instead of duplicating + fast-stale counters in the product overview. +- Configure a repository social preview using a first-party image of at least 640x320 and + point the repository homepage to the most useful current product destination. - Run release verification: ```bash bun run verify @@ -69,6 +75,8 @@ Recommended settings: - Disable force pushes on protected branches after any required history cleanup. - Keep GitHub Actions permissions at read-only by default unless a workflow requires write access. +- Disable blank issues when structured bug, feature, and private vulnerability-reporting + paths are available. ## Current Public Configuration diff --git a/docs/release.md b/docs/release.md index 6b1522e..f0dab0f 100644 --- a/docs/release.md +++ b/docs/release.md @@ -130,6 +130,7 @@ Blocked: - `READ_MEDIA_IMAGES` - `READ_MEDIA_VIDEO` - `READ_MEDIA_AUDIO` +- `SYSTEM_ALERT_WINDOW` Prefer Android Photo Picker or explicit user-selected file access instead of broad media permissions. @@ -142,6 +143,8 @@ Encrypted backups use `KS1-PW1`. Release testing should cover: - Reject encrypted backup with the wrong password. - Reject malformed JSON backup. - Reject backup objects with invalid password or note shape. +- Reject backup files whose size is missing or exceeds 10 MiB before reading them. +- Verify that a failed batched import leaves both password and note collections unchanged. ## Security Regression Checks @@ -151,6 +154,8 @@ Before release, confirm these invariants: - Argon2 vault metadata (`memory > 0`) fails with an explicit native-KDF error if the native module is unavailable. - Argon2 timeout surfaces as a KDF timeout diagnostic, not as a generic invalid PIN. - PIN setup and PIN change reuse the key derived while creating the master-key verifier instead of running an extra KDF pass for the same new PIN. +- PIN setup refuses to overwrite an existing verifier and removes a newly created verifier if initial database setup fails. +- A committed PIN change remains committed if biometric refresh or cleanup fails; failures before verifier persistence roll encrypted data back to the previous key. - No `Math.random` usage exists under `src`. - Backup export does not call `Crypto.encrypt(jsonData, exportPassword)`. - Backup import does not decrypt with `Crypto.decrypt(parsedData.data, importPassword)`. diff --git a/docs/security-audit-2026-08-08.md b/docs/security-audit-2026-08-08.md new file mode 100644 index 0000000..11b472b --- /dev/null +++ b/docs/security-audit-2026-08-08.md @@ -0,0 +1,208 @@ +# Security and Code Audit — 2026-08-08 + +## Executive Summary + +The repository was reviewed across application code, cryptography and storage boundaries, +tests, dependencies, Expo/Android configuration, CI, GitHub security signals, +documentation, and release readiness. Nine actionable findings were remediated without +changing the KS1/KS1-PW1 formats, storage keys, existing-vault KDF parameters, UI, icons, +or visual assets. + +No unresolved critical vulnerability was found in application code or the dependency +audit. The remaining package advisories are transitive findings in the Expo, React Native, +Jest, Babel, and ESLint toolchain and are tracked as accepted release debt until compatible +upstream versions are available. The documented KS1 key-sharing and KS1-PW1 PBKDF2-SHA1 +trade-offs remain intentionally unchanged because an in-place change would make existing +vaults or backups unreadable. + +## Scope and Method + +The audit covered: + +- authentication, KDF migration, biometric key lifecycle, encryption, storage, import and + export, clipboard/logging boundaries, and untrusted-input validation; +- React Native hooks, contexts, screens, service mocks, and test isolation; +- package manifests and lockfile, Expo Doctor, dependency advisories, and Android export; +- generated Android permissions, release minification/resource shrinking, and Argon2 keep + rules; +- GitHub Actions, Dependabot, branch-protection evidence, CodeQL alerts, documentation, and + release checklists. + +Static searches also checked for committed secrets, unsafe randomness, direct secret +clipboard paths, raw console logging, dynamic code execution, and broad AsyncStorage +clears. No high-confidence secret or dynamic-code-execution finding was identified. + +## Remediated Findings + +### KSA-001 — High — PIN/KDF transaction could split ciphertext and verifier state + +**Location:** `src/services/auth/authService.ts` + +After encrypted vault data and the new verifier were persisted, a later preference or +biometric failure could enter the general rollback path. That rollback restored ciphertext +to the old key without restoring the already persisted verifier, risking a vault that no +PIN could open. + +**Resolution:** preference state is read before vault mutation. Ciphertext re-encryption +and verifier persistence now form the core transaction; in-memory authentication state is +committed immediately afterward. Biometric refresh and cleanup are isolated best-effort +work and cannot initiate a vault rollback. Pre-commit verifier failures still roll back +encrypted data, and a failed rollback clears authentication and the in-memory key. + +### KSA-002 — Medium — Backup import allowed partial persistence and quadratic work + +**Location:** `src/hooks/settings/useExportImport.ts`, +`src/services/storage/storageService.ts` + +The import hook previously saved every password and note separately. A failure midway +left a partial import, and repeatedly encrypting a growing collection made large valid +backups unnecessarily expensive. + +**Resolution:** validated records are merged by ID, limits are evaluated against the final +password set, both collections are encrypted before persistence, and one `multiSet` batch +is issued. Caches update only after that batch succeeds. The development web mock implements +the same merge and batch contract. + +### KSA-003 — Medium — Unknown backup size bypassed the pre-read bound + +**Location:** `src/services/import-export/backupValidation.ts`, +`src/hooks/settings/useExportImport.ts` + +An absent picker size was previously accepted, allowing the complete selected file to be +read before the 10 MiB content check. + +**Resolution:** native imports recover size from file metadata when necessary; unknown, +unsafe, negative, non-integer, or oversized values are rejected before file contents are +loaded. + +### KSA-004 — Low — KS1 framing accepted impossible CBC payload lengths + +**Location:** `src/services/crypto/cryptoService.ts` + +The previous word-count check allowed a payload containing only IV and MAC, or ciphertext +whose byte length was not aligned to an AES block. + +**Resolution:** KS1 decryption now requires IV + at least one 16-byte ciphertext block + +32-byte MAC and requires the ciphertext length to be divisible by 16 before MAC or AES +processing. + +### KSA-005 — Medium — Collection clears did not require an authenticated vault key + +**Location:** `src/services/storage/storageService.ts` + +Individual password/note clear methods checked decryption errors but not whether the vault +key was active. + +**Resolution:** both methods now use the same active-key/decryption-safety guard as other +secure mutations. The deliberate full-reset flow remains separately available and removes +only Keysoft-owned keys. + +### KSA-006 — Medium — CI weakened lockfile enforcement for dependency automation + +**Location:** `.github/workflows/ci.yml`, `.github/dependabot.yml` + +CI used a non-frozen install for Dependabot, so dependency PR validation could test a +resolver-generated graph that was not represented by the committed lockfile. + +**Resolution:** every CI actor now uses `bun install --frozen-lockfile`, and weekly Bun +Dependabot updates are configured to maintain the Bun manifest/lockfile pair. + +### KSA-007 — Low — SDK patch drift and duplicate ESLint plugin registration + +**Location:** `package.json`, `bun.lock`, `eslint.config.js` + +Nine Expo packages were behind the versions selected for SDK 57. A separately installed +TypeScript ESLint plugin duplicated the plugin already registered by the Expo flat preset +after compatible updates. + +**Resolution:** Expo-aligned patches and compatible navigation/tooling patches were +installed, the redundant plugin dependency/configuration was removed, and the frozen +install plus Expo Doctor checks pass. + +### KSA-008 — Low — Unneeded overlay permission appeared in generated Android metadata + +**Location:** `app.config.js` + +The generated manifest included `SYSTEM_ALERT_WINDOW`, although Keysoft has no overlay +feature. + +**Resolution:** the permission is explicitly blocked. A fresh prebuild emits a +`tools:node="remove"` directive alongside the existing blocked media/audio permissions. + +### KSA-009 — Medium — Failed first-time setup left partial authentication state + +**Location:** `src/services/auth/authService.ts`, +`src/services/storage/storageService.ts` + +If initial database setup failed after the new verifier had been saved, setup returned +failure while the vault key remained in memory and the partial verifier remained +configured. A repeated setup call could also replace an existing verifier. + +**Resolution:** setup now refuses to overwrite existing verifier metadata. If failure +occurs after saving a genuinely new verifier, it removes that verifier, clears the +in-memory vault key and authentication state, and reports failure. SecureStore deletion +still follows the persist-before-cache rule. + +## Accepted and Monitored Risk + +### Dependency advisories + +`bun audit` reports 58 transitive advisories: 42 high, 14 moderate, and 2 low; none are +critical, so `bun audit --audit-level=critical` passes. Affected transitive packages include +`ajv`, `@xmldom/xmldom`, `brace-expansion`, `lodash`, `uuid`, `minimatch`, `form-data`, +`yaml`, `flatted`, `js-yaml`, `nanoid`, `node-forge`, `postcss`, `@babel/core`, `ws`, +`image-size`, and `picomatch`. + +Most paths are build, lint, test, Metro, code-generation, or Expo CLI dependencies rather +than code shipped as a direct Keysoft runtime API. Forcing incompatible major overrides +would conflict with the supported Expo SDK 57 graph. The release gate therefore blocks +critical advisories and requires human review of lower severities on each update. + +### CodeQL alerts + +Three open `js/insufficient-password-hash` alerts were reviewed: + +- `cryptoServiceMock.ts`: SHA-256 receives an already PBKDF2-derived key to create a + compatibility verifier; it does not hash a raw password. +- `cryptoService.ts`: AES encrypts password-manager records with a KDF-derived vault key; + this is data encryption, not password hashing. +- `CryptoService.test.ts`: the test invokes the production verifier creation path and + contains no independent password-storage implementation. + +These are scanner classification false positives. They were not remotely dismissed as +part of this local implementation. + +### Format compatibility and device assumptions + +The accepted limitations in `docs/security.md` remain in force: one key is shared between +KS1 AES and HMAC operations, KS1-PW1 uses PBKDF2-SHA1, the current master secret is six +digits, unlock has no attempt throttling, screenshot protection is opt-in, auto-lock is +transition-based, Android clipboard previews cannot be fully suppressed, and the OTA +update channel is trusted. Format changes require a new version and authenticated +migration. + +## Verification Evidence + +| Check | Result | +| ------------------------------ | --------------------------------------------------------------------------------------------- | +| Frozen Bun install | Passed; no lockfile changes | +| Formatting, TypeScript, ESLint | Passed | +| Jest with coverage | 30 suites, 212 tests passed | +| Expo Doctor | 20/20 checks passed | +| Critical dependency audit | Passed; zero critical advisories | +| Full dependency audit | 58 transitive advisories: 42 high, 14 moderate, 2 low | +| Android JS bundle export | Passed; 1,652 modules bundled | +| Generated Android permissions | Expected permissions present; blocked media/audio/overlay directives present | +| Release shrinking | `minifyEnabled`, `shrinkResources`, `proguard-android-optimize.txt`, and optimized R8 present | +| Argon2 native rules | `com.poowf.argon2` and `com.reactnativeargon2` keep rules present | + +The initial baseline run had one isolated timeout in the authentication integration suite; +the focused suite passed immediately afterward and the final full coverage run passed all +212 tests. No timeout suppression or increased global timeout was introduced. + +## Release Boundary + +This audit performed local source changes, dependency resolution, tests, an Android bundle +export, and a temporary native prebuild. It did not start an EAS build, submit to Google +Play, create a tag or release, push commits, change secrets, dismiss GitHub alerts, or +deploy anything. diff --git a/docs/security.md b/docs/security.md index 9c04c0f..ac35335 100644 --- a/docs/security.md +++ b/docs/security.md @@ -106,7 +106,7 @@ so this is the weakest link in the current design. The KDF identifier is part of the `KS1-PW1` payload, so a stronger KDF can only be introduced as a new payload version that still reads `KS1-PW1` files. -Backup imports are limited to 10 MiB and validate collection sizes and field lengths before any object reaches storage. Export passwords and imported ciphertext are removed from UI state on close, while temporary export files are deleted after sharing completes. +Backup imports are limited to 10 MiB and validate collection sizes and field lengths before any object reaches storage. An import whose size cannot be established is rejected before the file is read. Valid records are merged by ID, encrypted in memory, and persisted in one batched storage operation; decrypted caches change only after persistence succeeds. Export passwords and imported ciphertext are removed from UI state on close, while temporary export files are deleted after sharing completes. ## Biometric Authentication @@ -117,7 +117,7 @@ Expected behavior: - The stored biometric key uses `requireAuthentication: true` and `WHEN_PASSCODE_SET_THIS_DEVICE_ONLY`. - Biometric login reads that SecureStore item, verifies it against the master-key verifier, loads vault metadata, initializes storage, and authenticates the session. - If the SecureStore item is missing, invalidated by biometric enrollment changes, or no longer verifies, biometrics are disabled and the user must log in with PIN and re-enable biometrics. -- When the PIN changes, the biometric key is updated to the new vault key. If that update fails, biometrics are disabled and the stale key is deleted. +- When the PIN changes, ciphertext and verifier metadata commit before biometric maintenance. The biometric key is then updated to the new vault key. If that update fails, biometrics are disabled and the stale key is deleted on a best-effort basis; biometric cleanup can never roll back an already committed PIN change. ## Storage Rules @@ -126,7 +126,10 @@ Expected behavior: - Legacy plaintext arrays are immediately re-encrypted when loaded with an active encryption key. - Writes are blocked after decryption errors until the unsafe state is resolved. - Mutations persist encrypted data before changing the decrypted cache, so a failed write cannot expose an uncommitted value through later reads. +- Backup imports prepare every changed encrypted collection before one batched write and update neither cache if that write fails. +- Clearing a password or note collection requires an active vault key and is blocked after a decryption error. - Master-key verifier metadata is written to SecureStore before its in-memory cache is updated. A failed SecureStore write leaves the previously persisted and cached verifier unchanged. +- Initial PIN setup refuses to replace existing verifier metadata. If first-time database initialization fails after saving a new verifier, that verifier is removed and authentication/key state is cleared before setup reports failure. - Reset removes only Keysoft-owned AsyncStorage keys; it must not call the process-wide `AsyncStorage.clear()` API. ## Randomness @@ -210,3 +213,6 @@ bunx expo export --platform android --output-dir C:\tmp\keysoft-android-export ``` Security-sensitive changes should add or update tests in `src/__tests__/services`. + +The latest repository-wide review is recorded in +[`security-audit-2026-08-08.md`](security-audit-2026-08-08.md). diff --git a/eslint.config.js b/eslint.config.js index e604ce7..657c8d3 100644 --- a/eslint.config.js +++ b/eslint.config.js @@ -1,7 +1,6 @@ // ESLint 9 flat config. Mirrors the previous .eslintrc.js: the Expo preset plus // the project's unused-vars rule, with Jest globals scoped to test files. const expoFlat = require('eslint-config-expo/flat'); -const typescriptEslint = require('@typescript-eslint/eslint-plugin'); const globals = require('globals'); module.exports = [ @@ -30,9 +29,6 @@ module.exports = [ }, { files: ['**/*.ts', '**/*.tsx', '**/*.d.ts'], - plugins: { - '@typescript-eslint': typescriptEslint, - }, rules: { '@typescript-eslint/no-unused-vars': [ 'warn', diff --git a/package.json b/package.json index 0059f61..8d165e6 100644 --- a/package.json +++ b/package.json @@ -36,31 +36,31 @@ "@expo/vector-icons": "^15.1.1", "@react-native-async-storage/async-storage": "^2.2.0", "@react-native-community/slider": "5.2.0", - "@react-navigation/bottom-tabs": "^7.18.14", - "@react-navigation/native": "^7.3.14", - "@react-navigation/native-stack": "^7.18.6", - "@react-navigation/stack": "^7.10.17", + "@react-navigation/bottom-tabs": "^7.18.16", + "@react-navigation/native": "^7.3.16", + "@react-navigation/native-stack": "^7.18.8", + "@react-navigation/stack": "^7.10.22", "crypto-js": "^4.2.0", - "expo": "~57.0.9", - "expo-asset": "~57.0.8", - "expo-build-properties": "~57.0.8", + "expo": "~57.0.11", + "expo-asset": "~57.0.9", + "expo-build-properties": "~57.0.9", "expo-clipboard": "~57.0.1", - "expo-constants": "~57.0.8", + "expo-constants": "~57.0.9", "expo-crypto": "~57.0.1", "expo-document-picker": "~57.0.1", - "expo-file-system": "~57.0.1", + "expo-file-system": "~57.0.2", "expo-font": "~57.0.1", - "expo-image-picker": "~57.0.7", + "expo-image-picker": "~57.0.8", "expo-local-authentication": "~57.0.2", "expo-localization": "~57.0.1", "expo-navigation-bar": "~57.0.2", - "expo-notifications": "~57.0.8", + "expo-notifications": "~57.0.9", "expo-screen-capture": "~57.0.1", "expo-secure-store": "~57.0.1", - "expo-sharing": "~57.0.8", + "expo-sharing": "~57.0.10", "expo-status-bar": "~57.0.1", "expo-system-ui": "~57.0.2", - "expo-updates": "~57.0.11", + "expo-updates": "~57.0.12", "react": "19.2.3", "react-dom": "19.2.3", "react-native": "0.86.2", @@ -77,14 +77,13 @@ }, "devDependencies": { "@babel/core": "^7.29.7", - "@babel/plugin-transform-export-namespace-from": "^7.27.1", + "@babel/plugin-transform-export-namespace-from": "^7.29.7", "@react-native/jest-preset": "0.86.2", "@testing-library/react-native": "^13.3.3", - "@typescript-eslint/eslint-plugin": "^8.63.0", "@types/jest": "29.5.14", "@types/react": "~19.2.18", "babel-plugin-module-resolver": "^5.0.3", - "babel-preset-expo": "~57.0.5", + "babel-preset-expo": "~57.0.6", "eslint": "^9.39.5", "eslint-config-expo": "~57.0.1", "globals": "^16.5.0", diff --git a/src/__tests__/services/AuthService.test.ts b/src/__tests__/services/AuthService.test.ts index 0478cf8..9421c43 100644 --- a/src/__tests__/services/AuthService.test.ts +++ b/src/__tests__/services/AuthService.test.ts @@ -59,12 +59,18 @@ describe('AuthService', () => { (CryptoService.isLegacyKdf as jest.Mock).mockReturnValue(false); (StorageService.saveMasterKeyInfo as jest.Mock).mockResolvedValue(undefined); + (StorageService.deleteMasterKeyInfo as jest.Mock).mockResolvedValue(undefined); (StorageService.setEncryptionKey as jest.Mock).mockImplementation(() => {}); (StorageService.initDatabase as jest.Mock).mockResolvedValue(undefined); (StorageService.getMasterKeyInfo as jest.Mock).mockResolvedValue(mockMasterKeyInfo); (StorageService.getEncryptionKey as jest.Mock).mockReturnValue(null); // Default: no key (StorageService.getBiometricKey as jest.Mock).mockResolvedValue(mockEncryptionKey); (StorageService.saveBiometricKey as jest.Mock).mockResolvedValue(undefined); + (StorageService.deleteBiometricKey as jest.Mock).mockResolvedValue(undefined); + (StorageService.getUserPreferences as jest.Mock).mockResolvedValue({ + biometricsEnabled: false, + }); + (StorageService.saveUserPreferences as jest.Mock).mockResolvedValue(undefined); // Biometrics default: available and enrolled (LocalAuthentication.hasHardwareAsync as jest.Mock).mockResolvedValue(true); @@ -77,6 +83,7 @@ describe('AuthService', () => { describe('Master Password Setup & Login', () => { it('should setup master password correctly', async () => { + (StorageService.getMasterKeyInfo as jest.Mock).mockResolvedValue(null); const result = await AuthService.setupMasterPassword(mockMasterPassword); expect(result).toBe(true); @@ -89,6 +96,35 @@ describe('AuthService', () => { expect(AuthService.getIsAuthenticated()).toBe(true); }); + it('does not overwrite an existing master password configuration', async () => { + (StorageService.getMasterKeyInfo as jest.Mock).mockResolvedValue(mockMasterKeyInfo); + + const result = await AuthService.setupMasterPassword(mockMasterPassword); + + expect(result).toBe(false); + expect(CryptoService.createMasterKeyInfoWithDerivedKey).not.toHaveBeenCalled(); + expect(StorageService.saveMasterKeyInfo).not.toHaveBeenCalled(); + expect(AuthService.getLastAuthFailure()).toEqual( + expect.objectContaining({ reason: 'master_key_already_configured' }), + ); + }); + + it('rolls back a new verifier and clears the key when initial database setup fails', async () => { + (StorageService.getMasterKeyInfo as jest.Mock).mockResolvedValue(null); + (StorageService.initDatabase as jest.Mock).mockRejectedValue( + new Error('storage unavailable'), + ); + + const result = await AuthService.setupMasterPassword(mockMasterPassword); + + expect(result).toBe(false); + expect(StorageService.saveMasterKeyInfo).toHaveBeenCalledWith(mockMasterKeyInfo); + expect(StorageService.deleteMasterKeyInfo).toHaveBeenCalled(); + expect(StorageService.setEncryptionKey).toHaveBeenLastCalledWith(''); + expect(AuthService.getIsAuthenticated()).toBe(false); + expect(AuthService.getMasterKeyInfo()).toBeNull(); + }); + it('should login with correct master password', async () => { const result = await AuthService.loginWithMasterPassword(mockMasterPassword); @@ -221,6 +257,36 @@ describe('AuthService', () => { expect.objectContaining({ reason: 'kdf_upgrade_rollback_failed' }), ); }); + + it('keeps a committed KDF upgrade when biometric refresh and cleanup fail', async () => { + (StorageService.getMasterKeyInfo as jest.Mock).mockResolvedValue(mockMasterKeyInfo); + (CryptoService.isNativeKdfAvailable as jest.Mock).mockReturnValue(true); + (CryptoService.isLegacyKdf as jest.Mock).mockReturnValue(true); + (StorageService.getEncryptionKey as jest.Mock).mockReturnValue(mockEncryptionKey); + (CryptoService.createMasterKeyInfoWithDerivedKey as jest.Mock).mockResolvedValue({ + masterKeyInfo: newInfo, + derivedKey: newKey, + }); + (StorageService.getUserPreferences as jest.Mock).mockResolvedValue({ + biometricsEnabled: true, + }); + (StorageService.reEncryptAllData as jest.Mock).mockResolvedValue(undefined); + (StorageService.saveBiometricKey as jest.Mock).mockRejectedValue( + new Error('biometric write failed'), + ); + (StorageService.deleteBiometricKey as jest.Mock).mockRejectedValue( + new Error('biometric cleanup failed'), + ); + + const result = await AuthService.loginWithMasterPassword(mockMasterPassword); + + expect(result).toBe(true); + expect(StorageService.reEncryptAllData).toHaveBeenCalledTimes(1); + expect(StorageService.saveMasterKeyInfo).toHaveBeenCalledWith(newInfo); + expect(StorageService.setEncryptionKey).toHaveBeenLastCalledWith(newKey); + expect(AuthService.getMasterKeyInfo()).toEqual(newInfo); + expect(AuthService.getIsAuthenticated()).toBe(true); + }); }); describe('Biometrics', () => { @@ -413,6 +479,50 @@ describe('AuthService', () => { ); }); + it('does not mutate encrypted storage when preferences cannot be read', async () => { + await AuthService.loginWithMasterPassword(mockMasterPassword); + (StorageService.getEncryptionKey as jest.Mock).mockReturnValue(mockEncryptionKey); + (StorageService.getUserPreferences as jest.Mock).mockRejectedValue( + new Error('preferences unavailable'), + ); + + const result = await AuthService.updateMasterPassword('new-password'); + + expect(result).toBe(false); + expect(StorageService.reEncryptAllData).not.toHaveBeenCalled(); + expect(StorageService.saveMasterKeyInfo).not.toHaveBeenCalled(); + }); + + it('keeps the committed password change when biometric cleanup also fails', async () => { + const newKey = '1112131415161718191a1b1c1d1e1f201112131415161718191a1b1c1d1e1f20'; + const newInfo = { ...mockMasterKeyInfo, verifier: 'new-verifier' }; + + await AuthService.loginWithMasterPassword(mockMasterPassword); + (StorageService.getEncryptionKey as jest.Mock).mockReturnValue(mockEncryptionKey); + (StorageService.getUserPreferences as jest.Mock).mockResolvedValue({ + biometricsEnabled: true, + }); + (CryptoService.createMasterKeyInfoWithDerivedKey as jest.Mock).mockResolvedValue({ + masterKeyInfo: newInfo, + derivedKey: newKey, + }); + (StorageService.saveBiometricKey as jest.Mock).mockRejectedValue( + new Error('biometric write failed'), + ); + (StorageService.deleteBiometricKey as jest.Mock).mockRejectedValue( + new Error('biometric cleanup failed'), + ); + + const result = await AuthService.updateMasterPassword('new-password'); + + expect(result).toBe(true); + expect(StorageService.reEncryptAllData).toHaveBeenCalledTimes(1); + expect(StorageService.reEncryptAllData).toHaveBeenCalledWith(newKey); + expect(StorageService.saveMasterKeyInfo).toHaveBeenCalledWith(newInfo); + expect(StorageService.setEncryptionKey).toHaveBeenLastCalledWith(newKey); + expect(AuthService.getMasterKeyInfo()).toEqual(newInfo); + }); + it('should rollback re-encryption when saveMasterKeyInfo fails', async () => { const newPassword = 'new-password'; const newKey = 'new-derived-key'; diff --git a/src/__tests__/services/BackupValidation.test.ts b/src/__tests__/services/BackupValidation.test.ts index 0e1591b..4700890 100644 --- a/src/__tests__/services/BackupValidation.test.ts +++ b/src/__tests__/services/BackupValidation.test.ts @@ -83,8 +83,9 @@ describe('Backup import validation', () => { }); it('bounds backup file sizes', () => { - expect(isBackupFileSizeAllowed(undefined)).toBe(true); + expect(isBackupFileSizeAllowed(undefined)).toBe(false); expect(isBackupFileSizeAllowed(MAX_BACKUP_FILE_SIZE_BYTES)).toBe(true); expect(isBackupFileSizeAllowed(MAX_BACKUP_FILE_SIZE_BYTES + 1)).toBe(false); + expect(isBackupFileSizeAllowed(Number.NaN)).toBe(false); }); }); diff --git a/src/__tests__/services/CryptoService.test.ts b/src/__tests__/services/CryptoService.test.ts index 82ecdc8..ecdc6e2 100644 --- a/src/__tests__/services/CryptoService.test.ts +++ b/src/__tests__/services/CryptoService.test.ts @@ -101,6 +101,24 @@ describe('CryptoService', () => { ); }); + it('rejects KS1 payloads without a complete ciphertext block', async () => { + const truncatedPayload = CryptoJS.lib.WordArray.create(new Uint8Array(48) as any); + const malformedPayload = `KS1:${CryptoJS.enc.Base64.stringify(truncatedPayload)}`; + + await expect(CryptoService.decrypt(malformedPayload, masterKey)).rejects.toThrow( + 'Invalid payload length', + ); + }); + + it('rejects KS1 payloads whose ciphertext is not block aligned', async () => { + const nonAlignedPayload = CryptoJS.lib.WordArray.create(new Uint8Array(65) as any); + const malformedPayload = `KS1:${CryptoJS.enc.Base64.stringify(nonAlignedPayload)}`; + + await expect(CryptoService.decrypt(malformedPayload, masterKey)).rejects.toThrow( + 'Invalid payload length', + ); + }); + it('should return empty string for empty input (legitimate empty case)', async () => { const result = await CryptoService.decrypt('', masterKey); expect(result).toBe(''); diff --git a/src/__tests__/services/StorageService.test.ts b/src/__tests__/services/StorageService.test.ts index 503a668..1585399 100644 --- a/src/__tests__/services/StorageService.test.ts +++ b/src/__tests__/services/StorageService.test.ts @@ -108,6 +108,21 @@ describe('StorageService', () => { ); await expect(StorageService.getMasterKeyInfo()).resolves.toEqual(currentInfo); }); + + it('deletes verifier metadata before clearing its cache', async () => { + const currentInfo: UserMasterKey = { + salt: 'current-salt', + iterations: 2, + memory: 19456, + verifier: 'current-verifier', + }; + await StorageService.saveMasterKeyInfo(currentInfo); + + await StorageService.deleteMasterKeyInfo(); + + expect(SecureStore.deleteItemAsync).toHaveBeenCalledWith('keysoft_master_key_info'); + await expect(StorageService.getMasterKeyInfo()).resolves.toBeNull(); + }); }); describe('User Preferences', () => { @@ -169,6 +184,16 @@ describe('StorageService', () => { await expect(StorageService.getAllPasswords()).resolves.toEqual([]); }); + it('does not clear passwords without an active vault key', async () => { + await StorageService.savePassword(mockPassword); + StorageService.setEncryptionKey(''); + jest.clearAllMocks(); + + await expect(StorageService.clearAllPasswords()).rejects.toThrow('Encryption key not set'); + expect(AsyncStorage.removeItem).not.toHaveBeenCalled(); + await expect(StorageService.getAllPasswords()).resolves.toEqual([mockPassword]); + }); + it('should retrieve decrypted passwords', async () => { // Mock stored encrypted data const storedData = `encrypted-${JSON.stringify([mockPassword])}`; @@ -341,6 +366,79 @@ describe('StorageService', () => { }); }); + describe('Backup import', () => { + const existingPassword: Password = { + id: 'existing-password', + title: 'Existing', + username: 'user', + password: 'old-secret', + createdAt: mockTimestamp, + updatedAt: mockTimestamp, + }; + const importedNote: Note = { + id: 'imported-note', + title: 'Imported', + content: 'Secret note', + createdAt: mockTimestamp, + updatedAt: mockTimestamp, + }; + + it('encrypts password and note collections before one storage write', async () => { + await StorageService.savePassword(existingPassword); + jest.clearAllMocks(); + + const updatedPassword = { ...existingPassword, password: 'new-secret' }; + const result = await StorageService.importBackupData({ + passwords: [updatedPassword], + notes: [importedNote], + }); + + expect(result).toEqual({ passwords: 1, notes: 1 }); + expect(AsyncStorage.multiSet).toHaveBeenCalledTimes(1); + expect(AsyncStorage.multiSet).toHaveBeenCalledWith( + expect.arrayContaining([ + [expect.stringContaining('passwords'), expect.stringContaining('encrypted-')], + [expect.stringContaining('notes'), expect.stringContaining('encrypted-')], + ]), + ); + await expect(StorageService.getAllPasswords()).resolves.toEqual([updatedPassword]); + await expect(StorageService.getNotes()).resolves.toEqual([importedNote]); + }); + + it('keeps both caches unchanged when the combined persistence fails', async () => { + await StorageService.savePassword(existingPassword); + (AsyncStorage.multiSet as jest.Mock).mockRejectedValueOnce(new Error('disk full')); + + await expect( + StorageService.importBackupData({ + passwords: [{ ...existingPassword, password: 'new-secret' }], + notes: [importedNote], + }), + ).rejects.toThrow('disk full'); + + await expect(StorageService.getAllPasswords()).resolves.toEqual([existingPassword]); + await expect(StorageService.getNotes()).resolves.toEqual([]); + }); + + it('rejects an import whose merged password set exceeds the vault limit', async () => { + await StorageService.savePassword(existingPassword); + const importedPasswords = Array.from( + { length: StorageService.MAX_PASSWORDS_LIMIT }, + (_, index): Password => ({ + ...existingPassword, + id: `imported-${index}`, + }), + ); + jest.clearAllMocks(); + + await expect( + StorageService.importBackupData({ passwords: importedPasswords }), + ).rejects.toThrow('Password limit'); + expect(CryptoService.encrypt).not.toHaveBeenCalled(); + expect(AsyncStorage.multiSet).not.toHaveBeenCalled(); + }); + }); + describe('Notes', () => { const mockNote: Note = { id: '1', @@ -362,6 +460,16 @@ describe('StorageService', () => { mockEncryptionKey, ); }); + + it('does not clear notes without an active vault key', async () => { + await StorageService.saveNote(mockNote); + StorageService.setEncryptionKey(''); + jest.clearAllMocks(); + + await expect(StorageService.clearAllNotes()).rejects.toThrow('Encryption key not set'); + expect(AsyncStorage.removeItem).not.toHaveBeenCalled(); + await expect(StorageService.getNotes()).resolves.toEqual([mockNote]); + }); }); describe('Data reset', () => { diff --git a/src/hooks/settings/useExportImport.ts b/src/hooks/settings/useExportImport.ts index 6b20723..e5a5a4b 100644 --- a/src/hooks/settings/useExportImport.ts +++ b/src/hooks/settings/useExportImport.ts @@ -71,43 +71,24 @@ export const useExportImport = ({ return; } - const hasPasswords = Array.isArray(validatedData.passwords); - const hasNotes = Array.isArray(validatedData.notes); - - let importedPasswordsCount = 0; - let importedNotesCount = 0; - - if (hasPasswords && validatedData.passwords) { - const currentPasswordCount = await Storage.getPasswordCount(); - const canAddMore = await Storage.canAddPassword(); - const passwordsToImport = validatedData.passwords.length; - - if (!canAddMore) { - alert( - t('limit_reached_import'), - t('limit_reached_import_message').replace('{limit}', MAX_PASSWORDS_LIMIT.toString()), - ); - return; - } + if (validatedData.passwords) { + const currentPasswords = await Storage.getAllPasswords(); + const currentIds = new Set(currentPasswords.map((password) => password.id)); + const newIds = new Set( + validatedData.passwords + .map((password) => password.id) + .filter((id) => !currentIds.has(id)), + ); - const remainingSlots = MAX_PASSWORDS_LIMIT - currentPasswordCount; - if (passwordsToImport > remainingSlots) { + if (currentPasswords.length + newIds.size > MAX_PASSWORDS_LIMIT) { alert(t('insufficient_space'), t('insufficient_space_message')); return; } - - for (const pwd of validatedData.passwords) { - await Storage.savePassword(pwd); - importedPasswordsCount++; - } } - if (hasNotes && validatedData.notes) { - for (const note of validatedData.notes) { - await Storage.saveNote(note); - importedNotesCount++; - } - } + const importResult = await Storage.importBackupData(validatedData); + const importedPasswordsCount = importResult.passwords; + const importedNotesCount = importResult.notes; await NotificationService.sendBackupSuccess(); @@ -320,7 +301,14 @@ export const useExportImport = ({ return; } - if (!isBackupFileSizeAllowed(selectedFile.size)) { + let fileSize = selectedFile.size; + if (fileSize === undefined && Platform.OS !== 'web') { + const fileInfo = await FileSystem.getInfoAsync(fileUri); + if (fileInfo.exists) fileSize = fileInfo.size; + } + + // Reject unknown sizes instead of reading an unbounded file into memory. + if (!isBackupFileSizeAllowed(fileSize)) { alert(t('error'), t('import_invalid_file')); return; } diff --git a/src/services/auth/authService.ts b/src/services/auth/authService.ts index 55daa43..64caac7 100644 --- a/src/services/auth/authService.ts +++ b/src/services/auth/authService.ts @@ -25,7 +25,8 @@ export type AuthFailureReason = | 'biometrics_disabled' | 'biometric_key_unavailable' | 'biometric_auth_failed' - | 'not_authenticated'; + | 'not_authenticated' + | 'master_key_already_configured'; export interface AuthFailure { reason: AuthFailureReason; @@ -127,6 +128,10 @@ async function upgradeVaultKdfIfLegacy( try { Logger.info('AuthService: upgrading vault KDF to current Argon2id parameters'); + // Read preferences before changing either side of the vault transaction. A + // preference read failure must not leave ciphertext and verifier metadata out of sync. + const prefs = await StorageService.getUserPreferences(); + const { masterKeyInfo: newMkInfo, derivedKey: newKey } = await CryptoService.createMasterKeyInfoWithDerivedKey(masterPassword); @@ -153,8 +158,14 @@ async function upgradeVaultKdfIfLegacy( throw error; } - // Keep biometric unlock working by storing the new vault key. - const prefs = await StorageService.getUserPreferences(); + // Ciphertext and verifier metadata are now committed as one logical unit. + // Update authentication state before optional biometric maintenance so a + // SecureStore cleanup failure can never trigger a vault rollback. + masterKeyInfo = newMkInfo; + StorageService.setEncryptionKey(newKey); + + // Keep biometric unlock working by storing the new vault key. This is + // deliberately best-effort after the core vault transaction has committed. if (prefs.biometricsEnabled) { try { await StorageService.saveBiometricKey(newKey); @@ -163,12 +174,14 @@ async function upgradeVaultKdfIfLegacy( 'AuthService: failed to refresh biometric key after KDF upgrade', biometricError, ); - await disableBiometrics(prefs); + try { + await disableBiometrics(prefs); + } catch (cleanupError) { + Logger.warn('AuthService: failed to disable biometrics after KDF upgrade', cleanupError); + } } } - masterKeyInfo = newMkInfo; - StorageService.setEncryptionKey(newKey); Logger.info('AuthService: vault KDF upgrade completed'); return true; } catch (error) { @@ -236,14 +249,22 @@ export const initDatabase = async (): Promise => { * Configures the master password for the user. */ export const setupMasterPassword = async (masterPassword: string): Promise => { + let hasPersistedNewMasterKeyInfo = false; try { clearAuthFailure(); + const existingMasterKeyInfo = await StorageService.getMasterKeyInfo(); + if (existingMasterKeyInfo) { + setAuthFailure('master_key_already_configured', 'Master password is already configured'); + return false; + } + // Create master key info (salt, iterations, etc.) const { masterKeyInfo: mkInfo, derivedKey: encryptionKey } = await CryptoService.createMasterKeyInfoWithDerivedKey(masterPassword); // Save info to SecureStore await StorageService.saveMasterKeyInfo(mkInfo); + hasPersistedNewMasterKeyInfo = true; // Set encryption key in memory StorageService.setEncryptionKey(encryptionKey); @@ -258,6 +279,20 @@ export const setupMasterPassword = async (masterPassword: string): Promise = const oldMkInfo = masterKeyInfo; let dataReEncryptedWithNewKey = false; let newEncryptionKey: string | null = null; + let prefs: Awaited>; try { + // Resolve optional side-effect state before changing encrypted storage. If + // this read fails, the vault remains untouched. + prefs = await StorageService.getUserPreferences(); + // 2. Create new Master Key Info const { masterKeyInfo: newMkInfo, derivedKey } = await CryptoService.createMasterKeyInfoWithDerivedKey(password); @@ -558,23 +598,11 @@ export const updateMasterPassword = async (password: string): Promise = // CRITICAL: If this fails, the rollback below restores the old encrypted state. await StorageService.saveMasterKeyInfo(newMkInfo); - // 6. If Biometrics enabled, replace the stored biometric key with the new vault key. - const prefs = await StorageService.getUserPreferences(); - if (prefs.biometricsEnabled) { - try { - await StorageService.saveBiometricKey(newEncryptionKey); - } catch (biometricError) { - Logger.warn('AuthService: Failed to update biometric key after PIN change', biometricError); - await disableBiometrics(prefs); - } - } - - // 7. Update memory state + // 6. Ciphertext and verifier metadata are committed. Update in-memory state + // before optional biometric maintenance so later cleanup failures cannot + // roll the vault back while leaving the new verifier in SecureStore. masterKeyInfo = newMkInfo; StorageService.setEncryptionKey(newEncryptionKey); - - Logger.info('AuthService: Master password updated successfully'); - return true; } catch (error) { Logger.error('AuthService: Error updating master password', error); setAuthFailure('derive_key_failed', 'Master password update failed'); @@ -604,6 +632,25 @@ export const updateMasterPassword = async (password: string): Promise = return false; } + + // 7. Biometric persistence is a separate, best-effort transaction. The + // password change is already durable and must remain successful even if the + // biometric key or its cleanup cannot be written. + if (prefs.biometricsEnabled && newEncryptionKey) { + try { + await StorageService.saveBiometricKey(newEncryptionKey); + } catch (biometricError) { + Logger.warn('AuthService: Failed to update biometric key after PIN change', biometricError); + try { + await disableBiometrics(prefs); + } catch (cleanupError) { + Logger.warn('AuthService: Failed to disable biometrics after PIN change', cleanupError); + } + } + } + + Logger.info('AuthService: Master password updated successfully'); + return true; }; // Add other methods as needed based on original file... diff --git a/src/services/auth/authServiceMock.ts b/src/services/auth/authServiceMock.ts index f5a73be..be31e98 100644 --- a/src/services/auth/authServiceMock.ts +++ b/src/services/auth/authServiceMock.ts @@ -23,10 +23,14 @@ const AuthServiceMock = { }, setupMasterPassword: async (masterPassword: string): Promise => { + let hasPersistedNewMasterKeyInfo = false; try { + if (await StorageServiceMock.getMasterKeyInfo()) return false; + const { masterKeyInfo: mkInfo, derivedKey: encryptionKey } = await CryptoServiceMock.createMasterKeyInfoWithDerivedKey(masterPassword); await StorageServiceMock.saveMasterKeyInfo(mkInfo); + hasPersistedNewMasterKeyInfo = true; StorageServiceMock.setEncryptionKey(encryptionKey); await StorageServiceMock.initDatabase(); @@ -36,6 +40,16 @@ const AuthServiceMock = { return true; } catch (error) { Logger.error('AuthServiceMock: Error setting up master password', error); + isAuthenticated = false; + masterKeyInfo = null; + StorageServiceMock.setEncryptionKey(''); + if (hasPersistedNewMasterKeyInfo) { + try { + await StorageServiceMock.deleteMasterKeyInfo(); + } catch (cleanupError) { + Logger.error('AuthServiceMock: Failed to roll back incomplete setup', cleanupError); + } + } return false; } }, diff --git a/src/services/crypto/cryptoService.ts b/src/services/crypto/cryptoService.ts index c825b9a..578bec3 100644 --- a/src/services/crypto/cryptoService.ts +++ b/src/services/crypto/cryptoService.ts @@ -366,8 +366,10 @@ export const decrypt = async (encryptedText: string, key: string): Promise= 0 && size <= MAX_BACKUP_FILE_SIZE_BYTES) + size !== undefined && + Number.isSafeInteger(size) && + size >= 0 && + size <= MAX_BACKUP_FILE_SIZE_BYTES ); } diff --git a/src/services/storage/storageService.ts b/src/services/storage/storageService.ts index 1371979..197ef90 100644 --- a/src/services/storage/storageService.ts +++ b/src/services/storage/storageService.ts @@ -335,6 +335,11 @@ export const getMasterKeyInfo = async (): Promise => { return cache.masterKeyInfo; }; +export const deleteMasterKeyInfo = async (): Promise => { + await SecureStore.deleteItemAsync(STORAGE_KEYS.MASTER_KEY_INFO_SECURE); + cache.masterKeyInfo = null; +}; + export const setEncryptionKey = (key: string): void => { if (!key) { encryptionKey = null; @@ -364,6 +369,81 @@ export const canAddPassword = async (): Promise => { return cache.passwords.length < MAX_PASSWORDS_LIMIT; }; +export interface BackupImportData { + passwords?: Password[]; + notes?: Note[]; +} + +export interface BackupImportResult { + passwords: number; + notes: number; +} + +function mergeRecordsById(current: T[], imported: T[]): T[] { + const merged = [...current]; + const indexesById = new Map(merged.map((record, index) => [record.id, index])); + + for (const record of imported) { + const existingIndex = indexesById.get(record.id); + if (existingIndex === undefined) { + indexesById.set(record.id, merged.length); + merged.push(record); + } else { + merged[existingIndex] = record; + } + } + + return merged; +} + +/** + * Encrypts and persists a validated backup in one storage operation. All + * ciphertext is prepared before writing and caches are updated only after the + * write succeeds, preventing a failed import from exposing a partial vault in + * the active session. + */ +export const importBackupData = async (imported: BackupImportData): Promise => { + const activeKey = getEncryptionKeyOrThrow('import backup'); + if (decryptionErrors.passwords || decryptionErrors.notes) { + throw new Error('Decryption error detected. Cannot import backup safely.'); + } + + const importedPasswords = imported.passwords ?? []; + const importedNotes = imported.notes ?? []; + const nextPasswords = mergeRecordsById(cache.passwords, importedPasswords); + const nextNotes = mergeRecordsById(cache.notes, importedNotes); + + if (nextPasswords.length > MAX_PASSWORDS_LIMIT) { + throw new Error(`Password limit of ${MAX_PASSWORDS_LIMIT} would be exceeded.`); + } + + const writes: [string, string][] = []; + if (imported.passwords) { + writes.push([ + STORAGE_KEYS.PASSWORDS, + await CryptoService.encrypt(JSON.stringify(nextPasswords), activeKey), + ]); + } + if (imported.notes) { + writes.push([ + STORAGE_KEYS.NOTES, + await CryptoService.encrypt(JSON.stringify(nextNotes), activeKey), + ]); + } + + if (writes.length > 0) { + await AsyncStorage.multiSet(writes); + } + + if (imported.passwords) cache.passwords = nextPasswords; + if (imported.notes) cache.notes = nextNotes; + + return { + passwords: importedPasswords.length, + notes: importedNotes.length, + }; +}; + function getEncryptionKeyOrThrow(action: string, scope?: 'passwords' | 'notes'): string { if (scope && decryptionErrors[scope]) { throw new Error(`Decryption error detected. Cannot ${action} safely.`); @@ -471,9 +551,7 @@ export const deletePassword = async (id: string): Promise => { export const clearAllPasswords = async (): Promise => { try { - if (decryptionErrors.passwords) { - throw new Error('Decryption error detected. Cannot clear passwords safely.'); - } + getEncryptionKeyOrThrow('clear passwords', 'passwords'); await AsyncStorage.removeItem(STORAGE_KEYS.PASSWORDS); cache.passwords = []; Logger.info('StorageService: All passwords cleared'); @@ -606,9 +684,7 @@ export const deleteNote = async (noteId: string): Promise => { export const clearAllNotes = async (): Promise => { try { - if (decryptionErrors.notes) { - throw new Error('Decryption error detected. Cannot clear notes safely.'); - } + getEncryptionKeyOrThrow('clear notes', 'notes'); await AsyncStorage.removeItem(STORAGE_KEYS.NOTES); cache.notes = []; Logger.info('StorageService: All notes cleared'); diff --git a/src/services/storage/storageServiceMock.ts b/src/services/storage/storageServiceMock.ts index b9f04bf..c63393f 100644 --- a/src/services/storage/storageServiceMock.ts +++ b/src/services/storage/storageServiceMock.ts @@ -86,6 +86,11 @@ const StorageServiceMock = { } }, + deleteMasterKeyInfo: async (): Promise => { + await AsyncStorage.removeItem(STORAGE_KEYS.MASTER_KEY_INFO); + cachedMasterKeyInfo = null; + }, + setEncryptionKey: (key: string): void => { if (!key) { encryptionKey = null; @@ -185,6 +190,48 @@ const StorageServiceMock = { return count < MAX_PASSWORDS_LIMIT; }, + importBackupData: async (imported: { + passwords?: Password[]; + notes?: Note[]; + }): Promise<{ passwords: number; notes: number }> => { + const passwords = await StorageServiceMock.getAllPasswords(); + const notes = await StorageServiceMock.getNotes(); + + const mergeById = (current: T[], incoming: T[]): T[] => { + const merged = [...current]; + const indexesById = new Map(merged.map((record, index) => [record.id, index])); + for (const record of incoming) { + const existingIndex = indexesById.get(record.id); + if (existingIndex === undefined) { + indexesById.set(record.id, merged.length); + merged.push(record); + } else { + merged[existingIndex] = record; + } + } + return merged; + }; + + const nextPasswords = mergeById(passwords, imported.passwords ?? []); + if (nextPasswords.length > MAX_PASSWORDS_LIMIT) { + throw new Error(`Password limit of ${MAX_PASSWORDS_LIMIT} would be exceeded.`); + } + + const writes: [string, string][] = []; + if (imported.passwords) { + writes.push([STORAGE_KEYS.PASSWORDS, JSON.stringify(nextPasswords)]); + } + if (imported.notes) { + writes.push([STORAGE_KEYS.NOTES, JSON.stringify(mergeById(notes, imported.notes))]); + } + if (writes.length > 0) await AsyncStorage.multiSet(writes); + + return { + passwords: imported.passwords?.length ?? 0, + notes: imported.notes?.length ?? 0, + }; + }, + // Notes methods getNotes: async (): Promise => { try { From cef5e5212fe9d4ffab2604127254dafc820a1dec Mon Sep 17 00:00:00 2001 From: thestreamcode Date: Sun, 9 Aug 2026 00:10:28 +0200 Subject: [PATCH 2/2] release: prepare Keysoft 3.3.1 --- .eas/workflows/build-android-production.yml | 2 +- CHANGELOG.md | 9 ++++ CITATION.cff | 3 +- README.md | 11 ++-- THIRD_PARTY_NOTICES.md | 2 +- app.config.js | 4 +- docs/architecture.md | 10 +++- docs/development.md | 11 ++++ docs/pre-build-security-ui-review.md | 23 ++++++-- docs/publication.md | 7 +++ docs/release.md | 21 ++++++-- docs/releases/3.3.1.md | 59 +++++++++++++++++++++ docs/security-audit-2026-08-08.md | 9 ++++ docs/security.md | 3 ++ package.json | 2 +- 15 files changed, 156 insertions(+), 20 deletions(-) create mode 100644 docs/releases/3.3.1.md diff --git a/.eas/workflows/build-android-production.yml b/.eas/workflows/build-android-production.yml index 5f930af..e87dbf6 100644 --- a/.eas/workflows/build-android-production.yml +++ b/.eas/workflows/build-android-production.yml @@ -1,7 +1,7 @@ name: Build Android production # Release-oriented triggers to conserve EAS build credits (free tier): -# - push a version tag (e.g. v2.1) to build that release, or +# - push a version tag (e.g. v3.3.1) to build that release, or # - run it manually from the Expo dashboard ("Run workflow") / `eas workflow:run`. # Intentionally NOT triggered on every push to main, to avoid burning build minutes. on: diff --git a/CHANGELOG.md b/CHANGELOG.md index 65bb384..b1b1a8f 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,6 +4,15 @@ All notable project changes are documented here. ## [Unreleased] +No unreleased changes. + +## [3.3.1] - 2026-08-09 + +### Release + +- Prepared Keysoft 3.3.1 with native runtime 3.3.1 and Android production build target 130. EAS remote versioning remains authoritative and auto-increments from build 129; + Google Play submission remains a separate manual step. + ### Security - Made PIN rotation and transparent KDF upgrades transactional: preference reads now diff --git a/CITATION.cff b/CITATION.cff index 546c66d..1b9cc40 100644 --- a/CITATION.cff +++ b/CITATION.cff @@ -5,5 +5,6 @@ authors: - family-names: Gasperini given-names: Michael url: 'https://github.com/TheStreamCode/keysoft' -version: '3.3.0' +version: '3.3.1' +date-released: '2026-08-09' license: 'Apache-2.0' diff --git a/README.md b/README.md index dea8b7c..c9b98b6 100644 --- a/README.md +++ b/README.md @@ -84,10 +84,11 @@ trade-offs, and migration rules. Vulnerabilities should be reported privately th ## Current Release -Keysoft 3.3.0 is available on -[Google Play](https://play.google.com/store/apps/details?id=it.mikesoft.keysoft). Android is -the production platform. iPhone and iPad remain cloud-simulator compatibility targets and -are not currently distributed through the App Store. +Keysoft 3.3.1 is the current source release and Android production-build target. +[Google Play](https://play.google.com/store/apps/details?id=it.mikesoft.keysoft) currently +distributes Keysoft 3.3.0 (build 129) until the separately reviewed 3.3.1 app bundle is +submitted. Android is the production platform. iPhone and iPad remain cloud-simulator +compatibility targets and are not currently distributed through the App Store. The source of truth for shipped changes is the [changelog](CHANGELOG.md) and the [latest GitHub release](https://github.com/TheStreamCode/keysoft/releases/latest). Exact @@ -152,7 +153,7 @@ src/ - [Release Guide](docs/release.md) - [iOS Testing Without Apple Hardware](docs/ios-testing.md) - [Public Repository Checklist](docs/publication.md) -- [Keysoft 3.3.0 Release Notes](docs/releases/3.3.0.md) +- [Keysoft 3.3.1 Release Notes](docs/releases/3.3.1.md) - [Changelog](CHANGELOG.md) ## Contributing diff --git a/THIRD_PARTY_NOTICES.md b/THIRD_PARTY_NOTICES.md index 2f791bf..34045ce 100644 --- a/THIRD_PARTY_NOTICES.md +++ b/THIRD_PARTY_NOTICES.md @@ -1,6 +1,6 @@ # Third-Party Notices -Keysoft includes open-source dependencies. The inventory below records the direct runtime dependencies resolved for Keysoft 3.3.0. Transitive packages and their license files remain available in the package distribution and lockfile. +Keysoft includes open-source dependencies. The inventory below records the direct runtime dependencies resolved for Keysoft 3.3.1. Transitive packages and their license files remain available in the package distribution and lockfile. Unless noted otherwise, these direct dependencies are licensed under the MIT License: diff --git a/app.config.js b/app.config.js index f9d3f3f..64b94a6 100644 --- a/app.config.js +++ b/app.config.js @@ -1,7 +1,7 @@ module.exports = { name: 'Keysoft', slug: 'keysoft', - version: '3.3.0', + version: '3.3.1', scheme: 'keysoft', orientation: 'default', // Supports both portrait and landscape userInterfaceStyle: 'automatic', @@ -55,7 +55,7 @@ module.exports = { backgroundColor: '#FFFFFF', }, package: 'it.mikesoft.keysoft', - versionCode: 129, + versionCode: 130, permissions: [ 'INTERNET', 'USE_BIOMETRIC', diff --git a/docs/architecture.md b/docs/architecture.md index 28e0031..ef1c6ba 100644 --- a/docs/architecture.md +++ b/docs/architecture.md @@ -109,8 +109,12 @@ A top-level error boundary (`src/components/ErrorBoundary.tsx`) wraps the naviga 3. Biometric login asks SecureStore for the stored biometric vault key with device authentication, verifies it against the same master-key verifier, and then loads it into memory. 4. `StorageService` initializes the encrypted vault cache with the active key. 5. `AuthContext` completes the shared post-login pipeline: authentication state, login notification, post-auth migration, notification settings, clipboard timeout, and auto-lock timeout. -6. Password and note writes are serialized, encrypted with KS1, persisted to AsyncStorage, and only then committed to the decrypted in-memory cache. -7. Logout and auto-lock clear authentication state and the in-memory key. +6. PIN setup, PIN rotation, and transparent KDF upgrades treat ciphertext and verifier + metadata as one authenticated transaction. If rollback also fails, the session and + in-memory key are cleared instead of continuing against uncertain storage. +7. Password and note writes are serialized, encrypted with KS1, persisted to AsyncStorage, + and only then committed to the decrypted in-memory cache. +8. Logout and auto-lock clear authentication state and the in-memory key. ## Storage Boundaries @@ -137,6 +141,8 @@ Exports are user-initiated. Encrypted exports use `KS1-PW1`, which wraps: - Version metadata. Imports are parsed as unknown data and validated before any object reaches `StorageService`. +Validated password and note records are merged by ID, encrypted completely, and committed +through one batched storage mutation so an import cannot persist only one collection. Imported files and collection sizes are bounded before parsing and persistence. Export passwords and encrypted import payloads are cleared from hook state when their dialogs close, and temporary export files are removed after the platform share flow completes. diff --git a/docs/development.md b/docs/development.md index 04f2af2..a872dd5 100644 --- a/docs/development.md +++ b/docs/development.md @@ -155,6 +155,11 @@ If `expo-doctor` reports duplicate native modules after a valid dependency updat For significant behavior or release changes, update `README.md`, `CHANGELOG.md`, and the relevant file under `docs/`. Historical release notes under `docs/releases/` remain snapshots and should not be rewritten to describe later behavior. +Each release adds a new `docs/releases/.md` snapshot and synchronizes +`package.json`, `app.config.js`, `CITATION.cff`, `THIRD_PARTY_NOTICES.md`, the README current +release section, and `docs/release.md`. Distinguish the source/GitHub release, EAS build, +Google Play submission, and Play Store publication; none of those states implies the next. + When a change affects permissions, networking, updates, backups, biometrics, clipboard handling, profile images, key derivation, data retention, support contacts, or supported platforms, also review: - the Italian and English privacy keys in `src/locales/`; @@ -177,6 +182,12 @@ bun run build:android:production The repository is also linked to EAS Build, and the EAS Workflow `.eas/workflows/build-android-production.yml` can build the Android production app-bundle from GitHub. It is triggered only by a version tag push (`v*`) or manual dispatch to limit build-credit usage; it does not run on every push. iOS remains available only through the explicitly approved cloud-simulator workflow; App Store publication is outside the project workflow. +When publishing an approved release, push and verify `main` first, wait for the GitHub +`Validate` and CodeQL checks, then create the version tag on that exact commit. The tag push +already starts the EAS production workflow; do not also run `bun run +build:android:production` unless the tag-triggered workflow failed to start and a deliberate +replacement build is approved. + Expo Go cannot load custom native modules. Keysoft therefore uses the PBKDF2 KDF fallback in Expo Go and keeps Argon2 for EAS/native builds where `react-native-argon2` is available. Use Expo Go for development and smoke testing only. Create release-test vaults in an EAS/native build when validating Argon2 behavior. Vault metadata that requires Argon2 (`memory > 0`) must fail with the native-KDF diagnostic if the native module is unavailable; do not reintroduce PBKDF2 fallback for that path. diff --git a/docs/pre-build-security-ui-review.md b/docs/pre-build-security-ui-review.md index 94ea959..a0166ac 100644 --- a/docs/pre-build-security-ui-review.md +++ b/docs/pre-build-security-ui-review.md @@ -1,9 +1,11 @@ # Pre-Build Security And UI Review Original review date: 2026-06-17 -Latest update: 2026-08-02 +Latest update: 2026-08-09 -Published production release: Keysoft 3.3.0, Android versionCode 129, with iOS simulator readiness retained outside the App Store release scope. +Current source release target: Keysoft 3.3.1, Android versionCode 130. Google Play remains on +Keysoft 3.3.0, versionCode 129, until the new production bundle is submitted manually. iOS +simulator readiness remains outside the App Store release scope. ## Executive Summary @@ -11,6 +13,21 @@ The codebase passes local static and test verification, and the Android JS bundl The release-blocking privacy/config mismatch and the main accessibility issues were accepted for remediation after this review. Keep this file as the audit trail for the pre-build review. +### 2026-08-09 Release Review + +The 3.3.1 release packages the 2026-08-08 security/code audit and GitHub presentation work. +Authentication setup, PIN rotation, KDF upgrades, encrypted writes, and batched imports now +fail closed across persistence errors. Backup size/KDF/ciphertext bounds, active-key guards, +generated permission blocks, frozen CI installs, and focused regressions remain in place. +The release preserves KS1/KS1-PW1 compatibility, storage keys, default vault KDF parameters, +permissions, icons, and the offline-only vault boundary. + +Public documentation now leads with the product promise, Google Play availability, security +model, and production screenshots. The repository description, homepage, structured issue +intake, and first-party social preview were verified live. Local verification passes 30 Jest +suites / 212 tests, Expo Doctor 20/20, the critical dependency gate, Android bundle export, +and generated-native R8, permission, and Argon2 keep-rule checks. + ### 2026-08-02 Follow-Up Review The repository was reviewed again after the 3.3.0 release without changing its design, @@ -133,7 +150,7 @@ The 2.2 release is documentation- and content-only on top of 2.1: the settings s - `bun run format:check` - `bun run typecheck` - `bun run lint` -- `bun run test:ci`: 30 suites, 199 tests +- `bun run test:ci`: 30 suites, 212 tests - `bunx expo-doctor`: 20/20 checks - `bun audit --audit-level=critical` - `bunx expo export --platform android --output-dir C:\tmp\keysoft-android-export` diff --git a/docs/publication.md b/docs/publication.md index e801d3e..e4a1917 100644 --- a/docs/publication.md +++ b/docs/publication.md @@ -77,6 +77,8 @@ Recommended settings: requires write access. - Disable blank issues when structured bug, feature, and private vulnerability-reporting paths are available. +- Verify the repository description, homepage, topics, and social preview after any product + positioning or store-link change. ## Current Public Configuration @@ -95,3 +97,8 @@ classic branch protection API. The repository is therefore configured with administrator bypass disabled for non-admin collaborators by permission model: `TheStreamCode` is the only collaborator with push/admin access, and all other contributors must use pull requests. + +The repository description states the offline-first privacy promise, the homepage points to +Google Play, structured issue templates are enabled with blank issues disabled, and the +first-party Keysoft banner is configured as the social preview. Recheck these live settings +before each public launch announcement. diff --git a/docs/release.md b/docs/release.md index f0dab0f..94e4a2f 100644 --- a/docs/release.md +++ b/docs/release.md @@ -2,7 +2,11 @@ ## Release Readiness Checklist -Current production release: Keysoft 3.3.0, Android versionCode 129, published on Google Play. EAS remote versioning remains authoritative for future Android builds. iOS remains a cloud-simulator compatibility target and is not an App Store release target. +Current source release and Android build target: Keysoft 3.3.1, versionCode 130. Google Play +currently distributes Keysoft 3.3.0, versionCode 129, until the new app bundle completes +review and is submitted manually. EAS remote versioning remains authoritative for Android +builds. iOS remains a cloud-simulator compatibility target and is not an App Store release +target. Before preparing a release: @@ -37,9 +41,15 @@ Application version data is maintained in: - `app.config.js` - Android native configuration where applicable -For the current 3.3.0 production release, `app.config.js` uses `version: "3.3.0"`, `android.versionCode: 129`, and an iOS simulator baseline of `ios.buildNumber: "1"`. The published Android release uses build 129. The local value mirrors the release for manifest visibility but does not control future EAS production builds. Because EAS Update uses the `appVersion` runtime policy, this release uses native runtime 3.3.0. +For the 3.3.1 source release, `app.config.js` uses `version: "3.3.1"`, +`android.versionCode: 130`, and an iOS simulator baseline of `ios.buildNumber: "1"`. Before +the build, the EAS remote Android value is 129; the production profile auto-increments it to 130. The local value mirrors the target for manifest visibility but does not control the EAS +counter. Because EAS Update uses the `appVersion` runtime policy, this release uses native +runtime 3.3.1. Google Play remains on 3.3.0/129 until manual submission and publication. -Read the current remote value with `bunx eas-cli build:version:get --platform android` instead of assuming the baseline. +Read the current remote value with +`bunx eas-cli build:version:get --platform android --profile production --non-interactive` +instead of assuming the baseline. When changing Android permissions or update behavior, keep `app.config.js`, EAS profiles, and generated native configuration in sync. @@ -68,7 +78,10 @@ These commands upload the project to expo.dev. Do not start them until the relea ### Build from GitHub -The Android workflow runs for a matching version tag or manual dispatch. It uploads the project to Expo and therefore requires explicit approval before it is run. +The Android workflow runs for a matching version tag or manual dispatch. It uploads the +project to Expo and therefore requires explicit approval before it is run. A release tag +already starts the production build; do not launch the local production-build command as +well unless intentionally replacing a missing or failed workflow run. ## iOS Cloud Simulator Testing diff --git a/docs/releases/3.3.1.md b/docs/releases/3.3.1.md new file mode 100644 index 0000000..ffac9ff --- /dev/null +++ b/docs/releases/3.3.1.md @@ -0,0 +1,59 @@ +# Keysoft 3.3.1 + +Source release: 2026-08-09. + +Android production target: versionCode 130. +Google Play status at release creation: Keysoft 3.3.0 / versionCode 129 remains published; +3.3.1 submission is a separate manual step. + +Keysoft 3.3.1 is a security, reliability, dependency, and repository-quality release. It +does not change the visible application design, canonical assets, Android permissions, +offline-first behavior, storage keys, or KS1/KS1-PW1 payload layouts. + +## Security And Reliability + +- Makes first-time PIN setup, PIN rotation, and transparent KDF upgrades transactional. +- Closes authentication and clears the active key when verifier/ciphertext rollback cannot + restore a known-good storage state. +- Persists encrypted mutations before updating decrypted caches. +- Validates backup size, KDF costs, field/collection limits, and KS1 CBC framing before + persistence. +- Merges imported records by ID and commits password/note changes through one encrypted + batch, preventing partial imports and repeated quadratic writes. +- Requires an active vault key for secure collection clears and blocks + `SYSTEM_ALERT_WINDOW` in generated Android manifests. +- Keeps debug logging message-only and avoids structured vault or preference data. + +## Fixed + +- Applies excluded-similar-character filtering to every password-generator character set, + including the character guaranteed from each enabled class. +- Keeps generated passwords at the requested length even for direct API calls shorter than + the number of enabled classes. +- Uses canonical-alphabet membership in the development web crypto mock's special-character + regression coverage. + +## Tooling And Repository + +- Aligns Expo SDK 57 and compatible JavaScript patch releases while preserving the supported + React Native 0.86 toolchain. +- Adds weekly Bun Dependabot updates and frozen lockfile installation to every CI path. +- Publishes a product-first README, official production screenshots, a Google Play homepage, + structured issue intake, a first-party social preview, and a dated full audit. + +## Verification + +- `bun install --frozen-lockfile` +- `bun run verify`: formatting, strict TypeScript, ESLint, 30 suites / 212 tests, and Expo + Doctor 20/20 +- `bun audit --audit-level=critical`: zero critical advisories +- Android Expo bundle export +- Generated Android inspection for permissions, optimized R8/resource shrinking, and Argon2 + keep rules +- GitHub `Validate` and CodeQL checks + +## Deployment Boundary + +The `v3.3.1` tag identifies the exact source used to start the EAS Android production build. +The EAS profile produces an Android App Bundle and auto-increments the remote version from +129 to 130. It does not submit to Google Play; store review and publication remain manual. diff --git a/docs/security-audit-2026-08-08.md b/docs/security-audit-2026-08-08.md index 11b472b..87417b5 100644 --- a/docs/security-audit-2026-08-08.md +++ b/docs/security-audit-2026-08-08.md @@ -206,3 +206,12 @@ This audit performed local source changes, dependency resolution, tests, an Andr export, and a temporary native prebuild. It did not start an EAS build, submit to Google Play, create a tag or release, push commits, change secrets, dismiss GitHub alerts, or deploy anything. + +## Post-Audit Publication Follow-Up — 2026-08-09 + +The audited changes were subsequently published for review in GitHub PR #35 with green CI +and CodeQL analysis. The existing `js/insufficient-password-hash` alert on the KS1 encryption +call was dismissed as a false positive with a repository-visible technical justification: +the operation reversibly encrypts vault records under an already KDF-derived key and is not +password-authentication hashing. Keysoft 3.3.1 packages the audited changes without altering +the KS1/KS1-PW1 formats or accepted compatibility boundaries. diff --git a/docs/security.md b/docs/security.md index ac35335..dd3e480 100644 --- a/docs/security.md +++ b/docs/security.md @@ -127,6 +127,8 @@ Expected behavior: - Writes are blocked after decryption errors until the unsafe state is resolved. - Mutations persist encrypted data before changing the decrypted cache, so a failed write cannot expose an uncommitted value through later reads. - Backup imports prepare every changed encrypted collection before one batched write and update neither cache if that write fails. +- Imported records are merged by ID and checked against post-merge collection limits before + encryption, preventing both partial persistence and repeated quadratic writes. - Clearing a password or note collection requires an active vault key and is blocked after a decryption error. - Master-key verifier metadata is written to SecureStore before its in-memory cache is updated. A failed SecureStore write leaves the previously persisted and cached verifier unchanged. - Initial PIN setup refuses to replace existing verifier metadata. If first-time database initialization fails after saving a new verifier, that verifier is removed and authentication/key state is cleared before setup reports failure. @@ -216,3 +218,4 @@ Security-sensitive changes should add or update tests in `src/__tests__/services The latest repository-wide review is recorded in [`security-audit-2026-08-08.md`](security-audit-2026-08-08.md). +Its release follow-up is documented in the Keysoft 3.3.1 release notes. diff --git a/package.json b/package.json index 8d165e6..cc5e43c 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "keysoft", "author": "Michael Gasperini (Mikesoft)", - "version": "3.3.0", + "version": "3.3.1", "packageManager": "bun@1.3.14", "repository": { "type": "git",