b1cdc4d184
Three small follow-ups from the post-Phase-1 quality review:
* authContext.tsx — drop the dead `userId` extraction + the `void
userId` suppressor that masked an unused-locals warning. The session
is already implicitly threaded through the supabase client, so no
consumer of ensureDevice needed the value.
* authContext.tsx — switch the device-name string concat to a
template literal for consistency with the rest of the codebase.
* ErrorBoundary.tsx — replace the four inline hex literals with their
`theme/colors.ts` constants. The boundary was authored in Phase 0
before the theme module existed; this brings it in line with every
Phase 1 screen.
* apps/mobile/README.md — drop the stale Phase-0 paragraph about the
`lib/sharedSmoke.ts` canary (deleted in Phase 1) and add a short
pointer to the env-var setup.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
apps/mobile/lib
App-local helpers that depend on Expo / React Native APIs and therefore cannot live in packages/shared.
Expected contents:
secureStorage.ts— thin adapter overexpo-secure-store, exposes get/set/delete that@chat-app/shared/authconsumes.sqlite.ts— opens the encrypted local message DB viaexpo-sqlite, exposes a migration runner.push.ts— wiresexpo-notifications+ registers FCM/APNs token with Supabase.sodium.ts— bindsreact-native-libsodiumto the backend interface expected by@chat-app/shared/crypto.