Pick any line to see why it is the way it is: the commit, the pull request and issue it came from, and what the agent was thinking.
| The phone app's scaffolding, in apps/mobile: Expo SDK 57 with Expo Router, Android first, with Chat, Code and Customize. It signs in with g1t's own OAuth 2.1 (PKCE, a client id that encodes "g1t for Android" and g1t://oauth/callback, so nothing is registered), keeps the server and credentials in the phone's keystore, refreshes the 30-day token a minute early and shares the single-use refresh between requests. A personal access token is the other way in, and a self-hosted g1t the other server. | 1 | { |
| 2 | "name": "@g1t/mobile", | |
| 3 | "private": true, | |
| 4 | "version": "0.1.0", | |
| 5 | "description": "The g1t phone app (Expo): Chat and Code first, signed in with OAuth, for Android and iOS.", | |
| 6 | "main": "expo-router/entry", | |
| 7 | "scripts": { | |
| 8 | "start": "expo start", | |
| 9 | "android": "expo run:android", | |
| 10 | "ios": "expo run:ios", | |
| 11 | "prebuild": "expo prebuild --clean", | |
| 12 | "typecheck": "tsc --noEmit", | |
| 13 | "test": "node --test \"src/lib/*.test.ts\"", | |
| 14 | "doctor": "expo-doctor", | |
| 15 | "icons": "node scripts/icons.mjs", | |
| 16 | "build:android": "eas build --platform android --profile production", | |
| 17 | "build:android:apk": "eas build --platform android --profile preview", | |
| 18 | "build:ios": "eas build --platform ios --profile production" | |
| 19 | }, | |
| 20 | "dependencies": { | |
| 21 | "@g1t/contracts": "*", | |
| 22 | "@tanstack/react-query": "^5.104.1", | |
| 23 | "expo": "~57.0.27", | |
| 24 | "expo-auth-session": "~57.0.14", | |
| 25 | "expo-clipboard": "~57.0.2", | |
| 26 | "expo-constants": "~57.0.21", | |
| 27 | "expo-crypto": "~57.0.3", | |
| 28 | "expo-font": "~57.0.4", | |
| 29 | "expo-image": "~57.0.5", | |
| 30 | "expo-linking": "~57.0.12", | |
| 31 | "expo-router": "~57.0.25", | |
| 32 | "expo-secure-store": "~57.0.4", | |
| 33 | "expo-splash-screen": "~57.0.9", | |
| 34 | "expo-status-bar": "~57.0.1", | |
| 35 | "expo-system-ui": "~57.0.4", | |
| 36 | "expo-web-browser": "~57.0.3", | |
| 37 | "lucide-react-native": "^1.55.0", | |
| 38 | "react": "19.2.3", | |
| 39 | "react-native": "0.86.3", | |
| 40 | "react-native-gesture-handler": "~2.32.0", | |
| 41 | "react-native-reanimated": "4.5.1", | |
| 42 | "react-native-safe-area-context": "~5.7.0", | |
| 43 | "react-native-screens": "~4.26.0", | |
| 44 | "react-native-svg": "15.15.4", | |
| 45 | "react-native-worklets": "0.10.1" | |
| 46 | }, | |
| 47 | "devDependencies": { | |
| 48 | "@types/react": "~19.2.2", | |
| 49 | "sharp": "^0.35.5", | |
| 50 | "typescript": "~6.0.3" | |
| 51 | } | |
| 52 | } |