-
Notifications
You must be signed in to change notification settings - Fork 10
feat(mobile): add native Android UI and shared chat controls (CODE-588) #521
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Changes from all commits
2ab7121
0f8077d
e548cc9
0171283
69572b1
15b4576
b08fcd6
a42c76e
0e6c5bc
4b3b9a1
b4aa103
ca77830
9685fdb
6188a92
b8da545
1601480
e1e0eb2
c55ec2b
ae41027
5c3426e
ae659ec
12ee982
26257bb
071511c
154a7dc
74f095a
4a1f105
49fe774
83fea76
922b803
cb6a02c
5a84ac2
6ef09f3
5a4ff56
fc1c760
39ae808
33bd138
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,9 @@ | ||
| <vector xmlns:android="http://schemas.android.com/apk/res/android" | ||
| android:width="24dp" | ||
| android:height="24dp" | ||
| android:viewportWidth="24" | ||
| android:viewportHeight="24"> | ||
| <path | ||
| android:fillColor="#FFFFFFFF" | ||
| android:pathData="M19,13h-6v6h-2v-6H5v-2h6V5h2v6h6v2z" /> | ||
| </vector> |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,10 @@ | ||
| <vector xmlns:android="http://schemas.android.com/apk/res/android" | ||
| android:width="24dp" | ||
| android:height="24dp" | ||
| android:viewportWidth="24" | ||
| android:viewportHeight="24"> | ||
| <path | ||
| android:fillColor="#FFFFFFFF" | ||
| android:fillType="evenOdd" | ||
| android:pathData="M20.998,10.949H24v3.102h-3v3.028h-1.487V20H18v-2.921h-1.487V20H15v-2.921H9V20H7.488v-2.921H6V20H4.487v-2.921H3V14.05H0V10.95h3V5h17.998v5.949zM6,10.949h1.488V8.102H6v2.847zm10.51,0H18V8.102h-1.49v2.847z" /> | ||
|
Contributor
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. This path is a pixel-art robot face, but the Claude Code mark everywhere else in the repo is the Anthropic "A" — What makes this look like a substitution slip rather than a deliberate choice: |
||
| </vector> | ||
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,10 @@ | ||
| <vector xmlns:android="http://schemas.android.com/apk/res/android" | ||
| android:width="24dp" | ||
| android:height="24dp" | ||
| android:viewportWidth="24" | ||
| android:viewportHeight="24"> | ||
| <path | ||
| android:fillColor="#FFFFFFFF" | ||
| android:fillType="evenOdd" | ||
| android:pathData="M8.086,0.457a6.105,6.105 0,0 1,3.046 -0.415c1.333,0.153 2.521,0.72 3.564,1.7a0.117,0.117 0,0 0,0.107 0.029c1.408,-0.346 2.762,-0.224 4.061,0.366l0.063,0.03 0.154,0.076c1.357,0.703 2.33,1.77 2.918,3.198c0.278,0.679 0.418,1.388 0.421,2.126a5.655,5.655 0,0 1,-0.18 1.631a0.167,0.167 0,0 0,0.04 0.155a5.982,5.982 0,0 1,1.578 2.891c0.385,1.901 -0.01,3.615 -1.183,5.14l-0.182,0.22a6.063,6.063 0,0 1,-2.934 1.851a0.162,0.162 0,0 0,-0.108 0.102c-0.255,0.736 -0.511,1.364 -0.987,1.992c-1.199,1.582 -2.962,2.462 -4.948,2.451c-1.583,-0.008 -2.986,-0.587 -4.21,-1.736a0.145,0.145 0,0 0,-0.14 -0.032c-0.518,0.167 -1.04,0.191 -1.604,0.185a5.924,5.924 0,0 1,-2.595 -0.622a6.058,6.058 0,0 1,-2.146 -1.781c-0.203,-0.269 -0.404,-0.522 -0.551,-0.821a7.74,7.74 0,0 1,-0.495 -1.283a6.11,6.11 0,0 1,-0.017 -3.064a0.166,0.166 0,0 0,0.008 -0.074a0.115,0.115 0,0 0,-0.037 -0.064a5.958,5.958 0,0 1,-1.38 -2.202a5.196,5.196 0,0 1,-0.333 -1.589a6.915,6.915 0,0 1,0.188 -2.132c0.45,-1.484 1.309,-2.648 2.577,-3.493c0.282,-0.188 0.55,-0.334 0.802,-0.438c0.286,-0.12 0.573,-0.22 0.861,-0.304a0.129,0.129 0,0 0,0.087 -0.087A6.016,6.016 0,0 1,5.635 2.31C6.315,1.464 7.132,0.846 8.086,0.457zM7.282,8.307a0.848,0.848 0,0 0,-1.473 0.842l1.694,2.965 -1.688,2.848a0.849,0.849 0,0 0,1.46 0.864l1.94,-3.272a0.849,0.849 0,0 0,0.007 -0.854l-1.94,-3.393zM12.728,14.547a0.849,0.849 0,0 0,0 1.695h4.848a0.849,0.849 0,0 0,0 -1.696h-4.848z" /> | ||
| </vector> |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,10 @@ | ||
| <vector xmlns:android="http://schemas.android.com/apk/res/android" | ||
| android:width="24dp" | ||
| android:height="24dp" | ||
| android:viewportWidth="24" | ||
| android:viewportHeight="24"> | ||
| <path | ||
| android:fillColor="#FFFFFFFF" | ||
| android:fillType="evenOdd" | ||
| android:pathData="M16,6H8v12h8V6zm4,16H4V2h16v20z" /> | ||
| </vector> |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1 @@ | ||
| <vector xmlns:android="http://schemas.android.com/apk/res/android" android:width="24dp" android:height="24dp" android:viewportWidth="24" android:viewportHeight="24"><path android:fillColor="#FF000000" android:pathData="M4,12l1.41,1.41L11,7.83V20h2V7.83l5.59,5.58L20,12l-8,-8z" /></vector> |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,9 @@ | ||
| <vector xmlns:android="http://schemas.android.com/apk/res/android" | ||
| android:width="24dp" | ||
| android:height="24dp" | ||
| android:viewportWidth="24" | ||
| android:viewportHeight="24"> | ||
| <path | ||
| android:fillColor="#FFFFFFFF" | ||
| android:pathData="M9,16.17L4.83,12l-1.42,1.41L9,19 21,7l-1.41,-1.41z" /> | ||
| </vector> |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1 @@ | ||
| <vector xmlns:android="http://schemas.android.com/apk/res/android" android:width="24dp" android:height="24dp" android:viewportWidth="24" android:viewportHeight="24"><path android:fillColor="#FF000000" android:pathData="M15.41,7.41L14,6l-6,6 6,6 1.41,-1.41L10.83,12z" /></vector> |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1 @@ | ||
| <vector xmlns:android="http://schemas.android.com/apk/res/android" android:width="24dp" android:height="24dp" android:viewportWidth="24" android:viewportHeight="24"><path android:fillColor="#FF000000" android:pathData="M10,6L8.59,7.41 13.17,12l-4.58,4.59L10,18l6,-6z" /></vector> |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1 @@ | ||
| <vector xmlns:android="http://schemas.android.com/apk/res/android" android:width="24dp" android:height="24dp" android:viewportWidth="24" android:viewportHeight="24"><path android:fillColor="#FF000000" android:pathData="M19,6.41L17.59,5 12,10.59 6.41,5 5,6.41 10.59,12 5,17.59 6.41,19 12,13.41 17.59,19 19,17.59 13.41,12z" /></vector> |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,9 @@ | ||
| <vector xmlns:android="http://schemas.android.com/apk/res/android" | ||
| android:width="24dp" | ||
| android:height="24dp" | ||
| android:viewportWidth="24" | ||
| android:viewportHeight="24"> | ||
| <path | ||
| android:fillColor="#FFFFFFFF" | ||
| android:pathData="M12,8l-6,6 1.41,1.41L12,10.83l4.59,4.58L18,14l-6,-6z" /> | ||
| </vector> |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,9 @@ | ||
| <vector xmlns:android="http://schemas.android.com/apk/res/android" | ||
| android:width="24dp" | ||
| android:height="24dp" | ||
| android:viewportWidth="24" | ||
| android:viewportHeight="24"> | ||
| <path | ||
| android:fillColor="#FFFFFFFF" | ||
| android:pathData="M16.59,8.59L12,13.17 7.41,8.59 6,10l6,6 6,-6z" /> | ||
| </vector> |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,9 @@ | ||
| <vector xmlns:android="http://schemas.android.com/apk/res/android" | ||
| android:width="24dp" | ||
| android:height="24dp" | ||
| android:viewportWidth="24" | ||
| android:viewportHeight="24"> | ||
| <path | ||
| android:fillColor="#FFFFFFFF" | ||
| android:pathData="M12,8c1.1,0 2,-0.9 2,-2s-0.9,-2 -2,-2 -2,0.9 -2,2 0.9,2 2,2zM12,10c-1.1,0 -2,0.9 -2,2s0.9,2 2,2 2,-0.9 2,-2 -0.9,-2 -2,-2zM12,16c-1.1,0 -2,0.9 -2,2s0.9,2 2,2 2,-0.9 2,-2 -0.9,-2 -2,-2z" /> | ||
| </vector> |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,9 @@ | ||
| <vector xmlns:android="http://schemas.android.com/apk/res/android" | ||
| android:width="24dp" | ||
|
Contributor
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. This asset has no importers anywhere under |
||
| android:height="24dp" | ||
| android:viewportWidth="24" | ||
| android:viewportHeight="24"> | ||
| <path | ||
| android:fillColor="#FFFFFFFF" | ||
| android:pathData="M15.5,14h-0.79l-0.28,-0.27C15.41,12.59 16,11.11 16,9.5 16,5.91 13.09,3 9.5,3S3,5.91 3,9.5 5.91,16 9.5,16c1.61,0 3.09,-0.59 4.23,-1.57l0.27,0.28v0.79l5,4.99L20.49,19l-4.99,-5zM9.5,14C7.01,14 5,11.99 5,9.5S7.01,5 9.5,5 14,7.01 14,9.5 11.99,14 9.5,14z" /> | ||
| </vector> | ||
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1 @@ | ||
| <vector xmlns:android="http://schemas.android.com/apk/res/android" android:width="24dp" android:height="24dp" android:viewportWidth="24" android:viewportHeight="24"><path android:fillColor="#FF000000" android:pathData="M12,1L3,5v6c0,5.55 3.84,10.74 9,12 5.16,-1.26 9,-6.45 9,-12V5zM19,11c0,4.52 -2.98,8.69 -7,9.93C7.98,19.69 5,15.52 5,11V6.3l7,-3.11 7,3.11z" /></vector> |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1 @@ | ||
| <vector xmlns:android="http://schemas.android.com/apk/res/android" android:width="24dp" android:height="24dp" android:viewportWidth="24" android:viewportHeight="24"><path android:fillColor="#FF000000" android:pathData="M6,6h12v12H6z" /></vector> |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
|
|
@@ -17,7 +17,7 @@ | |
| }, | ||
| "dependencies": { | ||
| "@better-auth/expo": "1.7.0-rc.2", | ||
| "@expo/ui": "57.0.7", | ||
| "@expo/ui": "57.0.11", | ||
| "@gorhom/bottom-sheet": "^5.2.14", | ||
| "@linkcode/client-core": "workspace:*", | ||
| "@linkcode/common": "workspace:*", | ||
|
|
@@ -29,51 +29,52 @@ | |
| "@react-native-community/netinfo": "12.0.1", | ||
| "@sentry/react-native": "~7.11.0", | ||
| "better-auth": "1.7.0-rc.2", | ||
| "expo": "~57.0.4", | ||
| "expo": "~57.0.14", | ||
| "expo-apple-authentication": "~57.0.1", | ||
| "expo-audio": "~57.0.0", | ||
| "expo-background-task": "~57.0.2", | ||
| "expo-camera": "~57.0.1", | ||
| "expo-clipboard": "~57.0.0", | ||
| "expo-constants": "~57.0.3", | ||
| "expo-audio": "~57.0.3", | ||
| "expo-background-task": "~57.0.11", | ||
| "expo-camera": "~57.0.3", | ||
| "expo-clipboard": "~57.0.1", | ||
| "expo-constants": "~57.0.12", | ||
| "expo-crypto": "~57.0.1", | ||
| "expo-dev-client": "~57.0.5", | ||
| "expo-device": "~57.0.0", | ||
| "expo-document-picker": "~57.0.0", | ||
| "expo-file-system": "~57.0.0", | ||
| "expo-font": "~57.0.0", | ||
| "expo-haptics": "~57.0.0", | ||
| "expo-image-picker": "~57.0.2", | ||
| "expo-dev-client": "~57.0.13", | ||
| "expo-device": "~57.0.1", | ||
| "expo-document-picker": "~57.0.1", | ||
| "expo-file-system": "~57.0.4", | ||
| "expo-font": "~57.0.1", | ||
| "expo-haptics": "~57.0.1", | ||
| "expo-image-picker": "~57.0.11", | ||
| "expo-libghostty": "^0.8.1", | ||
| "expo-linking": "~57.0.2", | ||
| "expo-local-authentication": "~57.0.0", | ||
| "expo-linking": "~57.0.6", | ||
| "expo-local-authentication": "~57.0.2", | ||
| "expo-network": "~57.0.1", | ||
| "expo-notifications": "~57.0.3", | ||
| "expo-router": "~57.0.4", | ||
| "expo-secure-store": "~57.0.0", | ||
| "expo-sharing": "~57.0.3", | ||
| "expo-sqlite": "~57.0.0", | ||
| "expo-status-bar": "~57.0.0", | ||
| "expo-task-manager": "~57.0.2", | ||
| "expo-updates": "~57.0.6", | ||
| "expo-web-browser": "~57.0.0", | ||
| "expo-notifications": "~57.0.12", | ||
| "expo-router": "~57.0.14", | ||
| "expo-secure-store": "~57.0.1", | ||
| "expo-sharing": "~57.0.13", | ||
| "expo-sqlite": "~57.0.1", | ||
| "expo-status-bar": "~57.0.1", | ||
| "expo-symbols": "~57.0.2", | ||
|
Contributor
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Nothing under Also worth noting it cuts against the repo's own guidance: |
||
| "expo-task-manager": "~57.0.11", | ||
| "expo-updates": "~57.0.15", | ||
| "expo-web-browser": "~57.0.2", | ||
| "foxact": "^0.3.10", | ||
| "foxts": "^5.9.1", | ||
| "heroui-native": "1.0.6", | ||
| "lucide-react-native": "^1.25.0", | ||
| "posthog-react-native": "^4.60.0", | ||
| "react": "19.2.3", | ||
| "react-dom": "19.2.3", | ||
| "react-native": "0.86.0", | ||
| "react-native": "0.86.2", | ||
| "react-native-gesture-handler": "~2.32.0", | ||
| "react-native-keyboard-controller": "1.21.9", | ||
| "react-native-reanimated": "4.5.0", | ||
| "react-native-reanimated": "4.5.1", | ||
| "react-native-safe-area-context": "~5.7.0", | ||
| "react-native-screens": "4.25.2", | ||
| "react-native-screens": "4.26.2", | ||
| "react-native-svg": "15.15.4", | ||
| "react-native-web": "^0.21.2", | ||
| "react-native-webview": "13.16.1", | ||
| "react-native-worklets": "0.10.0", | ||
| "react-native-worklets": "0.10.1", | ||
| "tailwind-merge": "^3.6.0", | ||
| "tailwind-variants": "^3.3.0", | ||
| "uniwind": "1.10.0", | ||
|
|
||
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This sentence contradicts
form/list.android.tsx:7, added in the same PR: "LazyColumn maps each direct child to one lazy item, so keep children at section granularity."The implementation follows the docstring, not this line —
FormSection(form/section.android.tsx:23) wraps its children in aColumn, so on everyFormList-backed screen (settings, terminal appearance, threads, connect sections, account sections, terminals) the rows are grandchildren ofLazyColumn, never direct children. The code is internally consistent and, I think, correct; it's this rule that's misstated. As written, the next contributor who reads AGENTS.md alone will conclude the whole PR is already in violation and try to "fix" it by hoisting rows out of their sections, which would cost the section chrome and turn every row into its own lazy item.