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.
- package/.github/workflows/pages.yml +41 -0
- package/AGENTS.md +263 -110
- package/README.md +1 -1
- package/apps/mobile/.env.example +2 -2
- package/apps/mobile/App.tsx +175 -14
- package/apps/mobile/app.json +27 -9
- package/apps/mobile/eas.json +14 -4
- package/apps/mobile/package.json +13 -13
- package/apps/mobile/src/api/__tests__/chatMapping.test.ts +219 -0
- package/apps/mobile/src/api/__tests__/client.test.ts +579 -6
- package/apps/mobile/src/api/__tests__/ws.test.ts +27 -0
- package/apps/mobile/src/api/account.ts +47 -0
- package/apps/mobile/src/api/chatMapping.ts +435 -18
- package/apps/mobile/src/api/client.ts +296 -36
- package/apps/mobile/src/api/rateLimits.ts +143 -0
- package/apps/mobile/src/api/types.ts +106 -0
- package/apps/mobile/src/api/ws.ts +10 -1
- package/apps/mobile/src/components/ChatHeader.tsx +12 -12
- package/apps/mobile/src/components/ChatInput.tsx +154 -88
- package/apps/mobile/src/components/ChatMessage.tsx +548 -93
- package/apps/mobile/src/components/ComposerUsageLimits.tsx +167 -0
- package/apps/mobile/src/components/SelectionSheet.tsx +466 -0
- package/apps/mobile/src/components/ToolBlock.tsx +17 -15
- package/apps/mobile/src/components/VoiceRecordingWaveform.tsx +181 -0
- package/apps/mobile/src/components/WorkspacePickerModal.tsx +572 -0
- package/apps/mobile/src/components/__tests__/chat-input-layout.test.ts +35 -0
- package/apps/mobile/src/components/__tests__/chatImageSource.test.ts +44 -0
- package/apps/mobile/src/components/__tests__/composerUsageLimits.test.ts +138 -0
- package/apps/mobile/src/components/__tests__/voiceWaveform.test.ts +31 -0
- package/apps/mobile/src/components/chat-input-layout.ts +59 -0
- package/apps/mobile/src/components/chatImageSource.ts +86 -0
- package/apps/mobile/src/components/usageLimitBadges.ts +109 -0
- package/apps/mobile/src/components/voiceWaveform.ts +46 -0
- package/apps/mobile/src/config.ts +9 -2
- package/apps/mobile/src/hooks/useVoiceRecorder.ts +8 -1
- package/apps/mobile/src/navigation/DrawerContent.tsx +607 -457
- package/apps/mobile/src/navigation/__tests__/chatThreadTree.test.ts +89 -0
- package/apps/mobile/src/navigation/__tests__/drawerChats.test.ts +65 -0
- package/apps/mobile/src/navigation/chatThreadTree.ts +191 -0
- package/apps/mobile/src/navigation/drawerChats.ts +9 -0
- package/apps/mobile/src/screens/GitScreen.tsx +2 -0
- package/apps/mobile/src/screens/MainScreen.tsx +4244 -1237
- package/apps/mobile/src/screens/OnboardingScreen.tsx +2 -0
- package/apps/mobile/src/screens/SettingsScreen.tsx +256 -226
- package/apps/mobile/src/screens/TerminalScreen.tsx +2 -5
- package/apps/mobile/src/screens/__tests__/agentThreadDisplay.test.ts +80 -0
- package/apps/mobile/src/screens/__tests__/agentThreads.test.ts +170 -0
- package/apps/mobile/src/screens/__tests__/planCardState.test.ts +88 -0
- package/apps/mobile/src/screens/__tests__/subAgentTranscript.test.ts +102 -0
- package/apps/mobile/src/screens/__tests__/transcriptMessages.test.ts +97 -0
- package/apps/mobile/src/screens/agentThreadDisplay.ts +261 -0
- package/apps/mobile/src/screens/agentThreads.ts +167 -0
- package/apps/mobile/src/screens/planCardState.ts +40 -0
- package/apps/mobile/src/screens/subAgentTranscript.ts +149 -0
- package/apps/mobile/src/screens/transcriptMessages.ts +102 -0
- package/apps/mobile/src/theme.ts +6 -12
- package/docs/codex-app-server-cli-gap-tracker.md +14 -5
- package/docs/privacy-policy.md +54 -0
- package/docs/setup-and-operations.md +4 -3
- package/docs/terms-of-service.md +33 -0
- package/package.json +3 -3
- package/services/mac-bridge/package.json +6 -6
- package/services/rust-bridge/Cargo.lock +56 -47
- package/services/rust-bridge/Cargo.toml +1 -1
- package/services/rust-bridge/package.json +1 -1
- package/services/rust-bridge/src/main.rs +507 -9
- package/site/index.html +54 -0
- package/site/privacy/index.html +80 -0
- package/site/styles.css +135 -0
- package/site/support/index.html +51 -0
- 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>
|
package/site/styles.css
ADDED
|
@@ -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>
|