v3.1.0 -- Google Play Launch and Stability
Release Date: May 2026
This release focused on shipping TrickBook to Google Play, fixing critical authentication and UI bugs, and hardening Kaori's reliability.
Highlights
Google Play Store Submission
TrickBook is now submitted to Google Play (Closed Alpha, internal track). The full EAS Build + EAS Submit pipeline is operational:
- AAB format with auto-incrementing versionCode (currently v15)
- Service account authentication for automated submission
- Managed publishing enabled for controlled rollouts
See Google Play Deployment for the full pipeline documentation.
Native Google Sign-In (Android)
Migrated from expo-auth-session (browser-based OAuth) to @react-native-google-signin/google-signin (native SDK).
Why: The browser-based flow used custom scheme redirect URIs (trickbook://) which Google's web OAuth clients reject with Error 400. This broke Google Sign-In for all Play Store users.
What changed:
- Native one-tap Google Sign-In on Android (no browser popup)
- Two Android OAuth clients registered in GCP: one for upload key (dev), one for app signing key (production)
- Config plugin added to
app.config.jswithiosUrlScheme - Backend verification unchanged (webClientId used as ID token audience)
See ADR-001: Native Google Sign-In for the full decision record.
Kaori AI Reliability
Fixed two issues that made Kaori unusable:
-
ElizaOS service was stopped -- the
kaori-botPM2 process had crashed and not recovered (34 restarts, status: stopped). Restarted and now monitored. -
Bot-chat had no fallback -- when ElizaOS was down, the bot-chat endpoint immediately returned a "technical difficulties" error. Added the same three-tier fallback chain that the DM route already had:
ElizaOS (30s timeout) --> OpenRouter/Gemini 2.0 Flash (25s timeout) --> Static error
See ADR-002: Kaori Fallback Chain.
- User messages disappeared in chat -- the
botChat.jsroute saved user messages to MongoDB without themessagefield. Text was sent to the AI but never persisted. Fixed by addingmessage: messageto the database insert.
Map Pin Rendering (Android)
Fixed map markers on the Spots screen showing as yellow triangles instead of proper pin icons on Android.
Root cause: Android's react-native-maps renders custom Marker children as bitmap snapshots. The Pressable wrapper and CSS shadow/elevation styles caused Android to fail at capturing the circular marker icon -- only the border-based triangle pointer rendered.
Fix:
- Removed
Pressablewrapper insideMarker(theMarker.onPressalready handles taps) - Removed
shadowColor,shadowOffset,shadowOpacity,shadowRadius, andelevationfrom marker styles (these don't work in bitmap-snapshot mode)
Technical Changes
Mobile App (TrickList)
| File | Change |
|---|---|
app.config.js | Added @react-native-google-signin/google-signin config plugin |
app/(auth)/welcome.tsx | Replaced expo-auth-session with native GoogleSignin.signIn() |
app/(tabs)/spots/index.tsx | Removed Pressable wrapper and shadow styles from map markers |
package.json | Added @react-native-google-signin/google-signin dependency |
eas.json | Added serviceAccountKeyPath to playstore submit profile |
Backend
| File | Change |
|---|---|
routes/botChat.js | Added message field to user message saves; added OpenRouter fallback chain |
.env.example | Added GOOGLE_IOS_CLIENT_ID, GOOGLE_ANDROID_CLIENT_ID |
Infrastructure
| Component | Change |
|---|---|
| Google Cloud Console | Added second Android OAuth client (app signing key SHA-1) |
| PM2 (kaori-bot) | Restarted stopped ElizaOS service |
| PM2 (TB-Backend) | Deployed botChat.js fix with fallback chain |
Known Issues
- Previous Kaori bot-chat messages saved without user text will still appear as empty yellow bubbles (historical data, not fixable retroactively)
- Store listing (description, screenshots, feature graphic) still needed before production release
- Content rating questionnaire and data safety form still pending in Play Console
Documentation Updates
- Updated Architecture Overview with AI services, dual-database, and new collections
- Created ADR-001: Native Google Sign-In
- Created ADR-002: Kaori Fallback Chain
- Created Infrastructure Overview with EC2/PM2 topology
- Updated Google Play Deployment with current status and pipeline