clawdex-mobile 2.0.1 → 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 +1 -1
  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 +56 -47
  64. package/services/rust-bridge/Cargo.toml +1 -1
  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
@@ -0,0 +1,80 @@
1
+ <!DOCTYPE html>
2
+ <html lang="en">
3
+ <head>
4
+ <meta charset="utf-8" />
5
+ <meta name="viewport" content="width=device-width, initial-scale=1" />
6
+ <title>Clawdex Mobile Privacy Policy</title>
7
+ <meta
8
+ name="description"
9
+ content="Privacy policy for Clawdex Mobile."
10
+ />
11
+ <link rel="stylesheet" href="../styles.css" />
12
+ </head>
13
+ <body>
14
+ <main class="shell stack">
15
+ <section class="hero">
16
+ <p class="eyebrow">Privacy Policy</p>
17
+ <h1>Clawdex Mobile privacy policy.</h1>
18
+ <p>
19
+ Last updated: March 11, 2026
20
+ </p>
21
+ </section>
22
+ <section class="card">
23
+ <h2>Overview</h2>
24
+ <p>
25
+ Clawdex Mobile is a companion app for connecting to a bridge service that you run on your
26
+ own machine. The app is designed for trusted private networking, such as LAN, VPN, or
27
+ Tailscale. It is not a public multi-tenant shell service.
28
+ </p>
29
+ </section>
30
+ <section class="card">
31
+ <h2>Information processed</h2>
32
+ <p>
33
+ Clawdex Mobile can process chat prompts and assistant responses, bridge connection
34
+ details, terminal command text and output, Git repository status and metadata, file or
35
+ image attachments you choose to send, and optional voice input audio used for
36
+ speech-to-text features.
37
+ </p>
38
+ </section>
39
+ <section class="card">
40
+ <h2>How information is used</h2>
41
+ <p>
42
+ The app uses this information to connect your phone to your self-hosted bridge, display
43
+ and continue assistant threads, execute approved terminal and Git workflows on
44
+ infrastructure you control, upload user-selected files and images to your own workflow,
45
+ and support optional voice-to-text input.
46
+ </p>
47
+ </section>
48
+ <section class="card">
49
+ <h2>Storage and retention</h2>
50
+ <p>
51
+ Clawdex Mobile does not define a separate cloud retention layer for your project data.
52
+ Data is generally stored by services and infrastructure you control, including your local
53
+ bridge, repository, logs, caches, and any model providers or integrations that you
54
+ configure.
55
+ </p>
56
+ </section>
57
+ <section class="card">
58
+ <h2>Sharing and security</h2>
59
+ <p>
60
+ Clawdex Mobile does not include advertising SDKs. Data may be transmitted to third-party
61
+ model or infrastructure providers only when you configure and use those services as part
62
+ of your own setup. Security depends on how you configure your bridge and network.
63
+ </p>
64
+ </section>
65
+ <section class="card">
66
+ <h2>Your responsibility</h2>
67
+ <p>
68
+ You are responsible for operating the bridge only on systems you own or are authorized to
69
+ control, securing your network path and credentials, and reviewing commands, approvals,
70
+ and repository actions before execution.
71
+ </p>
72
+ </section>
73
+ <section class="card">
74
+ <h2>Contact</h2>
75
+ <p>Email: <a href="mailto:contact@arkaledge.com">contact@arkaledge.com</a></p>
76
+ <p>Support page: <a href="../support/">Clawdex Mobile support</a></p>
77
+ </section>
78
+ </main>
79
+ </body>
80
+ </html>
@@ -0,0 +1,135 @@
1
+ :root {
2
+ color-scheme: dark;
3
+ --bg: #07111a;
4
+ --bg-elevated: rgba(17, 28, 40, 0.88);
5
+ --border: rgba(255, 255, 255, 0.14);
6
+ --text: #f5f7fb;
7
+ --muted: #b6c2d3;
8
+ --accent: #6ad0ff;
9
+ --accent-strong: #9be5ff;
10
+ }
11
+
12
+ * {
13
+ box-sizing: border-box;
14
+ }
15
+
16
+ body {
17
+ margin: 0;
18
+ min-height: 100vh;
19
+ font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
20
+ background:
21
+ radial-gradient(circle at top, rgba(106, 208, 255, 0.12), transparent 36%),
22
+ linear-gradient(180deg, #0a1521 0%, var(--bg) 100%);
23
+ color: var(--text);
24
+ }
25
+
26
+ a {
27
+ color: var(--accent);
28
+ }
29
+
30
+ .shell {
31
+ width: min(920px, calc(100% - 32px));
32
+ margin: 0 auto;
33
+ padding: 40px 0 56px;
34
+ }
35
+
36
+ .hero {
37
+ margin-bottom: 28px;
38
+ padding: 28px;
39
+ border: 1px solid var(--border);
40
+ border-radius: 24px;
41
+ background: var(--bg-elevated);
42
+ backdrop-filter: blur(18px);
43
+ }
44
+
45
+ .eyebrow {
46
+ margin: 0 0 12px;
47
+ color: var(--accent-strong);
48
+ font-size: 0.82rem;
49
+ font-weight: 700;
50
+ letter-spacing: 0.12em;
51
+ text-transform: uppercase;
52
+ }
53
+
54
+ h1,
55
+ h2 {
56
+ margin: 0 0 14px;
57
+ line-height: 1.1;
58
+ }
59
+
60
+ h1 {
61
+ font-size: clamp(2rem, 4vw, 3.4rem);
62
+ }
63
+
64
+ h2 {
65
+ font-size: 1.3rem;
66
+ }
67
+
68
+ p,
69
+ li {
70
+ color: var(--muted);
71
+ line-height: 1.7;
72
+ }
73
+
74
+ .grid {
75
+ display: grid;
76
+ gap: 18px;
77
+ grid-template-columns: repeat(auto-fit, minmax(240px, 1fr));
78
+ }
79
+
80
+ .card {
81
+ padding: 22px;
82
+ border: 1px solid var(--border);
83
+ border-radius: 20px;
84
+ background: rgba(13, 23, 34, 0.86);
85
+ }
86
+
87
+ .nav {
88
+ display: flex;
89
+ flex-wrap: wrap;
90
+ gap: 12px;
91
+ margin-top: 18px;
92
+ }
93
+
94
+ .nav a,
95
+ .cta {
96
+ display: inline-flex;
97
+ align-items: center;
98
+ justify-content: center;
99
+ padding: 12px 16px;
100
+ border-radius: 999px;
101
+ border: 1px solid rgba(106, 208, 255, 0.28);
102
+ background: rgba(106, 208, 255, 0.12);
103
+ color: var(--text);
104
+ font-weight: 600;
105
+ text-decoration: none;
106
+ }
107
+
108
+ .cta.secondary {
109
+ border-color: var(--border);
110
+ background: transparent;
111
+ }
112
+
113
+ .stack {
114
+ display: grid;
115
+ gap: 18px;
116
+ }
117
+
118
+ .meta {
119
+ margin-top: 28px;
120
+ font-size: 0.95rem;
121
+ color: var(--muted);
122
+ }
123
+
124
+ @media (max-width: 640px) {
125
+ .shell {
126
+ width: min(100% - 24px, 920px);
127
+ padding-top: 24px;
128
+ }
129
+
130
+ .hero,
131
+ .card {
132
+ padding: 20px;
133
+ border-radius: 18px;
134
+ }
135
+ }
@@ -0,0 +1,51 @@
1
+ <!DOCTYPE html>
2
+ <html lang="en">
3
+ <head>
4
+ <meta charset="utf-8" />
5
+ <meta name="viewport" content="width=device-width, initial-scale=1" />
6
+ <title>Clawdex Mobile Support</title>
7
+ <meta
8
+ name="description"
9
+ content="Support information for Clawdex Mobile."
10
+ />
11
+ <link rel="stylesheet" href="../styles.css" />
12
+ </head>
13
+ <body>
14
+ <main class="shell stack">
15
+ <section class="hero">
16
+ <p class="eyebrow">Support</p>
17
+ <h1>Need help with Clawdex Mobile?</h1>
18
+ <p>
19
+ Clawdex Mobile connects to a bridge service that you run on your own machine. If you need
20
+ help with setup, access, or app behavior, use the support contact below.
21
+ </p>
22
+ <nav class="nav" aria-label="Support actions">
23
+ <a class="cta" href="mailto:contact@arkaledge.com">Email support</a>
24
+ <a class="cta secondary" href="https://github.com/Mohit-Patil/clawdex-mobile/issues"
25
+ >Report a technical issue</a
26
+ >
27
+ </nav>
28
+ </section>
29
+ <section class="grid">
30
+ <article class="card">
31
+ <h2>Primary support contact</h2>
32
+ <p><a href="mailto:contact@arkaledge.com">contact@arkaledge.com</a></p>
33
+ <p>Use email for setup questions, access issues, billing or account questions, and App Store support requests.</p>
34
+ </article>
35
+ <article class="card">
36
+ <h2>What to include</h2>
37
+ <p>
38
+ Include your app version, device model, iOS version, the bridge URL type you are using
39
+ (LAN, VPN, or Tailscale), and the exact step that failed.
40
+ </p>
41
+ </article>
42
+ <article class="card">
43
+ <h2>Related documents</h2>
44
+ <p><a href="../privacy/">Privacy policy</a></p>
45
+ <p><a href="../terms/">Terms of service</a></p>
46
+ </article>
47
+ </section>
48
+ <p class="meta">Last updated: March 11, 2026</p>
49
+ </main>
50
+ </body>
51
+ </html>
@@ -0,0 +1,68 @@
1
+ <!DOCTYPE html>
2
+ <html lang="en">
3
+ <head>
4
+ <meta charset="utf-8" />
5
+ <meta name="viewport" content="width=device-width, initial-scale=1" />
6
+ <title>Clawdex Mobile Terms of Service</title>
7
+ <meta
8
+ name="description"
9
+ content="Terms of service for Clawdex Mobile."
10
+ />
11
+ <link rel="stylesheet" href="../styles.css" />
12
+ </head>
13
+ <body>
14
+ <main class="shell stack">
15
+ <section class="hero">
16
+ <p class="eyebrow">Terms of Service</p>
17
+ <h1>Clawdex Mobile terms of service.</h1>
18
+ <p>
19
+ Last updated: March 11, 2026
20
+ </p>
21
+ </section>
22
+ <section class="card">
23
+ <h2>Overview</h2>
24
+ <p>
25
+ Clawdex Mobile is a companion client for interacting with a bridge service and repository
26
+ environment that you control. By using the app, you agree to use it only with systems,
27
+ repositories, and infrastructure that you own or are explicitly authorized to access.
28
+ </p>
29
+ </section>
30
+ <section class="card">
31
+ <h2>Acceptable use</h2>
32
+ <p>
33
+ You may not use Clawdex Mobile to access, control, or modify machines, repositories, or
34
+ services without authorization. You are responsible for all actions initiated through the
35
+ app, including approvals, terminal commands, Git actions, and file transfers.
36
+ </p>
37
+ </section>
38
+ <section class="card">
39
+ <h2>Credentials and access</h2>
40
+ <p>
41
+ You must keep bridge tokens, provider credentials, repository credentials, and device
42
+ access secure. If you believe credentials have been exposed, you should rotate them
43
+ immediately and stop using the affected bridge until it is secured.
44
+ </p>
45
+ </section>
46
+ <section class="card">
47
+ <h2>Operational risk and availability</h2>
48
+ <p>
49
+ Clawdex Mobile can initiate workflows that change files, repositories, and machine state
50
+ on your host environment. Functionality may be unavailable if your bridge, network,
51
+ repositories, model providers, or related services are unavailable or misconfigured.
52
+ </p>
53
+ </section>
54
+ <section class="card">
55
+ <h2>No warranty</h2>
56
+ <p>
57
+ The software is provided on an as-is basis. You assume responsibility for how it is
58
+ configured and used in your environment.
59
+ </p>
60
+ </section>
61
+ <section class="card">
62
+ <h2>Contact</h2>
63
+ <p>Email: <a href="mailto:contact@arkaledge.com">contact@arkaledge.com</a></p>
64
+ <p>Support page: <a href="../support/">Clawdex Mobile support</a></p>
65
+ </section>
66
+ </main>
67
+ </body>
68
+ </html>