clawdex-mobile 1.3.2 → 2.0.1

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 (48) hide show
  1. package/.github/workflows/ci.yml +1 -1
  2. package/.github/workflows/npm-release.yml +18 -0
  3. package/AGENTS.md +3 -3
  4. package/README.md +112 -541
  5. package/apps/mobile/.env.example +1 -2
  6. package/apps/mobile/App.tsx +261 -68
  7. package/apps/mobile/app.json +31 -5
  8. package/apps/mobile/assets/brand/splash-icon-white.png +0 -0
  9. package/apps/mobile/eas.json +30 -0
  10. package/apps/mobile/package.json +22 -21
  11. package/apps/mobile/plugins/withAndroidCleartextTraffic.js +14 -0
  12. package/apps/mobile/src/api/__tests__/ws.test.ts +44 -6
  13. package/apps/mobile/src/api/chatMapping.ts +48 -8
  14. package/apps/mobile/src/api/client.ts +6 -0
  15. package/apps/mobile/src/api/types.ts +11 -0
  16. package/apps/mobile/src/api/ws.ts +52 -10
  17. package/apps/mobile/src/bridgeUrl.ts +105 -0
  18. package/apps/mobile/src/components/ActivityBar.tsx +32 -13
  19. package/apps/mobile/src/components/ChatHeader.tsx +3 -2
  20. package/apps/mobile/src/components/ChatInput.tsx +246 -91
  21. package/apps/mobile/src/components/ChatMessage.tsx +108 -4
  22. package/apps/mobile/src/config.ts +11 -29
  23. package/apps/mobile/src/hooks/useVoiceRecorder.ts +264 -0
  24. package/apps/mobile/src/navigation/DrawerContent.tsx +18 -8
  25. package/apps/mobile/src/screens/GitScreen.tsx +1 -1
  26. package/apps/mobile/src/screens/MainScreen.tsx +906 -268
  27. package/apps/mobile/src/screens/OnboardingScreen.tsx +1132 -0
  28. package/apps/mobile/src/screens/PrivacyScreen.tsx +1 -1
  29. package/apps/mobile/src/screens/SettingsScreen.tsx +65 -1
  30. package/apps/mobile/src/screens/TerminalScreen.tsx +1 -1
  31. package/apps/mobile/src/screens/TermsScreen.tsx +1 -1
  32. package/docs/app-review-notes.md +7 -2
  33. package/docs/eas-builds.md +91 -0
  34. package/docs/realtime-streaming-limitations.md +84 -0
  35. package/docs/setup-and-operations.md +239 -0
  36. package/docs/troubleshooting.md +121 -0
  37. package/docs/voice-transcription.md +87 -0
  38. package/package.json +8 -16
  39. package/scripts/setup-secure-dev.sh +122 -8
  40. package/scripts/setup-wizard.sh +342 -122
  41. package/scripts/start-bridge-secure.sh +7 -1
  42. package/scripts/sync-versions.js +63 -0
  43. package/services/rust-bridge/.env.example +1 -1
  44. package/services/rust-bridge/Cargo.lock +778 -11
  45. package/services/rust-bridge/Cargo.toml +3 -1
  46. package/services/rust-bridge/package.json +1 -1
  47. package/services/rust-bridge/src/main.rs +587 -12
  48. package/apps/mobile/metro.config.js +0 -3
@@ -3,7 +3,7 @@ name: CI
3
3
  on:
4
4
  push:
5
5
  branches:
6
- - "**"
6
+ - main
7
7
  tags:
8
8
  - "v*"
9
9
  pull_request:
@@ -2,6 +2,8 @@ name: NPM Release
2
2
 
3
3
  on:
4
4
  push:
5
+ branches:
6
+ - main
5
7
  tags:
6
8
  - "v*"
7
9
  workflow_dispatch:
@@ -68,7 +70,22 @@ jobs:
68
70
  - name: Show package contents
69
71
  run: npm pack --dry-run
70
72
 
73
+ - name: Resolve publish target
74
+ id: publish_target
75
+ run: |
76
+ PACKAGE_NAME="$(node -p "require('./package.json').name")"
77
+ PACKAGE_VERSION="$(node -p "require('./package.json').version")"
78
+ echo "package_name=${PACKAGE_NAME}" >> "$GITHUB_OUTPUT"
79
+ echo "package_version=${PACKAGE_VERSION}" >> "$GITHUB_OUTPUT"
80
+ if npm view "${PACKAGE_NAME}@${PACKAGE_VERSION}" version >/dev/null 2>&1; then
81
+ echo "publish_needed=false" >> "$GITHUB_OUTPUT"
82
+ echo "Package ${PACKAGE_NAME}@${PACKAGE_VERSION} is already published; skipping npm publish."
83
+ else
84
+ echo "publish_needed=true" >> "$GITHUB_OUTPUT"
85
+ fi
86
+
71
87
  - name: Verify NPM token secret
88
+ if: steps.publish_target.outputs.publish_needed == 'true'
72
89
  env:
73
90
  NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }}
74
91
  run: |
@@ -78,6 +95,7 @@ jobs:
78
95
  fi
79
96
 
80
97
  - name: Publish to npm
98
+ if: steps.publish_target.outputs.publish_needed == 'true'
81
99
  env:
82
100
  NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }}
83
101
  run: npm publish --access public
package/AGENTS.md CHANGED
@@ -57,9 +57,9 @@ npm run mobile
57
57
 
58
58
  This runs `expo start` in the `apps/mobile` workspace. It loads `apps/mobile/.env` automatically.
59
59
 
60
- Make sure `EXPO_PUBLIC_HOST_BRIDGE_URL` in `apps/mobile/.env` points to your host machine's LAN IP and the bridge port:
60
+ On first app launch, onboarding will ask for your bridge URL. Enter your host machine LAN/Tailscale URL:
61
61
  ```
62
- EXPO_PUBLIC_HOST_BRIDGE_URL=http://<YOUR_LAN_IP>:8787
62
+ http://<YOUR_LAN_IP>:8787
63
63
  ```
64
64
 
65
65
  Find your LAN IP with `ifconfig en0 | grep inet` (macOS) or `ip addr` (Linux). The phone and the host machine must be on the same network.
@@ -116,5 +116,5 @@ Optionally run on a specific platform:
116
116
  - On real devices, use LAN host for bridge URL instead of localhost.
117
117
  - Endpoint changes must be mirrored in mobile `src/api/types.ts` + client methods.
118
118
  - Keep environment handling explicit; avoid relying on implicit cwd assumptions.
119
- - If Expo Go shows a Worklets JS/native mismatch, align Expo-compatible versions (`react-native-reanimated@4.1.1` with `react-native-worklets@0.5.1`) and reinstall cleanly.
119
+ - If Expo Go shows a Worklets JS/native mismatch, run `npx expo install --fix` in `apps/mobile` and reinstall cleanly.
120
120
  - If Expo shows `Failed to create a worklet`, ensure `apps/mobile/babel.config.js` includes `plugins: ['react-native-reanimated/plugin']` and restart with `expo start --clear`.