clawdex-mobile 2.0.0 → 3.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (71) hide show
  1. package/.github/workflows/pages.yml +41 -0
  2. package/AGENTS.md +263 -110
  3. package/README.md +11 -0
  4. package/apps/mobile/.env.example +2 -2
  5. package/apps/mobile/App.tsx +175 -14
  6. package/apps/mobile/app.json +27 -9
  7. package/apps/mobile/eas.json +14 -4
  8. package/apps/mobile/package.json +13 -13
  9. package/apps/mobile/src/api/__tests__/chatMapping.test.ts +219 -0
  10. package/apps/mobile/src/api/__tests__/client.test.ts +579 -6
  11. package/apps/mobile/src/api/__tests__/ws.test.ts +27 -0
  12. package/apps/mobile/src/api/account.ts +47 -0
  13. package/apps/mobile/src/api/chatMapping.ts +435 -18
  14. package/apps/mobile/src/api/client.ts +296 -36
  15. package/apps/mobile/src/api/rateLimits.ts +143 -0
  16. package/apps/mobile/src/api/types.ts +106 -0
  17. package/apps/mobile/src/api/ws.ts +10 -1
  18. package/apps/mobile/src/components/ChatHeader.tsx +12 -12
  19. package/apps/mobile/src/components/ChatInput.tsx +154 -88
  20. package/apps/mobile/src/components/ChatMessage.tsx +548 -93
  21. package/apps/mobile/src/components/ComposerUsageLimits.tsx +167 -0
  22. package/apps/mobile/src/components/SelectionSheet.tsx +466 -0
  23. package/apps/mobile/src/components/ToolBlock.tsx +17 -15
  24. package/apps/mobile/src/components/VoiceRecordingWaveform.tsx +181 -0
  25. package/apps/mobile/src/components/WorkspacePickerModal.tsx +572 -0
  26. package/apps/mobile/src/components/__tests__/chat-input-layout.test.ts +35 -0
  27. package/apps/mobile/src/components/__tests__/chatImageSource.test.ts +44 -0
  28. package/apps/mobile/src/components/__tests__/composerUsageLimits.test.ts +138 -0
  29. package/apps/mobile/src/components/__tests__/voiceWaveform.test.ts +31 -0
  30. package/apps/mobile/src/components/chat-input-layout.ts +59 -0
  31. package/apps/mobile/src/components/chatImageSource.ts +86 -0
  32. package/apps/mobile/src/components/usageLimitBadges.ts +109 -0
  33. package/apps/mobile/src/components/voiceWaveform.ts +46 -0
  34. package/apps/mobile/src/config.ts +9 -2
  35. package/apps/mobile/src/hooks/useVoiceRecorder.ts +8 -1
  36. package/apps/mobile/src/navigation/DrawerContent.tsx +607 -457
  37. package/apps/mobile/src/navigation/__tests__/chatThreadTree.test.ts +89 -0
  38. package/apps/mobile/src/navigation/__tests__/drawerChats.test.ts +65 -0
  39. package/apps/mobile/src/navigation/chatThreadTree.ts +191 -0
  40. package/apps/mobile/src/navigation/drawerChats.ts +9 -0
  41. package/apps/mobile/src/screens/GitScreen.tsx +2 -0
  42. package/apps/mobile/src/screens/MainScreen.tsx +4244 -1237
  43. package/apps/mobile/src/screens/OnboardingScreen.tsx +2 -0
  44. package/apps/mobile/src/screens/SettingsScreen.tsx +256 -226
  45. package/apps/mobile/src/screens/TerminalScreen.tsx +2 -5
  46. package/apps/mobile/src/screens/__tests__/agentThreadDisplay.test.ts +80 -0
  47. package/apps/mobile/src/screens/__tests__/agentThreads.test.ts +170 -0
  48. package/apps/mobile/src/screens/__tests__/planCardState.test.ts +88 -0
  49. package/apps/mobile/src/screens/__tests__/subAgentTranscript.test.ts +102 -0
  50. package/apps/mobile/src/screens/__tests__/transcriptMessages.test.ts +97 -0
  51. package/apps/mobile/src/screens/agentThreadDisplay.ts +261 -0
  52. package/apps/mobile/src/screens/agentThreads.ts +167 -0
  53. package/apps/mobile/src/screens/planCardState.ts +40 -0
  54. package/apps/mobile/src/screens/subAgentTranscript.ts +149 -0
  55. package/apps/mobile/src/screens/transcriptMessages.ts +102 -0
  56. package/apps/mobile/src/theme.ts +6 -12
  57. package/docs/codex-app-server-cli-gap-tracker.md +14 -5
  58. package/docs/privacy-policy.md +54 -0
  59. package/docs/setup-and-operations.md +4 -3
  60. package/docs/terms-of-service.md +33 -0
  61. package/package.json +3 -3
  62. package/services/mac-bridge/package.json +6 -6
  63. package/services/rust-bridge/Cargo.lock +58 -363
  64. package/services/rust-bridge/Cargo.toml +2 -2
  65. package/services/rust-bridge/package.json +1 -1
  66. package/services/rust-bridge/src/main.rs +507 -9
  67. package/site/index.html +54 -0
  68. package/site/privacy/index.html +80 -0
  69. package/site/styles.css +135 -0
  70. package/site/support/index.html +51 -0
  71. package/site/terms/index.html +68 -0
@@ -1,4 +1,4 @@
1
- import { Platform, StyleSheet } from 'react-native';
1
+ import { Platform } from 'react-native';
2
2
 
3
3
  export const colors = {
4
4
  // Backgrounds
@@ -68,17 +68,11 @@ export const radius = {
68
68
  full: 999,
69
69
  };
70
70
 
71
- export const shadow = StyleSheet.create({
72
- sm: Platform.select({
73
- ios: {
74
- shadowColor: '#000',
75
- shadowOffset: { width: 0, height: 2 },
76
- shadowOpacity: 0.3,
77
- shadowRadius: 6,
78
- },
79
- default: { elevation: 3 },
80
- }) as object,
81
- });
71
+ export const shadow = {
72
+ sm: {
73
+ boxShadow: '0px 2px 6px rgba(0, 0, 0, 0.3)',
74
+ },
75
+ } as const;
82
76
 
83
77
  export const typography = {
84
78
  largeTitle: {
@@ -1,6 +1,6 @@
1
1
  # Codex App-Server + CLI Gap Tracker
2
2
 
3
- Last updated: February 24, 2026
3
+ Last updated: March 20, 2026
4
4
 
5
5
  ## Scope
6
6
  This tracker compares `clawdex-mobile` against current Codex app-server + CLI capabilities and records what still needs to be added.
@@ -49,12 +49,21 @@ Status: In progress (first implementation pass completed)
49
49
  ## Remaining Gaps (Beyond Gap 1)
50
50
 
51
51
  ### Gap 2: Slash Command Coverage in Mobile
52
- - Many Codex CLI slash commands are not exposed as first-class actions in mobile UX.
53
- - Mobile currently has partial command shortcuts and multiple unsupported command branches.
52
+ - Status: In progress
53
+ - Mobile now supports `/agent` thread switching, sub-agent transcript cards, and nested sub-agent rows in the drawer so spawned workers are visible in the main conversation model instead of being hidden behind generic tool-call traces.
54
+ - Mobile still does not expose the full Codex desktop slash-command surface as dedicated UI actions.
55
+ - Agent management remains lightweight:
56
+ - no dedicated create/configure sub-agent surface beyond `/agent`
57
+ - no richer per-agent live status/dashboard view
54
58
 
55
59
  ### Gap 3: Account/Auth UX
56
- - No dedicated mobile flow for login state, logout, account details, or rate limits.
57
- - Auth refresh is still operationally env-driven in bridge, not user-driven in app.
60
+ - Status: In progress
61
+ - Mobile Settings now exposes read-only account state via `account/read`, including ChatGPT email + plan type when available.
62
+ - Remaining:
63
+ - no dedicated standalone account screen outside Settings
64
+ - login/logout is not user-driven in mobile UI yet
65
+ - auth refresh is still operationally env-driven in bridge, not user-driven in app
66
+ - no API-key entry flow in mobile UI
58
67
 
59
68
  ### Gap 4: MCP + Tooling UX
60
69
  - No end-to-end UI for MCP server status, reload, OAuth login, or remote skills list/export.
@@ -0,0 +1,54 @@
1
+ # Privacy Policy
2
+
3
+ Last updated: March 6, 2026
4
+
5
+ ## Overview
6
+
7
+ Clawdex Mobile is a companion app for connecting to a bridge service that you run on your own machine. The app is designed for trusted private networking, such as LAN, VPN, or Tailscale. It is not a public multi-tenant shell service.
8
+
9
+ ## Information Processed
10
+
11
+ Clawdex Mobile can process:
12
+
13
+ - Chat prompts and assistant responses
14
+ - Bridge connection details you enter in the app
15
+ - Terminal command text and command output returned by your bridge
16
+ - Git repository status, diffs, commit messages, and related metadata
17
+ - File or image attachments you choose to send
18
+ - Voice input audio used for speech-to-text features
19
+
20
+ ## How Information Is Used
21
+
22
+ The app uses this information to:
23
+
24
+ - connect your phone to your self-hosted bridge
25
+ - display and continue assistant threads
26
+ - execute approved terminal and Git workflows on infrastructure you control
27
+ - upload user-selected files and images to your own workflow
28
+ - support optional voice-to-text input
29
+
30
+ ## Storage and Retention
31
+
32
+ Clawdex Mobile does not define a separate cloud retention layer for your project data. Data is generally stored by services and infrastructure you control, including your local bridge, repository, logs, caches, and any model providers or integrations that you configure.
33
+
34
+ ## Sharing
35
+
36
+ Clawdex Mobile does not include advertising SDKs. Data may be transmitted to third-party model or infrastructure providers only when you configure and use those services as part of your own setup.
37
+
38
+ ## Security
39
+
40
+ Security depends on how you configure your bridge and network. The app is intended for trusted-network use. You are responsible for protecting bridge tokens, provider credentials, repository access, and device access.
41
+
42
+ ## Your Responsibility
43
+
44
+ You are responsible for:
45
+
46
+ - operating the bridge only on systems you own or are authorized to control
47
+ - securing your network path and credentials
48
+ - reviewing commands, approvals, and repository actions before execution
49
+
50
+ ## Contact
51
+
52
+ For support, use the project support channel:
53
+
54
+ https://github.com/Mohit-Patil/clawdex-mobile/issues
@@ -140,9 +140,10 @@ Expected response contains `"status":"ok"`.
140
140
  ### Choosing Start Directory
141
141
 
142
142
  1. Open sidebar
143
- 2. Under `Start Directory`, pick:
144
- - `Bridge default workspace`, or
145
- - a discovered workspace path from existing chats
143
+ 2. Under `Start Directory`, pick either:
144
+ - `Bridge default workspace`
145
+ - a discovered workspace path from existing Codex chats
146
+ - any folder on the bridge host via the built-in folder browser or manual path entry
146
147
 
147
148
  Behavior:
148
149
 
@@ -0,0 +1,33 @@
1
+ # Terms of Service
2
+
3
+ Last updated: March 6, 2026
4
+
5
+ ## Overview
6
+
7
+ Clawdex Mobile is a companion client for interacting with a bridge service and repository environment that you control. By using the app, you agree to use it only with systems, repositories, and infrastructure that you own or are explicitly authorized to access.
8
+
9
+ ## Acceptable Use
10
+
11
+ You may not use Clawdex Mobile to access, control, or modify machines, repositories, or services without authorization. You are responsible for all actions initiated through the app, including approvals, terminal commands, Git actions, and file transfers.
12
+
13
+ ## Credentials and Access
14
+
15
+ You must keep bridge tokens, provider credentials, repository credentials, and device access secure. If you believe credentials have been exposed, you should rotate them immediately and stop using the affected bridge until it is secured.
16
+
17
+ ## Operational Risk
18
+
19
+ Clawdex Mobile can initiate workflows that change files, repositories, and machine state on your host environment. You are responsible for reviewing and approving actions before execution and for maintaining backups or recovery procedures appropriate to your environment.
20
+
21
+ ## Availability
22
+
23
+ The app depends on your bridge, network, repositories, model providers, and related services. Functionality may be unavailable if those dependencies are unavailable or misconfigured.
24
+
25
+ ## No Warranty
26
+
27
+ The software is provided on an as-is basis. You assume responsibility for how it is configured and used in your environment.
28
+
29
+ ## Contact
30
+
31
+ For support, use the project support channel:
32
+
33
+ https://github.com/Mohit-Patil/clawdex-mobile/issues
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "clawdex-mobile",
3
- "version": "2.0.0",
3
+ "version": "3.0.0",
4
4
  "homepage": "https://github.com/Mohit-Patil/clawdex-mobile#readme",
5
5
  "repository": {
6
6
  "type": "git",
@@ -36,9 +36,9 @@
36
36
  },
37
37
  "dependencies": {
38
38
  "@types/react": "~19.2.10",
39
+ "expo": "^55.0.8",
39
40
  "react": "19.2.0",
40
41
  "react-dom": "19.2.0",
41
- "react-native": "0.83.2",
42
- "expo": "^55.0.2"
42
+ "react-native": "0.83.2"
43
43
  }
44
44
  }
@@ -14,17 +14,17 @@
14
14
  "dependencies": {
15
15
  "@fastify/cors": "^10.0.2",
16
16
  "@fastify/websocket": "^11.0.2",
17
- "fastify": "^5.2.0",
17
+ "fastify": "^5.8.2",
18
18
  "zod": "^3.24.1"
19
19
  },
20
20
  "devDependencies": {
21
- "@types/node": "^22.10.1",
22
- "@typescript-eslint/eslint-plugin": "^8.18.1",
23
- "@typescript-eslint/parser": "^8.18.1",
24
- "eslint": "^10.0.0",
21
+ "@types/node": "^22.19.15",
22
+ "@typescript-eslint/eslint-plugin": "^8.57.1",
23
+ "@typescript-eslint/parser": "^8.57.1",
24
+ "eslint": "^10.0.3",
25
25
  "globals": "^16.5.0",
26
26
  "tsx": "^4.19.2",
27
27
  "typescript": "^5.7.2",
28
- "vitest": "^4.0.18"
28
+ "vitest": "^4.1.0"
29
29
  }
30
30
  }