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", | |
| A conversation keeps its newest message in view when the keyboard opens, on the site and in the phone app, and the phone app's pushes are ready for a development build. | 9 | "start:go": "expo start --go", |
| 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. | 10 | "android": "expo run:android", |
| 11 | "ios": "expo run:ios", | |
| 12 | "prebuild": "expo prebuild --clean", | |
| 13 | "typecheck": "tsc --noEmit", | |
| 14 | "test": "node --test \"src/lib/*.test.ts\"", | |
| 15 | "doctor": "expo-doctor", | |
| 16 | "icons": "node scripts/icons.mjs", | |
| A conversation keeps its newest message in view when the keyboard opens, on the site and in the phone app, and the phone app's pushes are ready for a development build. | 17 | "build:android:dev": "eas build --platform android --profile development", |
| 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. | 18 | "build:android": "eas build --platform android --profile production", |
| 19 | "build:android:apk": "eas build --platform android --profile preview", | |
| 20 | "build:ios": "eas build --platform ios --profile production" | |
| 21 | }, | |
| 22 | "dependencies": { | |
| 23 | "@g1t/contracts": "*", | |
| 24 | "@tanstack/react-query": "^5.104.1", | |
| 25 | "expo": "~57.0.27", | |
| 26 | "expo-auth-session": "~57.0.14", | |
| 27 | "expo-clipboard": "~57.0.2", | |
| 28 | "expo-constants": "~57.0.21", | |
| 29 | "expo-crypto": "~57.0.3", | |
| A conversation keeps its newest message in view when the keyboard opens, on the site and in the phone app, and the phone app's pushes are ready for a development build. | 30 | "expo-dev-client": "~57.0.19", |
| Chat is the phone app's first part, in full and live, with notifications on the phone. Conversations draw messages as the site does, from the same Markdown parser, run one author's messages together and mark the days; new messages, edits, deletions, reactions and typing arrive over the conversation's socket, and what you send shows at once and can be sent again if it fails. Agents' cards work: their buttons act from the phone, asking first or for an amount when the card does. Long-press a message to react, reply in a thread, copy it, or edit or delete your own; threads open with the message they are under; a conversation can be starred, muted or left; New message messages people and agents or makes a channel, and Browse joins channels. While the app is in front it keeps the person's feed open as a tab does: unread counts move on the list and the Chat tab, notifications show as a banner unless that conversation is open, and DMs show who is online. The bar is the site's phone bar: Home, Notifications and Agents say they are coming and open the site, and Customize and the account move under More. | 31 | "expo-device": "~57.0.2", |
| 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. | 32 | "expo-font": "~57.0.4", |
| Chat is the phone app's first part, in full and live, with notifications on the phone. Conversations draw messages as the site does, from the same Markdown parser, run one author's messages together and mark the days; new messages, edits, deletions, reactions and typing arrive over the conversation's socket, and what you send shows at once and can be sent again if it fails. Agents' cards work: their buttons act from the phone, asking first or for an amount when the card does. Long-press a message to react, reply in a thread, copy it, or edit or delete your own; threads open with the message they are under; a conversation can be starred, muted or left; New message messages people and agents or makes a channel, and Browse joins channels. While the app is in front it keeps the person's feed open as a tab does: unread counts move on the list and the Chat tab, notifications show as a banner unless that conversation is open, and DMs show who is online. The bar is the site's phone bar: Home, Notifications and Agents say they are coming and open the site, and Customize and the account move under More. | 33 | "expo-haptics": "~57.0.3", |
| 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. | 34 | "expo-image": "~57.0.5", |
| 35 | "expo-linking": "~57.0.12", | |
| Chat is the phone app's first part, in full and live, with notifications on the phone. Conversations draw messages as the site does, from the same Markdown parser, run one author's messages together and mark the days; new messages, edits, deletions, reactions and typing arrive over the conversation's socket, and what you send shows at once and can be sent again if it fails. Agents' cards work: their buttons act from the phone, asking first or for an amount when the card does. Long-press a message to react, reply in a thread, copy it, or edit or delete your own; threads open with the message they are under; a conversation can be starred, muted or left; New message messages people and agents or makes a channel, and Browse joins channels. While the app is in front it keeps the person's feed open as a tab does: unread counts move on the list and the Chat tab, notifications show as a banner unless that conversation is open, and DMs show who is online. The bar is the site's phone bar: Home, Notifications and Agents say they are coming and open the site, and Customize and the account move under More. | 36 | "expo-notifications": "~57.0.22", |
| 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. | 37 | "expo-router": "~57.0.25", |
| 38 | "expo-secure-store": "~57.0.4", | |
| 39 | "expo-splash-screen": "~57.0.9", | |
| 40 | "expo-status-bar": "~57.0.1", | |
| 41 | "expo-system-ui": "~57.0.4", | |
| 42 | "expo-web-browser": "~57.0.3", | |
| 43 | "lucide-react-native": "^1.55.0", | |
| 44 | "react": "19.2.3", | |
| 45 | "react-native": "0.86.3", | |
| 46 | "react-native-gesture-handler": "~2.32.0", | |
| 47 | "react-native-reanimated": "4.5.1", | |
| 48 | "react-native-safe-area-context": "~5.7.0", | |
| 49 | "react-native-screens": "~4.26.0", | |
| 50 | "react-native-svg": "15.15.4", | |
| 51 | "react-native-worklets": "0.10.1" | |
| 52 | }, | |
| 53 | "devDependencies": { | |
| Chat is the phone app's first part, in full and live, with notifications on the phone. Conversations draw messages as the site does, from the same Markdown parser, run one author's messages together and mark the days; new messages, edits, deletions, reactions and typing arrive over the conversation's socket, and what you send shows at once and can be sent again if it fails. Agents' cards work: their buttons act from the phone, asking first or for an amount when the card does. Long-press a message to react, reply in a thread, copy it, or edit or delete your own; threads open with the message they are under; a conversation can be starred, muted or left; New message messages people and agents or makes a channel, and Browse joins channels. While the app is in front it keeps the person's feed open as a tab does: unread counts move on the list and the Chat tab, notifications show as a banner unless that conversation is open, and DMs show who is online. The bar is the site's phone bar: Home, Notifications and Agents say they are coming and open the site, and Customize and the account move under More. | 54 | "@types/node": "^22.20.5", |
| 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. | 55 | "@types/react": "~19.2.2", |
| 56 | "sharp": "^0.35.5", | |
| 57 | "typescript": "~6.0.3" | |
| 58 | } | |
| 59 | } |