devicely 2.2.12 → 2.2.13
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/README.md +182 -81
- package/bin/devicely.js +1 -1
- package/config/devices.conf +2 -2
- package/lib/.logging-backup/aiProviders.js.backup +654 -0
- package/lib/.logging-backup/appMappings.js.backup +337 -0
- package/lib/.logging-backup/commanderService.js.backup +4427 -0
- package/lib/.logging-backup/devices.js.backup +54 -0
- package/lib/.logging-backup/doctor.js.backup +94 -0
- package/lib/.logging-backup/encryption.js.backup +61 -0
- package/lib/.logging-backup/executor.js.backup +104 -0
- package/lib/.logging-backup/hybridAI.js.backup +154 -0
- package/lib/.logging-backup/intelligentLocatorService.js.backup +1541 -0
- package/lib/.logging-backup/locatorStrategy.js.backup +342 -0
- package/lib/.logging-backup/scriptLoader.js.backup +13 -0
- package/lib/.logging-backup/server.js.backup +6298 -0
- package/lib/.logging-backup/tensorflowAI.js.backup +714 -0
- package/lib/.logging-backup/universalSessionManager.js.backup +370 -0
- package/lib/.logging-enhanced-backup/server.js.enhanced-backup +6298 -0
- package/lib/advanced-logger.js +1 -0
- package/lib/aiProviders.js +154 -15
- package/lib/aiProviders.js.strategic-backup +657 -0
- package/lib/aiProvidersConfig.js +61 -151
- package/lib/aiProvidersConfig.js.backup +218 -0
- package/lib/androidDeviceDetection.js +1 -1
- package/lib/appMappings.js +1 -1
- package/lib/commanderService.js +1 -1
- package/lib/commanderService.js.backup +5552 -0
- package/lib/deviceDetection.js +1 -1
- package/lib/devices.js +1 -1
- package/lib/devices.js.strategic-backup +57 -0
- package/lib/doctor.js +1 -1
- package/lib/encryption.js +1 -1
- package/lib/encryption.js.strategic-backup +61 -0
- package/lib/executor.js +1 -1
- package/lib/executor.js.strategic-backup +107 -0
- package/lib/frontend/asset-manifest.json +5 -3
- package/lib/frontend/index.html +1 -1
- package/lib/hybridAI.js +1 -0
- package/lib/intelligentLocatorService.js +1 -0
- package/lib/lightweightAI.js +1 -0
- package/lib/localBuiltInAI.js +1 -0
- package/lib/localBuiltInAI_backup.js +1 -0
- package/lib/localBuiltInAI_simple.js +1 -0
- package/lib/locatorStrategy.js +1 -1
- package/lib/logger-demo.js +2 -0
- package/lib/logger-integration-examples.js +102 -0
- package/lib/logger.js +1 -1
- package/lib/package.json +5 -0
- package/lib/public/asset-manifest.json +3 -3
- package/lib/public/index.html +1 -1
- package/lib/quick-start-logger.js +2 -0
- package/lib/scriptLoader.js +1 -1
- package/lib/server.js +1 -1
- package/lib/server.js.strategic-backup +6298 -0
- package/lib/tensorflowAI.js +1 -0
- package/lib/tensorflowAI.js.strategic-backup +717 -0
- package/lib/tinyAI.js +1 -0
- package/lib/universalSessionManager.js +1 -0
- package/package.json +1 -1
- package/scripts/shell/android_device_control.enc +1 -1
- package/scripts/shell/connect_ios_usb_multi_final.enc +1 -1
- package/scripts/shell/connect_ios_wireless_multi_final.enc +1 -1
- package/lib/public/index.html.bak +0 -1
package/README.md
CHANGED
|
@@ -2,11 +2,19 @@
|
|
|
2
2
|
|
|
3
3
|
# 📱✨ Devicely
|
|
4
4
|
|
|
5
|
-
### **
|
|
5
|
+
### **Control one device, and every connected device follows in real-time - with live screen sync on the web**
|
|
6
6
|
|
|
7
|
-
|
|
7
|
+
*Ever wondered what happens when you combine device mirroring with AI-powered automation? Meet the mobile orchestration platform that curious developers are exploring.*
|
|
8
8
|
|
|
9
|
-
|
|
9
|
+
### 🤔 **Intrigued? Try it yourself:**
|
|
10
|
+
|
|
11
|
+
```bash
|
|
12
|
+
npm install -g devicely
|
|
13
|
+
devicely start
|
|
14
|
+
```
|
|
15
|
+
**Visit [https://devicely-ai.vercel.app/](https://devicely-ai.vercel.app/) and see what happens when devices work together.**
|
|
16
|
+
|
|
17
|
+
[](https://www.npmjs.com/package/devicely)
|
|
10
18
|
[](LICENSE)
|
|
11
19
|
[](https://devicely-ai.vercel.app)
|
|
12
20
|
|
|
@@ -14,106 +22,111 @@
|
|
|
14
22
|
|
|
15
23
|
---
|
|
16
24
|
|
|
17
|
-
###
|
|
25
|
+
### 🤷♀️ **What if mobile testing was more like conducting an orchestra?**
|
|
26
|
+
|
|
27
|
+
Instead of manually testing the same flow across multiple devices, what if you could:
|
|
18
28
|
|
|
19
|
-
|
|
29
|
+
- **Speak naturally** to your devices: *"Take a screenshot"* → all devices respond
|
|
30
|
+
- **Touch one screen** and watch others mirror your actions in real-time
|
|
31
|
+
- **Record once**, replay everywhere - from 1 device to 100+
|
|
32
|
+
- **See everything** happening across your device fleet on one web dashboard
|
|
33
|
+
|
|
34
|
+
*Turns out, when devices can follow a leader and understand natural language, mobile development gets pretty interesting.*
|
|
20
35
|
|
|
21
36
|
</div>
|
|
22
37
|
|
|
23
38
|
---
|
|
24
39
|
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
Devicely redefines what's possible with your mobile infrastructure. By bridging the gap between human intent and device execution, you can:
|
|
40
|
+
---
|
|
28
41
|
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
*
|
|
33
|
-
*
|
|
34
|
-
*
|
|
42
|
+
## 🌟 **What makes this different?**
|
|
43
|
+
|
|
44
|
+
### 👑 **Commander Mode** - *Like screen sharing, but for device control*
|
|
45
|
+
* One device leads, others follow in real-time
|
|
46
|
+
* Touch the leader's screen → all followers mirror the action
|
|
47
|
+
* Switch leaders with a simple dropdown
|
|
48
|
+
* Watch it all happen on your web dashboard
|
|
49
|
+
|
|
50
|
+
### 🔄 **Live Sync** - *What if all your devices moved together?*
|
|
51
|
+
* Commands reach all devices simultaneously via WebSockets
|
|
52
|
+
* iOS and Android understand the same instructions differently (as they should)
|
|
53
|
+
* See live status updates from every connected device
|
|
54
|
+
* No waiting for one device to finish before the next starts
|
|
55
|
+
|
|
56
|
+
### 📹 **Record & Replay - Zero-Code Automation**
|
|
57
|
+
* **Visual Recording:** Capture complex workflows with simple button clicks
|
|
58
|
+
* **AI-Generated Scripts:** Voice commands auto-convert to replayable recordings
|
|
59
|
+
* **Fleet Replay:** Run recorded flows on single devices or entire laboratories
|
|
60
|
+
* **Edit & Refine:** Full editor for recordings with add/remove/modify capabilities
|
|
61
|
+
|
|
62
|
+
### 🤖 **AI Integration** - *Talk to your devices like a person*
|
|
63
|
+
* Say *"Open Instagram and find search"* - it just works
|
|
64
|
+
* Choose from 7 AI providers (some are free to try)
|
|
65
|
+
* Devices understand context - no hunting for element IDs
|
|
66
|
+
* Same command, different results on iOS vs Android (intelligently)
|
|
67
|
+
|
|
68
|
+
### 🎤 **Voice Control** - *Because typing is so 2020*
|
|
69
|
+
* Speak naturally, pause when you're thinking (2-second detection)
|
|
70
|
+
* Chain commands: *"launch settings, scroll up, launch camera"*
|
|
71
|
+
* Watch your words turn into actions in real-time
|
|
72
|
+
* Works across as many devices as you want to connect
|
|
35
73
|
|
|
36
74
|
---
|
|
37
75
|
|
|
38
|
-
## ✨
|
|
39
|
-
|
|
40
|
-
### 🤖 **AI-Native Interaction**
|
|
41
|
-
Stop hunting for element IDs. Devicely understands your intent.
|
|
42
|
-
* **Natural Language Commands:** `"Open Instagram and find the search button"` or `"Take a screenshot on all Android devices"`.
|
|
43
|
-
* **Voice Control:** Speak commands naturally with automatic silence detection and multi-phrase support.
|
|
44
|
-
* **Context Awareness:** Automatically identifies buttons, inputs, and text across iOS and Android.
|
|
45
|
-
* **7 AI Providers:** Choose from **OpenAI** 🤖, **Google Gemini** ✨, **Anthropic Claude** 🧠, **GitHub Copilot** 🐙, **Groq** ⚡, **Cohere** 🌊, or **Mistral AI** 🌬️.
|
|
46
|
-
* **Model Selection:** Pick specific models (GPT-4 Turbo, Claude 3.5 Sonnet, Gemini 2.0 Flash, Llama 3 70B, etc.).
|
|
47
|
-
* **Smart Error Handling:** Clear, actionable error messages displayed inline with results.
|
|
76
|
+
## ✨ **Other things you might find useful**
|
|
48
77
|
|
|
49
78
|
### ⚡ **Quick Actions Panel**
|
|
50
|
-
|
|
51
|
-
* **
|
|
52
|
-
* **
|
|
53
|
-
* **
|
|
54
|
-
* **History Navigation:** Use arrow keys to cycle through previous inputs.
|
|
79
|
+
* **Type Text to Send:** Rapid text input without typing full commands
|
|
80
|
+
* **Element to Tap:** Click by name or coordinates (x,y) instantly
|
|
81
|
+
* **App ID to Launch:** Launch apps with autocomplete dropdown
|
|
82
|
+
* **History Navigation:** Arrow keys cycle through previous inputs
|
|
55
83
|
|
|
56
84
|
### 🎮 **Unified Command Center**
|
|
57
|
-
|
|
58
|
-
* **
|
|
59
|
-
* **
|
|
60
|
-
* **
|
|
61
|
-
* **Live Feedback:** See real-time logs, status updates, and visual confirmations via high-speed WebSockets.
|
|
62
|
-
* **API Key Management:** Secure credential storage with show/hide toggles for easy verification.
|
|
85
|
+
* **Cross-Platform:** Native support for **iOS 14+** and **Android 5+**
|
|
86
|
+
* **Massive Scale:** Control 5, 50, or 100+ devices with zero overhead
|
|
87
|
+
* **Live Feedback:** Real-time logs and visual confirmations via WebSockets
|
|
88
|
+
* **API Key Management:** Secure local storage with show/hide toggles
|
|
63
89
|
|
|
64
90
|
### 🔍 **Smart UI Inspector**
|
|
65
|
-
|
|
66
|
-
* **
|
|
67
|
-
* **
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
* **
|
|
72
|
-
* **
|
|
73
|
-
* **
|
|
74
|
-
* **
|
|
75
|
-
|
|
76
|
-
###
|
|
77
|
-
*
|
|
78
|
-
*
|
|
79
|
-
*
|
|
80
|
-
*
|
|
81
|
-
* **Visual Feedback:** Clear badges showing commander (👑) and follower devices (📱).
|
|
82
|
-
|
|
83
|
-
### 🎤 **Voice Commands**
|
|
84
|
-
* **Hands-Free Operation:** Control your devices without touching a keyboard.
|
|
85
|
-
* **Continuous Listening:** Speak naturally with pauses - 2-second silence detection auto-stops.
|
|
86
|
-
* **Live Transcription:** See your words convert to commands in real-time.
|
|
87
|
-
* **Complex Multi-Step:** Voice commands like "launch settings scroll up launch camera go to google.com press home" work seamlessly.
|
|
91
|
+
* **Visual Element Scan:** See all clickable, enabled, visible elements instantly
|
|
92
|
+
* **Point-and-Click Control:** Direct device interaction through inspector
|
|
93
|
+
* **Developer Export:** Clean selectors and coordinates for automation scripts
|
|
94
|
+
|
|
95
|
+
### 📷 **Screenshots Gallery & Management**
|
|
96
|
+
* **Unified Media Library:** Combined recordings and screenshots in tabbed interface
|
|
97
|
+
* **Visual Screenshot Gallery:** Thumbnail grid with device names and timestamps
|
|
98
|
+
* **Full-Screen Viewer:** Click to enlarge screenshots with dark background overlay
|
|
99
|
+
* **Quick Management:** Delete screenshots directly from gallery with one-click
|
|
100
|
+
* **Auto-Collection:** Screenshots captured via commands automatically appear in gallery
|
|
101
|
+
|
|
102
|
+
### 🌌 **The bigger picture**
|
|
103
|
+
* Transform 2-hour manual testing into 5-minute parallel runs
|
|
104
|
+
* Turn your device collection into a web-accessible lab
|
|
105
|
+
* Reproduce bugs instantly across different devices/OS versions
|
|
106
|
+
* Mix iOS and Android devices - they all speak the same language
|
|
88
107
|
|
|
89
108
|
---
|
|
90
109
|
|
|
91
|
-
##
|
|
110
|
+
## 🔍 **How it works** *(in about 60 seconds)*
|
|
92
111
|
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
### 1. Installation
|
|
112
|
+
### **Step 1: Get it running**
|
|
96
113
|
```bash
|
|
97
|
-
# Install Devicely globally via NPM
|
|
98
114
|
npm install -g devicely
|
|
99
|
-
```
|
|
100
|
-
|
|
101
|
-
### 2. Launch
|
|
102
|
-
```bash
|
|
103
|
-
# Start the command center
|
|
104
115
|
devicely start
|
|
105
116
|
```
|
|
106
117
|
|
|
107
|
-
**
|
|
118
|
+
### **Step 2: Connect and explore**
|
|
119
|
+
1. Open [https://devicely-ai.vercel.app/](https://devicely-ai.vercel.app/)
|
|
120
|
+
2. Connect your iOS/Android devices (as many as you want)
|
|
121
|
+
3. Try saying: *"Take screenshot on all devices"*
|
|
122
|
+
4. Watch what happens
|
|
108
123
|
|
|
109
|
-
### 3
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
3. Add your API key (secured locally, never transmitted)
|
|
114
|
-
4. Start using AI: `"launch settings on all devices"`
|
|
124
|
+
### **Step 3: Discover the AI layer** *(optional, but fun)*
|
|
125
|
+
- Settings → AI Config → Choose a provider (Gemini/Groq are free)
|
|
126
|
+
- Now you can talk to your devices in plain English
|
|
127
|
+
- *"Launch settings, scroll down, open camera"* - just works
|
|
115
128
|
|
|
116
|
-
|
|
129
|
+
**💡 Curious tip:** The more devices you connect, the more interesting it gets.
|
|
117
130
|
|
|
118
131
|
---
|
|
119
132
|
|
|
@@ -198,9 +211,81 @@ Devicely comes with a powerful command-line interface for quick actions:
|
|
|
198
211
|
|
|
199
212
|
---
|
|
200
213
|
|
|
201
|
-
## 🆕 Latest Features (v2.2.
|
|
214
|
+
## 🆕 Latest Features (v2.2.13 - February 2026)
|
|
215
|
+
|
|
216
|
+
### 🎨 **Major UI & Performance Update (v2.2.13 - Latest)**
|
|
217
|
+
- **📷 Screenshots Gallery:** Complete screenshot management system with tabbed interface
|
|
218
|
+
- **🎨 Apps Menu Redesign:** Beautiful gradient backgrounds and improved visual hierarchy
|
|
219
|
+
- **🤖 AI Bypass Optimization:** App commands now execute instantly without AI processing
|
|
220
|
+
- **⚡ Performance Boost:** Significantly faster app operations and UI responsiveness
|
|
221
|
+
- **🎯 Enhanced UX:** Better z-index management, tooltips, and user feedback
|
|
222
|
+
|
|
223
|
+
### 📷 **Screenshots Gallery & Management (NEW!)**
|
|
224
|
+
- **Unified Media Library:** Combined Recordings and Screenshots in elegant tabbed interface
|
|
225
|
+
- **Visual Gallery:** Responsive thumbnail grid (2-6 columns) with device context
|
|
226
|
+
- **Full-Screen Viewer:** Click any screenshot for full-screen view with dark overlay
|
|
227
|
+
- **Smart Management:** One-click delete with instant feedback and auto-refresh
|
|
228
|
+
- **Device Tracking:** See which device captured each screenshot with timestamps
|
|
229
|
+
- **Auto-Collection:** Screenshots from `screenshot` command automatically appear
|
|
230
|
+
- **Cross-Platform:** Works seamlessly with iOS and Android screenshots
|
|
231
|
+
|
|
232
|
+
### 🎨 **Apps Menu Visual Overhaul**
|
|
233
|
+
- **Gradient Backgrounds:** Each section has beautiful, color-coded gradient styling:
|
|
234
|
+
- 🟢 **Quick Launch:** Green-emerald gradient with enhanced app cards
|
|
235
|
+
- 🚀 **Launch App:** Green-teal gradient for app launching controls
|
|
236
|
+
- ❌ **Kill App:** Red-pink gradient for app termination controls
|
|
237
|
+
- 📦 **Install App:** Blue-cyan gradient for app installation
|
|
238
|
+
- 🗑️ **Uninstall App:** Orange-yellow gradient (NEW dedicated section)
|
|
239
|
+
- 📱 **Installed Apps:** Purple-pink gradient for app listing
|
|
240
|
+
- **Enhanced Visual Hierarchy:** Clear section separation with consistent iconography
|
|
241
|
+
- **Z-Index Management:** Apps Menu now properly appears above all hints and tooltips
|
|
242
|
+
- **Improved Tooltips:** Better button labeling and user guidance throughout
|
|
243
|
+
|
|
244
|
+
### 🤖 **AI Processing Optimization**
|
|
245
|
+
- **Smart Command Detection:** Automatic bypass for app control commands
|
|
246
|
+
- **Regex Pattern Matching:** Detects `launch`, `kill`, `install`, `uninstall` commands
|
|
247
|
+
- **Direct Execution:** App commands execute immediately without AI conversion
|
|
248
|
+
- **Performance Gain:** Eliminated "🤖 Converting with Local Built-In AI" delays
|
|
249
|
+
- **Maintained Intelligence:** Other commands still benefit from AI when enabled
|
|
250
|
+
|
|
251
|
+
### ⚡ **Commander Mode App Launch Fix (v2.2.13)**
|
|
252
|
+
- **Simple Detection:** Pre-tap home screen detection for smart app launches
|
|
253
|
+
- **Skip Coordinate Mirroring:** No more wrong taps when launching apps from home screen
|
|
254
|
+
- **Direct App Sync:** Detects launched app and immediately launches same app on followers
|
|
255
|
+
- **Performance Optimized:** Reduced cache refresh overhead during app launches
|
|
256
|
+
- **Smart Cache Management:** Refresh timing optimized for app launch vs regular tap scenarios
|
|
257
|
+
|
|
258
|
+
### 🔧 **Intelligent Locator System Enhancements**
|
|
259
|
+
- **Advanced Caching:** Smart cache invalidation and refresh strategies
|
|
260
|
+
- **Performance Tuning:** Reduced cache refresh from 10s to 30s for better responsiveness
|
|
261
|
+
- **Session Recovery:** Improved session handling with smart recovery mechanisms
|
|
262
|
+
- **Cross-Device Sync:** Better coordinate scaling and device synchronization
|
|
263
|
+
|
|
264
|
+
### 🐛 **Critical Fixes Applied**
|
|
265
|
+
- **Commander Mode Errors:** Fixed "Error starting commander mode" when devices already connected
|
|
266
|
+
- **Duplicate Follower Mirrors:** Resolved multiple mirror display issues
|
|
267
|
+
- **Coordinate Scaling:** Fixed scaling problems between commander and follower devices
|
|
268
|
+
- **Session Management:** Improved session lifecycle and error recovery
|
|
269
|
+
- **AI Command Order:** Fixed command conversion and execution sequence
|
|
270
|
+
|
|
271
|
+
### 🎯 **Developer Experience Improvements**
|
|
272
|
+
- **Clean Code Architecture:** Improved separation of concerns and modularity
|
|
273
|
+
- **Better Error Handling:** Enhanced error messages and user feedback
|
|
274
|
+
- **Performance Monitoring:** Added metrics and logging for better debugging
|
|
275
|
+
- **Cross-Platform Consistency:** Unified behavior across iOS and Android platforms
|
|
276
|
+
|
|
277
|
+
---
|
|
202
278
|
|
|
203
|
-
###
|
|
279
|
+
### 📋 **Recent Commits on Release_2.2.13 Branch**
|
|
280
|
+
```
|
|
281
|
+
dda75e2 🎨 MAJOR UPDATE: Apps Menu UI Fixes + Screenshots Gallery + AI Bypass
|
|
282
|
+
a267fab 🚀 OPTIMIZE: Simple app launch detection and performance improvements
|
|
283
|
+
0dd3fcc Complete system update: AI fixes, intelligent locators, and comprehensive improvements
|
|
284
|
+
8c437b1 Fix AI command conversion order and follower device execution
|
|
285
|
+
5610575 🔧 MAJOR FIX: Duplicate follower mirrors & coordinate scaling
|
|
286
|
+
```
|
|
287
|
+
|
|
288
|
+
**🚀 Total Improvements:** 5 major commits with 650+ lines of enhancements including UI overhaul, performance optimizations, AI bypass implementation, screenshots gallery, and critical bug fixes.
|
|
204
289
|
- **Fixed**: "Error starting commander mode" when devices are already connected
|
|
205
290
|
- **Improved**: Commander mode now gracefully handles already-active sessions
|
|
206
291
|
- **Enhanced**: Better error messaging and automatic session management
|
|
@@ -272,9 +357,25 @@ For enterprise inquiries or commercial access, contact: **devicelyai@gmail.com**
|
|
|
272
357
|
|
|
273
358
|
<div align="center">
|
|
274
359
|
|
|
275
|
-
|
|
276
|
-
|
|
360
|
+
---
|
|
361
|
+
|
|
362
|
+
---
|
|
363
|
+
|
|
364
|
+
## 🤔 **Still curious?**
|
|
365
|
+
|
|
366
|
+
Mobile development has always been about juggling multiple devices, hunting for the right selectors, and repeating the same tests over and over. What if there was a more interesting way?
|
|
367
|
+
|
|
368
|
+
### **Give it a try:**
|
|
369
|
+
|
|
370
|
+
```bash
|
|
371
|
+
npm install -g devicely
|
|
372
|
+
devicely start
|
|
373
|
+
```
|
|
374
|
+
|
|
375
|
+
[📦 NPM Package](https://www.npmjs.com/package/devicely) • [🌐 Try it live](https://devicely-ai.vercel.app) • [📧 Questions: devicelyai@gmail.com](mailto:devicelyai@gmail.com)
|
|
376
|
+
|
|
377
|
+
*Built by developers who got tired of the same old mobile testing routine.*
|
|
277
378
|
|
|
278
|
-
|
|
379
|
+
**⭐ Star this repo if you find it interesting!**
|
|
279
380
|
|
|
280
381
|
</div>
|
package/bin/devicely.js
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
|
|
3
|
-
function
|
|
3
|
+
function _0x54a9(_0x3c10d7,_0x5c836a){_0x3c10d7=_0x3c10d7-0xd6;const _0x115917=_0x1159();let _0x54a98a=_0x115917[_0x3c10d7];if(_0x54a9['SucLFO']===undefined){var _0x57cbae=function(_0x3df65b){const _0x4fb81d='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';let _0x38aac1='',_0x220efc='';for(let _0x158313=0x0,_0x125d5a,_0x1c6297,_0x4fb098=0x0;_0x1c6297=_0x3df65b['charAt'](_0x4fb098++);~_0x1c6297&&(_0x125d5a=_0x158313%0x4?_0x125d5a*0x40+_0x1c6297:_0x1c6297,_0x158313++%0x4)?_0x38aac1+=String['fromCharCode'](0xff&_0x125d5a>>(-0x2*_0x158313&0x6)):0x0){_0x1c6297=_0x4fb81d['indexOf'](_0x1c6297);}for(let _0x59f995=0x0,_0x2b37b1=_0x38aac1['length'];_0x59f995<_0x2b37b1;_0x59f995++){_0x220efc+='%'+('00'+_0x38aac1['charCodeAt'](_0x59f995)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0x220efc);};_0x54a9['rbQqTd']=_0x57cbae,_0x54a9['qGAnbH']={},_0x54a9['SucLFO']=!![];}const _0x23debe=_0x115917[0x0],_0x2f3636=_0x3c10d7+_0x23debe,_0x16c240=_0x54a9['qGAnbH'][_0x2f3636];return!_0x16c240?(_0x54a98a=_0x54a9['rbQqTd'](_0x54a98a),_0x54a9['qGAnbH'][_0x2f3636]=_0x54a98a):_0x54a98a=_0x16c240,_0x54a98a;}const _0x1b9e34=_0x54a9;function _0x1159(){const _0x173d5b=['rgv0zwn0ifvtqIbKzxzPy2vZig9UBhK','BwvZC2fNzq','CMvWzwf0','yM9Sza','rxHLy3v0zsbJB21Tyw5Kig9UignVBM5Ly3rLzcbPt1mVqw5KCM9PzcbKzxzPy2vZ','cUkAOsbfEgvJDxrPBMCGy29TBwfUzc4UlG','cVcFMOaGrgv2AwnLBhKGlsbpBMuGq29TBwfUzcWGqwXSierLDMLJzxm','wMHIsxC','ue9dC1q','zxjYB3i','yLrpzhO','B2TZC20','lxySic0TDMvYyM9Zzq','uxrYAMG','lwqSic0Tzgv2AwnLidXUyw1LpG','mhWZFdf8nxWYFdq','tgfrB3q','ndbYwfv1tu0','zg9JDg9Y','rgLZCgXHEsb2zxjZAw9Uig51BwjLCG','lwGSic0TAgvSCa','icbKzxzPy2vSEsbSAxn0icaGica','Aer4tg8','lI4VCgfJA2fNzs5QC29U','ls11C2iTB25SEq','zgvZy3jPChrPB24','yxjNDG','BgLZDa','iYbtDgfYDcb0AguGC2vYDMvY','Bg9N','tgLZDcbHBgWGy29UBMvJDgvKigLpuYbHBMqGqw5KCM9PzcbKzxzPy2vZ','ls1Kzwj1zW','mJuZmLrwsgvLEa','icbKzxzPy2vSEsbKB2n0B3iGica','C3rHCNq','rgv0zwn0ifDPrMKGzgv2AwnLCYbVBMX5','u2vYDMvYihbVCNq','icaGquKGug93zxjLzcbnB2jPBguGqxv0B21HDgLVBG','rgLZCgXHEsbOzwXWigLUzM9YBwf0Aw9U','nJbvwgLJz2O','wKDVyLG','y2HHBgS','cVcFK7eGu2nHBM5PBMCGzM9YigrLDMLJzxmUlI4','cUkDJcbfCNjVCJO','DMvYC2LVBG','CgfYC2u','q2HLy2SGC3LZDgvTihjLCxvPCMvTzw50CYbMB3iGAu9tigfUzcbbBMrYB2LKigf1Dg9TyxrPB24','BNbuDwO','tMneBeC','DMnLzKu','ls1UBY1ICM93C2vY','B3v0Chv0sgvSCa','mtCZotq4nM54q2vlBq','CMvK','Aff1ENi','mteXodrtDuHus1C','zwD3ueC','nZi1mtb5zuDkv00','z3jHEq','zgv2AwnLBhK','u3Lrwhq','B3b0Aw9U','rgv2AwnLBhKGlsbpBMuGq29TBwfUzcWGqwXSierLDMLJzxmUiefjifbVD2vYzwqGtw9IAwXLief1Dg9TyxrPB24','C2XPy2u','C3bSAxq','mtu5otzgseHIAKO','ndviC0L3B0e','ywn0Aw9U','yxrVvee','vLv0yKq','y3LHBG','ndq1nti4yxDcBgfP','uM12qKW','vMToyw4','B3f0Axq','D2HPDgu','cVcFKQeGuxvPy2SGC3rHCNq6','mtm1shrYCvHu','y29TBwfUzgvY','Bvvpt0K','D1bequi','cVcFLi0Gq2HLy2TPBMCGC3LZDgvTihjLCxvPCMvTzw50CY4UlG','qvjeyNG','u3rHCNqGrgv2AwnLBhKGC2vYDMvYigfUzcbVCgvUihDLyIbPBNrLCMzHy2u','AgvSCe9WDgLVBG','BMfTzq','zxHPDa','y29TBwfUza','mZaWmq','icbKzxzPy2vSEsbZDgfYDcaGica','u2HVDYbKzxrHAwXLzcbKzxzPy2uGAw5MB3jTyxrPB24','AenuALm','tMrPuMe','mtmZoty1mfjOyvjHAW','lI4VBgLIl3nLCNzLCG','AwfbBKe','iYbmAxn0igrLDMLJzxm','mJC5otvMv2jQDxe','rxHLy3v0zsbVBIbZCgvJAwzPyYbKzxzPy2u'];_0x1159=function(){return _0x173d5b;};return _0x1159();}(function(_0x1e6e0e,_0x118f34){const _0x1b693a=_0x54a9,_0x2c3234=_0x1e6e0e();while(!![]){try{const _0x2435dc=-parseInt(_0x1b693a(0xdf))/0x1*(-parseInt(_0x1b693a(0x11c))/0x2)+-parseInt(_0x1b693a(0xe9))/0x3*(parseInt(_0x1b693a(0x132))/0x4)+-parseInt(_0x1b693a(0xf5))/0x5*(parseInt(_0x1b693a(0xe1))/0x6)+parseInt(_0x1b693a(0xdc))/0x7+parseInt(_0x1b693a(0xef))/0x8*(-parseInt(_0x1b693a(0xea))/0x9)+-parseInt(_0x1b693a(0x105))/0xa+parseInt(_0x1b693a(0x109))/0xb*(parseInt(_0x1b693a(0x12b))/0xc);if(_0x2435dc===_0x118f34)break;else _0x2c3234['push'](_0x2c3234['shift']());}catch(_0x19f980){_0x2c3234['push'](_0x2c3234['shift']());}}}(_0x1159,0x2e80e));const {program}=require(_0x1b9e34(0xf6)),chalk=require(_0x1b9e34(0x134)),packageJson=require(_0x1b9e34(0x122)),{startServer}=require(_0x1b9e34(0x106)),{listDevices}=require('../lib/devices'),{checkDoctor}=require('../lib/doctor'),{executeCommand}=require('../lib/executor');program[_0x1b9e34(0xfd)](_0x1b9e34(0xe3))['description'](_0x1b9e34(0xe6))['version'](packageJson[_0x1b9e34(0x137)],'-v,\x20--version',_0x1b9e34(0x11e))[_0x1b9e34(0xfc)](_0x1b9e34(0x11f),_0x1b9e34(0x131)),program[_0x1b9e34(0xff)](_0x1b9e34(0x12d))[_0x1b9e34(0x124)](_0x1b9e34(0xfb))[_0x1b9e34(0xe5)]('-p,\x20--port\x20<port>',_0x1b9e34(0x12f),_0x1b9e34(0x100))[_0x1b9e34(0xe5)](_0x1b9e34(0xda),'Don\x27t\x20open\x20browser\x20automatically')['option'](_0x1b9e34(0x12a),'Enable\x20debug\x20logging')[_0x1b9e34(0xe5)](_0x1b9e34(0x123),_0x1b9e34(0x10b))[_0x1b9e34(0xe5)]('--wifi-only',_0x1b9e34(0x12e))[_0x1b9e34(0xeb)](async _0x46bdba=>{const _0x1f724f=_0x1b9e34,_0x186d3f={'VkNan':_0x1f724f(0x11a),'hQuzr':function(_0x57df85,_0x17ace5){return _0x57df85+_0x17ace5;},'mUOOI':_0x1f724f(0x101),'hCTjS':'#\x20Start\x20the\x20server','ZhbIw':function(_0xfcd8bb,_0x1b584e){return _0xfcd8bb+_0x1b584e;},'okssm':_0x1f724f(0x12c),'npTuj':'#\x20Check\x20system','POCsT':_0x1f724f(0xf4),'RmvBL':_0x1f724f(0x120),'bTOdz':_0x1f724f(0x108),'Qtrjh':_0x1f724f(0x111),'NcDlG':_0x1f724f(0x130),'Qtxjq':function(_0x5c3934,_0x546689){return _0x5c3934(_0x546689);},'ARDbx':_0x1f724f(0x133),'hDxLo':'\x0a❌\x20Error:'};try{console[_0x1f724f(0x128)](chalk['cyan'][_0x1f724f(0x10e)](_0x186d3f[_0x1f724f(0x118)])),console['log'](chalk[_0x1f724f(0xe2)](_0x186d3f[_0x1f724f(0xd8)])),console[_0x1f724f(0x128)](chalk[_0x1f724f(0xe2)]('━'['repeat'](0x32))),await _0x186d3f['Qtxjq'](startServer,_0x46bdba);}catch(_0x180767){if(_0x186d3f[_0x1f724f(0xfa)]!==_0x1f724f(0x133)){const _0x3039af=_0x186d3f[_0x1f724f(0xf1)]['split']('|');let _0x4b66a6=0x0;while(!![]){switch(_0x3039af[_0x4b66a6++]){case'0':_0x4c0928['outputHelp']();continue;case'1':_0x33a83b['log'](_0x186d3f[_0x1f724f(0xde)](_0x2417c2[_0x1f724f(0xe2)](_0x186d3f[_0x1f724f(0xf7)]),_0x23855a[_0x1f724f(0xf3)](_0x186d3f[_0x1f724f(0x103)])));continue;case'2':_0x1563e4[_0x1f724f(0x128)](_0x186d3f[_0x1f724f(0x112)](_0x23fe78[_0x1f724f(0xe2)](_0x186d3f[_0x1f724f(0x116)]),_0x56b443['white'](_0x186d3f[_0x1f724f(0xd7)])));continue;case'3':_0x518b69[_0x1f724f(0x128)](_0x1c58f7[_0x1f724f(0xee)](_0x186d3f[_0x1f724f(0x113)]));continue;case'4':_0x4bd59e['log']('');continue;case'5':_0xef1071[_0x1f724f(0x128)](_0x186d3f[_0x1f724f(0xde)](_0x52387d[_0x1f724f(0xe2)](_0x186d3f[_0x1f724f(0xf0)]),_0x2cfe37[_0x1f724f(0xf3)](_0x186d3f[_0x1f724f(0x115)])));continue;}break;}}else console['error'](chalk[_0x1f724f(0xdd)](_0x186d3f[_0x1f724f(0x121)]),_0x180767['message']),process[_0x1f724f(0xfe)](0x1);}}),program[_0x1b9e34(0xff)](_0x1b9e34(0x126))[_0x1b9e34(0x124)](_0x1b9e34(0x129))[_0x1b9e34(0xe5)](_0x1b9e34(0x117),_0x1b9e34(0x102))[_0x1b9e34(0xeb)](async _0x27d9a7=>{const _0x480ed8=_0x1b9e34,_0x60d03f={'egwPG':_0x480ed8(0x135),'iaAnA':function(_0x5178ad,_0x509025){return _0x5178ad(_0x509025);},'NdiRa':_0x480ed8(0x136)};try{console[_0x480ed8(0x128)](chalk[_0x480ed8(0xee)][_0x480ed8(0x10e)](_0x60d03f[_0x480ed8(0xe0)])),console[_0x480ed8(0x128)](chalk['gray']('━'[_0x480ed8(0x10d)](0x32))),await _0x60d03f[_0x480ed8(0x107)](listDevices,_0x27d9a7);}catch(_0x2ec22d){console[_0x480ed8(0x114)](chalk[_0x480ed8(0xdd)](_0x60d03f[_0x480ed8(0x104)]),_0x2ec22d[_0x480ed8(0x10c)]),process['exit'](0x1);}}),program[_0x1b9e34(0xff)](_0x1b9e34(0x11d))['description'](_0x1b9e34(0xd6))[_0x1b9e34(0xeb)](async()=>{const _0x5d4809=_0x1b9e34,_0x29f99e={};_0x29f99e['atoTA']=_0x5d4809(0xf9),_0x29f99e[_0x5d4809(0xe4)]=_0x5d4809(0x136);const _0x18eaa2=_0x29f99e;try{console[_0x5d4809(0x128)](chalk[_0x5d4809(0xee)][_0x5d4809(0x10e)](_0x18eaa2[_0x5d4809(0xec)])),console[_0x5d4809(0x128)](chalk['gray']('━'[_0x5d4809(0x10d)](0x32))),await checkDoctor();}catch(_0x46e9d4){console[_0x5d4809(0x114)](chalk[_0x5d4809(0xdd)](_0x18eaa2[_0x5d4809(0xe4)]),_0x46e9d4[_0x5d4809(0x10c)]),process['exit'](0x1);}}),program['command']('exec\x20<command>')['description'](_0x1b9e34(0x10f))['option'](_0x1b9e34(0x119),_0x1b9e34(0x10a))['option']('-a,\x20--all','Execute\x20on\x20all\x20devices\x20(default)')[_0x1b9e34(0xeb)](async(_0xb12e13,_0xaa3c66)=>{const _0x328039=_0x1b9e34,_0x38d6bd={'oqtit':'\x0a❌\x20Error:','LaQot':_0x328039(0x110),'VaRJq':function(_0x170ad1,_0x39d751,_0x42a91b){return _0x170ad1(_0x39d751,_0x42a91b);},'VUtbD':function(_0x351877,_0x2142e1){return _0x351877===_0x2142e1;},'wPDAB':_0x328039(0xd9)};try{console[_0x328039(0x128)](chalk[_0x328039(0xee)]['bold'](_0x38d6bd[_0x328039(0x11b)])),console[_0x328039(0x128)](chalk[_0x328039(0xe2)]('━'['repeat'](0x32))),await _0x38d6bd['VaRJq'](executeCommand,_0xb12e13,_0xaa3c66);}catch(_0x4c064b){_0x38d6bd[_0x328039(0xed)](_0x38d6bd[_0x328039(0xf8)],_0x38d6bd[_0x328039(0xf8)])?(console[_0x328039(0x114)](chalk[_0x328039(0xdd)](_0x328039(0x136)),_0x4c064b[_0x328039(0x10c)]),process['exit'](0x1)):(_0x5be31b[_0x328039(0x114)](_0x57a71d['red'](_0x38d6bd[_0x328039(0xf2)]),_0x274f33[_0x328039(0x10c)]),_0x4a789f[_0x328039(0xfe)](0x1));}}),program[_0x1b9e34(0x138)](process['argv']);if(!process[_0x1b9e34(0x125)][_0x1b9e34(0xe7)](0x2)['length']){const SOuIgO='4|2|5|1|0|3'[_0x1b9e34(0xe8)]('|');let SrLoED=0x0;while(!![]){switch(SOuIgO[SrLoED++]){case'0':console[_0x1b9e34(0x128)](chalk[_0x1b9e34(0xe2)](_0x1b9e34(0x12c))+chalk['white']('#\x20Check\x20system'));continue;case'1':console['log'](chalk[_0x1b9e34(0xe2)]('\x20\x20devicely\x20list\x20\x20\x20\x20\x20')+chalk['white'](_0x1b9e34(0x108)));continue;case'2':console[_0x1b9e34(0x128)](chalk[_0x1b9e34(0xee)](_0x1b9e34(0xf4)));continue;case'3':console[_0x1b9e34(0x128)]('');continue;case'4':program[_0x1b9e34(0xdb)]();continue;case'5':console[_0x1b9e34(0x128)](chalk['gray'](_0x1b9e34(0x101))+chalk[_0x1b9e34(0xf3)](_0x1b9e34(0x127)));continue;}break;}}
|
package/config/devices.conf
CHANGED
|
@@ -18,7 +18,7 @@
|
|
|
18
18
|
# Pixel8,1A2B3C4D5E6F,,android,usb (Android USB - auto-detected)
|
|
19
19
|
# GalaxyS23,ABCD1234,192.168.1.150,android,wireless (Android Wireless)
|
|
20
20
|
|
|
21
|
-
iPadProSuresh,00008132-000A24C022FB801C,,ios,usb
|
|
22
21
|
iPhone17,00008150-001058D13478401C,,ios,usb
|
|
23
|
-
iPhoneXR17x,00008020-000D48520C53802E,,ios,usb
|
|
24
22
|
iPhone16Plus,00008140-001C24361E41801C,,ios,usb
|
|
23
|
+
sdk gphone64 arm64,emulator-5554,,android,usb
|
|
24
|
+
iPadProSuresh,00008132-000A24C022FB801C,,ios,usb
|