diff --git a/mobile_app/package-lock.json b/mobile_app/package-lock.json index 9b67337..ca4d4cb 100644 --- a/mobile_app/package-lock.json +++ b/mobile_app/package-lock.json @@ -11,7 +11,7 @@ "dependencies": { "@expo-google-fonts/space-grotesk": "^0.4.1", "@expo/vector-icons": "^15.0.3", - "@magicred-1/react-native-lxmf": "^0.2.79", + "@magicred-1/react-native-lxmf": "^0.2.80", "@msgpack/msgpack": "^3.1.3", "@noble/ciphers": "^2.2.0", "@noble/curves": "^2.2.0", @@ -122,7 +122,6 @@ "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.29.0.tgz", "integrity": "sha512-CGOfOJqWjg2qW/Mb6zNsDm+u5vFQ8DxXfbM09z69p5Z6+mE1ikP2jUXw+j42Pf1XTYED2Rni5f95npYeuwMDQA==", "license": "MIT", - "peer": true, "dependencies": { "@babel/code-frame": "^7.29.0", "@babel/generator": "^7.29.0", @@ -2742,9 +2741,9 @@ } }, "node_modules/@magicred-1/react-native-lxmf": { - "version": "0.2.79", - "resolved": "https://registry.npmjs.org/@magicred-1/react-native-lxmf/-/react-native-lxmf-0.2.79.tgz", - "integrity": "sha512-z55axRdwKWlgZgbJ1KTwHW9TsqrsJIO9XDGxi0+A6+rs7GxB4RKSmdt1uajKzxKghijaSog9UzOEn0zlon+dhA==", + "version": "0.2.80", + "resolved": "https://registry.npmjs.org/@magicred-1/react-native-lxmf/-/react-native-lxmf-0.2.80.tgz", + "integrity": "sha512-+Vp1xy7v3XATU+2wJYjrFYGp6f9597nVNT9FI0ASdyz9LTP1JnrafoAW9ToukKnI3AysaB8sW5GxjXoZ+TmMtA==", "license": "MIT", "dependencies": { "@expo/config-plugins": "^9.0.0" @@ -3485,7 +3484,6 @@ "resolved": "https://registry.npmjs.org/@react-navigation/native/-/native-7.2.2.tgz", "integrity": "sha512-kem1Ko2BcbAjmbQIv66dNmr6EtfDut3QU0qjsVhMnLLhktwyXb6FzZYp8gTrUb6AvkAbaJoi+BF5Pl55pAUa5w==", "license": "MIT", - "peer": true, "dependencies": { "@react-navigation/core": "^7.17.2", "escape-string-regexp": "^4.0.0", @@ -4438,7 +4436,6 @@ "resolved": "https://registry.npmjs.org/@solana/web3.js/-/web3.js-1.98.4.tgz", "integrity": "sha512-vv9lfnvjUsRiq//+j5pBdXig0IQdtzA0BRZ3bXEP4KaIyF1CcaydWqgyzQgfZMNIsWNWmG+AUHwPy4AHOD6gpw==", "license": "MIT", - "peer": true, "dependencies": { "@babel/runtime": "^7.25.0", "@noble/curves": "^1.4.2", @@ -4722,9 +4719,8 @@ "version": "19.1.17", "resolved": "https://registry.npmjs.org/@types/react/-/react-19.1.17.tgz", "integrity": "sha512-Qec1E3mhALmaspIrhWt9jkQMNdw6bReVu64mjvhbhq2NFPftLPVr+l1SZgmw/66WwBNpDh7ao5AT6gF5v41PFA==", - "devOptional": true, + "dev": true, "license": "MIT", - "peer": true, "dependencies": { "csstype": "^3.0.2" } @@ -4836,7 +4832,6 @@ "integrity": "sha512-/Zb/xaIDfxeJnvishjGdcR4jmr7S+bda8PKNhRGdljDM+elXhlvN0FyPSsMnLmJUrVG9aPO6dof80wjMawsASg==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "@typescript-eslint/scope-manager": "8.58.2", "@typescript-eslint/types": "8.58.2", @@ -5522,7 +5517,6 @@ "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.16.0.tgz", "integrity": "sha512-UVJyE9MttOsBQIDKw1skb9nAwQuR5wuGD3+82K6JgJlm/Y+KI92oNsMNGZCYdDsVtRHSak0pcV5Dno5+4jh9sw==", "license": "MIT", - "peer": true, "bin": { "acorn": "bin/acorn" }, @@ -6319,7 +6313,6 @@ } ], "license": "MIT", - "peer": true, "dependencies": { "baseline-browser-mapping": "^2.10.12", "caniuse-lite": "^1.0.30001782", @@ -6841,7 +6834,7 @@ "version": "3.2.3", "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.2.3.tgz", "integrity": "sha512-z1HGKcYy2xA8AGQfwrn0PAy+PB7X/GSj3UVJW9qKyn43xWa+gl5nXmU4qqLMRzWVLFC8KusUX8T/0kCiOYpAIQ==", - "devOptional": true, + "dev": true, "license": "MIT" }, "node_modules/data-view-buffer": { @@ -7459,7 +7452,6 @@ "integrity": "sha512-XoMjdBOwe/esVgEvLmNsD3IRHkm7fbKIUGvrleloJXUZgDHig2IPWNniv+GwjyJXzuNqVjlr5+4yVUZjycJwfQ==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "@eslint-community/eslint-utils": "^4.8.0", "@eslint-community/regexpp": "^4.12.1", @@ -7656,7 +7648,6 @@ "integrity": "sha512-whOE1HFo/qJDyX4SnXzP4N6zOWn79WhnCUY/iDR0mPfQZO8wcYE4JClzI2oZrhBnnMUCBCHZhO6VQyoBU95mZA==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "@rtsao/scc": "^1.1.0", "array-includes": "^3.1.9", @@ -7877,7 +7868,6 @@ "resolved": "https://registry.npmjs.org/expo/-/expo-54.0.34.tgz", "integrity": "sha512-XkVHguZZDC8BcTQxHAd14/TQFbDp1Wt0Z/KApO9t68Ll5A127hLCPzU+a9gytfCIiyL/V1IpF1vIcOLKEVAoNQ==", "license": "MIT", - "peer": true, "dependencies": { "@babel/runtime": "^7.20.0", "@expo/cli": "54.0.24", @@ -7939,7 +7929,6 @@ "resolved": "https://registry.npmjs.org/expo-asset/-/expo-asset-12.0.13.tgz", "integrity": "sha512-x/p7WvQUnkn6K43b9eL6SPeq5Vnf1E8BDe9bDrWrvMqzyUvJnUFvl+ctg3034s/+UHe7Ne2pAmc0+yzbl8CrDQ==", "license": "MIT", - "peer": true, "dependencies": { "@expo/image-utils": "^0.8.8", "expo-constants": "~18.0.13" @@ -7998,7 +7987,6 @@ "resolved": "https://registry.npmjs.org/expo-constants/-/expo-constants-18.0.13.tgz", "integrity": "sha512-FnZn12E1dRYKDHlAdIyNFhBurKTS3F9CrfrBDJI5m3D7U17KBHMQ6JEfYlSj7LG7t+Ulr+IKaj58L1k5gBwTcQ==", "license": "MIT", - "peer": true, "dependencies": { "@expo/config": "~12.0.13", "@expo/env": "~2.0.8" @@ -8108,7 +8096,6 @@ "resolved": "https://registry.npmjs.org/expo-font/-/expo-font-14.0.11.tgz", "integrity": "sha512-ga0q61ny4s/kr4k8JX9hVH69exVSIfcIc19+qZ7gt71Mqtm7xy2c6kwsPTCyhBW2Ro5yXTT8EaZOpuRi35rHbg==", "license": "MIT", - "peer": true, "dependencies": { "fontfaceobserver": "^2.1.0" }, @@ -8225,7 +8212,6 @@ "resolved": "https://registry.npmjs.org/expo-linking/-/expo-linking-8.0.12.tgz", "integrity": "sha512-FpXeIpFgZuxihwT9lBo86YD3y6LphBuAhN680MMxm/Y7fmsc57vimn2d3vFu68VI0+Z9w457t494mu2wvlgWTQ==", "license": "MIT", - "peer": true, "dependencies": { "expo-constants": "~18.0.13", "invariant": "^2.2.4" @@ -8281,7 +8267,6 @@ "resolved": "https://registry.npmjs.org/expo-modules-core/-/expo-modules-core-3.0.30.tgz", "integrity": "sha512-a6IrpAn/Jbmwxi9L+hMmXKpNqnkUpoF7WHOpn02rVLyax2J0gB1vvCVE5rNydplEnt41Q6WxQwvcOjZaIkcSUg==", "license": "MIT", - "peer": true, "dependencies": { "invariant": "^2.2.4" }, @@ -8937,13 +8922,6 @@ ], "license": "BSD-3-Clause" }, - "node_modules/fastestsmallesttextencoderdecoder": { - "version": "1.0.22", - "resolved": "https://registry.npmjs.org/fastestsmallesttextencoderdecoder/-/fastestsmallesttextencoderdecoder-1.0.22.tgz", - "integrity": "sha512-Pb8d48e+oIuY4MaM64Cd7OW1gt4nxCHs7/ddPPZ/Ic3sg8yVGM7O9wDvZ7us6ScaUupzM+pfBolwtYhN1IxBIw==", - "license": "CC0-1.0", - "peer": true - }, "node_modules/fb-watchman": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/fb-watchman/-/fb-watchman-2.0.2.tgz", @@ -12753,7 +12731,6 @@ "resolved": "https://registry.npmjs.org/react/-/react-19.1.0.tgz", "integrity": "sha512-FS+XFBNvn3GTAWq26joslQgWNoFu08F4kl0J4CgdNKADkdSGXQyTCnKteIAJy96Br6YbpEU1LSzV5dYtjMkMDg==", "license": "MIT", - "peer": true, "engines": { "node": ">=0.10.0" } @@ -12773,7 +12750,6 @@ "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-19.1.0.tgz", "integrity": "sha512-Xs1hdnE+DyKgeHJeJznQmYMIBG3TKIHJJT95Q58nHLSrElKlGQqDTR2HQ9fx5CN/Gk6Vh/kupBTDLU11/nDk/g==", "license": "MIT", - "peer": true, "dependencies": { "scheduler": "^0.26.0" }, @@ -12810,7 +12786,6 @@ "resolved": "https://registry.npmjs.org/react-native/-/react-native-0.81.5.tgz", "integrity": "sha512-1w+/oSjEXZjMqsIvmkCRsOc8UBYv163bTWKTI8+1mxztvQPhCRYGTvZ/PL1w16xXHneIj/SLGfxWg2GWN2uexw==", "license": "MIT", - "peer": true, "dependencies": { "@jest/create-cache-key-function": "^29.7.0", "@react-native/assets-registry": "0.81.5", @@ -12868,7 +12843,6 @@ "resolved": "https://registry.npmjs.org/react-native-gesture-handler/-/react-native-gesture-handler-2.28.0.tgz", "integrity": "sha512-0msfJ1vRxXKVgTgvL+1ZOoYw3/0z1R+Ked0+udoJhyplC2jbVKIJ8Z1bzWdpQRCV3QcQ87Op0zJVE5DhKK2A0A==", "license": "MIT", - "peer": true, "dependencies": { "@egjs/hammerjs": "^2.0.17", "hoist-non-react-statics": "^3.3.0", @@ -12922,7 +12896,6 @@ "resolved": "https://registry.npmjs.org/react-native-reanimated/-/react-native-reanimated-4.1.7.tgz", "integrity": "sha512-Q4H6xA3Tn7QL0/E/KjI86I1KK4tcf+ErRE04LH34Etka2oVQhW6oXQ+Q8ZcDCVxiWp5vgbBH6XcH8BOo4w/Rhg==", "license": "MIT", - "peer": true, "dependencies": { "react-native-is-edge-to-edge": "^1.2.1", "semver": "^7.7.2" @@ -12950,7 +12923,6 @@ "resolved": "https://registry.npmjs.org/react-native-safe-area-context/-/react-native-safe-area-context-5.6.2.tgz", "integrity": "sha512-4XGqMNj5qjUTYywJqpdWZ9IG8jgkS3h06sfVjfw5yZQZfWnRFXczi0GnYyFyCc2EBps/qFmoCH8fez//WumdVg==", "license": "MIT", - "peer": true, "peerDependencies": { "react": "*", "react-native": "*" @@ -12961,7 +12933,6 @@ "resolved": "https://registry.npmjs.org/react-native-screens/-/react-native-screens-4.16.0.tgz", "integrity": "sha512-yIAyh7F/9uWkOzCi1/2FqvNvK6Wb9Y1+Kzn16SuGfN9YFJDTbwlzGRvePCNTOX0recpLQF3kc2FmvMUhyTCH1Q==", "license": "MIT", - "peer": true, "dependencies": { "react-freeze": "^1.0.0", "react-native-is-edge-to-edge": "^1.2.1", @@ -12977,7 +12948,6 @@ "resolved": "https://registry.npmjs.org/react-native-svg/-/react-native-svg-15.12.1.tgz", "integrity": "sha512-vCuZJDf8a5aNC2dlMovEv4Z0jjEUET53lm/iILFnFewa15b4atjVxU6Wirm6O9y6dEsdjDZVD7Q3QM4T1wlI8g==", "license": "MIT", - "peer": true, "dependencies": { "css-select": "^5.1.0", "css-tree": "^1.1.3", @@ -12993,7 +12963,6 @@ "resolved": "https://registry.npmjs.org/react-native-web/-/react-native-web-0.21.2.tgz", "integrity": "sha512-SO2t9/17zM4iEnFvlu2DA9jqNbzNhoUP+AItkoCOyFmDMOhUnBBznBDCYN92fGdfAkfQlWzPoez6+zLxFNsZEg==", "license": "MIT", - "peer": true, "dependencies": { "@babel/runtime": "^7.18.6", "@react-native/normalize-colors": "^0.74.1", @@ -13026,7 +12995,6 @@ "resolved": "https://registry.npmjs.org/react-native-webview/-/react-native-webview-13.15.0.tgz", "integrity": "sha512-Vzjgy8mmxa/JO6l5KZrsTC7YemSdq+qB01diA0FqjUTaWGAGwuykpJ73MDj3+mzBSlaDxAEugHzTtkUQkQEQeQ==", "license": "MIT", - "peer": true, "dependencies": { "escape-string-regexp": "^4.0.0", "invariant": "2.2.4" @@ -13041,7 +13009,6 @@ "resolved": "https://registry.npmjs.org/react-native-worklets/-/react-native-worklets-0.5.1.tgz", "integrity": "sha512-lJG6Uk9YuojjEX/tQrCbcbmpdLCSFxDK1rJlkDhgqkVi1KZzG7cdcBFQRqyNOOzR9Y0CXNuldmtWTGOyM0k0+w==", "license": "MIT", - "peer": true, "dependencies": { "@babel/plugin-transform-arrow-functions": "^7.0.0-0", "@babel/plugin-transform-class-properties": "^7.0.0-0", @@ -13152,7 +13119,6 @@ "resolved": "https://registry.npmjs.org/react-refresh/-/react-refresh-0.14.2.tgz", "integrity": "sha512-jCvmsr+1IUSMUyzOkRcvnVbX3ZYC6g9TDrDbFuFmRDq7PD4yaGbLKNQL6k2jnArV8hjYxh7hVhAZB6s9HDGpZA==", "license": "MIT", - "peer": true, "engines": { "node": ">=0.10.0" } @@ -14596,7 +14562,6 @@ "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.4.tgz", "integrity": "sha512-QP88BAKvMam/3NxH6vj2o21R6MjxZUAd6nlwAS/pnGvN9IVLocLHxGYIzFhg6fUQ+5th6P4dv4eW9jX3DSIj7A==", "license": "MIT", - "peer": true, "engines": { "node": ">=12" }, @@ -14801,8 +14766,8 @@ "version": "5.9.3", "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.9.3.tgz", "integrity": "sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==", + "dev": true, "license": "Apache-2.0", - "peer": true, "bin": { "tsc": "bin/tsc", "tsserver": "bin/tsserver" @@ -15578,7 +15543,6 @@ "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.10.tgz", "integrity": "sha512-+dbF1tHwZpXcbOJdVOkzLDxZP1ailvSxM6ZweXTegylPny803bFhA+vqBYw4s31NSAk4S2Qz+AKXK9a4wkdjcQ==", "license": "MIT", - "peer": true, "engines": { "node": ">=8.3.0" }, diff --git a/mobile_app/package.json b/mobile_app/package.json index 8ed82b5..376b793 100644 --- a/mobile_app/package.json +++ b/mobile_app/package.json @@ -20,7 +20,7 @@ "dependencies": { "@expo-google-fonts/space-grotesk": "^0.4.1", "@expo/vector-icons": "^15.0.3", - "@magicred-1/react-native-lxmf": "^0.2.79", + "@magicred-1/react-native-lxmf": "^0.2.80", "@msgpack/msgpack": "^3.1.3", "@noble/ciphers": "^2.2.0", "@noble/curves": "^2.2.0", diff --git a/mobile_app/src/observability/sentry.ts b/mobile_app/src/observability/sentry.ts index 3c0346c..d8418a4 100644 --- a/mobile_app/src/observability/sentry.ts +++ b/mobile_app/src/observability/sentry.ts @@ -1,44 +1,30 @@ /** * Crash/error observability — Sentry removed. * - * `@sentry/react-native` was removed: its native Gradle step (`sentry.gradle` - * source-map/symbol upload via `sentry-cli`) broke CI, and the app opted out of - * third-party crash reporting. This is a no-op shim that preserves the former - * import surface (`Sentry`, `initObservability`, `observabilityEnabled`) so - * `app/_layout.tsx` and `ErrorBoundary.tsx` compile and run unchanged. The - * ErrorBoundary still renders its fallback UI — it just no longer reports. - * - * The `errorHandler` global handler (console.error + native crash path) is - * unaffected and remains the crash signal. + * @sentry/react-native was removed: its native Gradle/Xcode steps (source-map + * upload via sentry-cli) require an auth token and break CI builds. + * This no-op shim preserves the import surface so app/_layout.tsx and + * ErrorBoundary.tsx compile and run unchanged. The ErrorBoundary still renders + * its fallback UI — it just no longer reports to Sentry. The global + * errorHandler (console.error + native crash path) remains the crash signal. */ -/** Always false — Sentry is gone. Kept for callers that gate on it. */ -export const observabilityEnabled = false; - -/** No-op: Sentry removed. Safe to call once at app entry. */ -export function initObservability(): void { - /* no-op */ -} - interface NoopScope { setTag(key: string, value: string): void; setContext(key: string, value: Record | null): void; } -const noopScope: NoopScope = { - setTag: () => {}, - setContext: () => {}, -}; +const noopScope: NoopScope = { setTag: () => {}, setContext: () => {} }; + +/** Always false — Sentry is gone. */ +export const observabilityEnabled = false; + +/** No-op. */ +export function initObservability(): void { /* no-op */ } -/** No-op stand-in for the `@sentry/react-native` API the app referenced. */ +/** No-op stand-in for @sentry/react-native. */ export const Sentry = { - wrap(component: T): T { - return component; - }, - withScope(callback: (scope: NoopScope) => void): void { - callback(noopScope); - }, - captureException(_error: unknown): void { - /* no-op */ - }, + wrap(component: T): T { return component; }, + withScope(callback: (scope: NoopScope) => void): void { callback(noopScope); }, + captureException(_error: unknown): void { /* no-op */ }, };