simvyn 1.0.6 → 2.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/README.md CHANGED
@@ -5,7 +5,7 @@
5
5
  <h1 align="center">simvyn</h1>
6
6
 
7
7
  <p align="center">
8
- Universal mobile devtool — control iOS Simulators and Android Emulators from a single dashboard and CLI
8
+ Universal mobile devtool — control iOS Simulators, Android Emulators, and real devices from a single dashboard and CLI
9
9
  </p>
10
10
 
11
11
  <p align="center">
@@ -27,7 +27,7 @@
27
27
  npx simvyn
28
28
  ```
29
29
 
30
- Starts the local server, opens the web dashboard in your browser, and discovers all connected iOS Simulators and Android Emulators automatically.
30
+ Starts the local server, opens the web dashboard in your browser, and discovers all connected simulators, emulators, and USB-connected physical devices automatically.
31
31
 
32
32
  ## Installation
33
33
 
@@ -50,44 +50,296 @@ npx simvyn
50
50
 
51
51
  ## Features
52
52
 
53
- - **Device Management** — Discover, boot, shutdown, erase iOS Simulators and Android Emulators
54
- - **Location Simulation** — Set GPS coordinates, play GPX/KML routes with speed control, save favorite locations
53
+ - **Device Management** — Discover, boot, shutdown, erase, create, and clone simulators, emulators, and physical devices
55
54
  - **App Management** — Install, launch, terminate, uninstall apps via drag-and-drop or CLI
56
- - **Log Viewer** — Real-time log streaming with level filtering, regex search, and export
57
- - **Screenshots and Recording** — Capture screenshots and record screen on any device
55
+ - **Log Viewer** — Real-time streaming with level filtering, regex search, pagination, and export
56
+ - **Location Simulation** — Set GPS coordinates, play GPX/KML routes with speed control, save favorites
57
+ - **Device Settings** — Dark mode, locale, permissions, status bar overrides, accessibility presets
58
+ - **Screenshots and Recording** — Capture screenshots and record screen video with history
58
59
  - **Deep Links** — Open URLs and custom schemes, save favorites per app
59
- - **Push Notifications** — Compose and send push payloads to iOS simulators with template library
60
- - **File Browser** — Browse app sandboxes, upload/download files, edit text files inline
61
60
  - **Database Inspector** — Browse SQLite tables, run SQL queries, view SharedPreferences and NSUserDefaults
62
- - **Device Settings** — Toggle dark mode, manage permissions, override status bar, accessibility presets
63
- - **Crash Logs** — View iOS diagnostic reports and Android logcat crashes
64
- - **Developer Utilities** — Port forwarding, display overrides, battery simulation, input injection, bug reports
65
- - **Web Dashboard** — Apple Liquid Glass design with command palette (Cmd+K), keyboard navigation
61
+ - **File Browser** — Browse app sandboxes, upload/download files, edit text inline
62
+ - **Push Notifications** — Compose JSON payloads, send to iOS simulators, template library
63
+ - **Collections** — Bundle device actions into reusable sequences, apply to multiple devices at once
64
+ - **Crash Logs** — iOS diagnostic reports and Android logcat/tombstone crashes
65
+ - **Clipboard** — Read and write device clipboard contents
66
+ - **Media** — Push photos and videos to device camera rolls and galleries
67
+ - **Tool Settings** — Server configuration, storage management, diagnostics, and debug reports
68
+ - **Real Device Support** — Connect physical Android and iOS devices via USB with automatic discovery
69
+ - **Web Dashboard** — Apple Liquid Glass design with command palette, keyboard navigation
66
70
  - **Full CLI** — Every feature works headlessly via `simvyn <command>`
67
71
 
68
- ## CLI Examples
72
+ ## Module Showcases
73
+
74
+ ### Device Management
75
+
76
+ Discover all connected iOS Simulators, Android Emulators, and USB-connected physical devices in one unified list. Boot, shutdown, and erase devices without touching Xcode or Android Studio. Create new iOS simulators by choosing a device type and runtime, or clone an existing one to quickly spin up duplicates. Physical devices appear automatically when plugged in and are grouped separately in the device selector.
77
+
78
+ <p align="center"><img src="https://raw.githubusercontent.com/pranshuchittora/simvyn/main/docs/assets/device-management.png" alt="Device Management" width="700" /></p>
79
+
80
+ - List all available simulators, emulators, and physical devices across platforms
81
+ - Boot, shutdown, and erase devices with one click or CLI command
82
+ - Create new iOS simulators with device type and runtime selection
83
+ - Clone and rename existing simulators
84
+ - Real-time device state updates via WebSocket
85
+
86
+ ### App Management
87
+
88
+ Install, launch, terminate, and uninstall apps on any connected device. Drag and drop IPA or APK files directly onto the dashboard. View detailed app information and clear app data without manual adb or simctl commands.
89
+
90
+ <p align="center"><img src="https://raw.githubusercontent.com/pranshuchittora/simvyn/main/docs/assets/app-management.png" alt="App Management" width="700" /></p>
91
+
92
+ - Drag-and-drop IPA and APK installation
93
+ - Launch, terminate, and uninstall apps by bundle ID
94
+ - View app details including version, size, and permissions
95
+ - Clear app data on Android devices
96
+ - List all installed apps with search filtering
97
+
98
+ ### Log Viewer
99
+
100
+ Stream device logs in real time with powerful filtering. Filter by log level, search with regex patterns, and filter by process name. Export filtered logs for sharing or archival. Paginated history lets you scroll back through thousands of entries without performance issues.
101
+
102
+ <p align="center"><img src="https://raw.githubusercontent.com/pranshuchittora/simvyn/main/docs/assets/log-viewer.png" alt="Log Viewer" width="700" /></p>
103
+
104
+ - Real-time log streaming via WebSocket
105
+ - Filter by level: debug, info, warning, error, fatal
106
+ - Regex search and process name filtering
107
+ - Paginated history with virtual scrolling
108
+ - Export filtered logs to file
109
+
110
+ ### Location
111
+
112
+ Set precise GPS coordinates on any device using an interactive map or manual input. Play back GPX and KML route files with adjustable speed control. Save frequently used locations as favorites for quick access.
113
+
114
+ <p align="center"><img src="https://raw.githubusercontent.com/pranshuchittora/simvyn/main/docs/assets/location.png" alt="Location" width="700" /></p>
115
+
116
+ - Interactive map with click-to-set coordinates
117
+ - GPX and KML route file playback with speed control
118
+ - Favorite locations saved per device
119
+ - Multi-device location broadcast
120
+ - Reverse geocoding for human-readable addresses
121
+
122
+ ### Device Settings
123
+
124
+ Toggle dark mode, change locale, manage app permissions, and override status bar appearance. Apply accessibility presets to test your app under different conditions. All settings changes take effect immediately on the target device.
125
+
126
+ <p align="center"><img src="https://raw.githubusercontent.com/pranshuchittora/simvyn/main/docs/assets/device-settings.png" alt="Device Settings" width="700" /></p>
127
+
128
+ - Toggle dark/light mode
129
+ - Change device locale
130
+ - Manage app permissions
131
+ - Override status bar (time, battery, signal)
132
+ - Accessibility presets (bold text, increase contrast, content size)
133
+
134
+ ### Screenshots and Recording
135
+
136
+ Capture screenshots and record screen video on any device. All captures are saved with timestamps and organized in a browsable history. Download or delete captures directly from the dashboard.
137
+
138
+ <p align="center"><img src="https://raw.githubusercontent.com/pranshuchittora/simvyn/main/docs/assets/screenshots-and-recordings.png" alt="Screenshots and Recording" width="700" /></p>
139
+
140
+ - One-click screenshot capture
141
+ - Screen recording with start/stop controls
142
+ - Timestamped capture history
143
+ - Download and delete captures from the dashboard
144
+
145
+ ### Deep Links
146
+
147
+ Open URLs and custom URI schemes on any device. Save frequently used deep links as favorites organized by app. Test your app's deep link handling without manually typing URLs into a terminal.
148
+
149
+ <p align="center"><img src="https://raw.githubusercontent.com/pranshuchittora/simvyn/main/docs/assets/deep-links.png" alt="Deep Links" width="700" /></p>
150
+
151
+ - Open any URL or custom scheme on a device
152
+ - Save favorite deep links per app
153
+ - Link history with recent-first ordering
154
+ - Works with both iOS and Android
155
+
156
+ ### Database Inspector
157
+
158
+ Browse SQLite databases inside any app's sandbox. View table schemas, run arbitrary SQL queries, and inspect SharedPreferences (Android) or NSUserDefaults (iOS). Edit values inline without writing scripts.
159
+
160
+ <p align="center"><img src="https://raw.githubusercontent.com/pranshuchittora/simvyn/main/docs/assets/database-inspector.png" alt="Database Inspector" width="700" /></p>
161
+
162
+ - Browse SQLite tables with sortable columns
163
+ - Run arbitrary SQL queries
164
+ - View and edit SharedPreferences and NSUserDefaults
165
+ - Inline cell editing with type detection
166
+
167
+ ### File Browser
168
+
169
+ Browse the sandbox file system of any installed app. Navigate directories, upload and download files, and edit text files inline. Transfer files between your machine and the device without manual adb pull/push commands.
170
+
171
+ <p align="center"><img src="https://raw.githubusercontent.com/pranshuchittora/simvyn/main/docs/assets/file-system.png" alt="File Browser" width="700" /></p>
172
+
173
+ - Browse app sandbox directories
174
+ - Upload and download files
175
+ - Inline text file editing
176
+ - Works with both iOS and Android app containers
177
+
178
+ ### Push Notifications
179
+
180
+ Compose JSON push notification payloads and send them to iOS simulators. Use the built-in template library as a starting point or write payloads from scratch. Real-time JSON validation highlights errors before sending.
181
+
182
+ <p align="center"><img src="https://raw.githubusercontent.com/pranshuchittora/simvyn/main/docs/assets/push-notifications.png" alt="Push Notifications" width="700" /></p>
183
+
184
+ - Compose and send push payloads to iOS simulators
185
+ - Built-in payload template library
186
+ - Real-time JSON validation
187
+ - Target specific apps by bundle ID
188
+
189
+ ### Collections
190
+
191
+ Create reusable sets of device actions and apply them to multiple devices at once. Collections bundle together steps like setting location, toggling dark mode, and installing an app into a single repeatable workflow. Three starter presets ship with simvyn to get you started.
192
+
193
+ <p align="center"><img src="https://raw.githubusercontent.com/pranshuchittora/simvyn/main/docs/assets/collections.png" alt="Collections" width="700" /></p>
194
+
195
+ - Create, duplicate, and manage named collections
196
+ - Browse categorized action catalog across all modules
197
+ - Drag-and-drop step reordering
198
+ - Apply to multiple devices with compatibility checking
199
+ - Three built-in starter presets
200
+
201
+ ### Crash Logs
202
+
203
+ View iOS diagnostic reports (.ips files) and Android crash logs from logcat and tombstone dumps. Browse crash entries with timestamps and process information. Inspect full crash details without digging through device file systems.
204
+
205
+ <p align="center"><img src="https://raw.githubusercontent.com/pranshuchittora/simvyn/main/docs/assets/crash-logs.png" alt="Crash Logs" width="700" /></p>
206
+
207
+ - iOS diagnostic report (.ips) parsing
208
+ - Android logcat crash grouping by PID and tag
209
+ - Android tombstone dump retrieval
210
+ - Timestamped crash list with detail view
211
+
212
+ ### Clipboard
213
+
214
+ Read and write the device clipboard from the dashboard or CLI. Useful for quickly pasting test data into apps or inspecting what an app copied.
215
+
216
+ <p align="center"><img src="https://raw.githubusercontent.com/pranshuchittora/simvyn/main/docs/assets/clipboard.png" alt="Clipboard" width="700" /></p>
217
+
218
+ - Read current clipboard contents
219
+ - Write text to device clipboard
220
+ - Works with iOS Simulators and Android Emulators
221
+
222
+ ### Media
223
+
224
+ Push photos and videos directly into a device's camera roll or gallery. Drop files onto the dashboard to inject them without cables, email, or cloud transfers.
225
+
226
+ <p align="center"><img src="https://raw.githubusercontent.com/pranshuchittora/simvyn/main/docs/assets/media.png" alt="Media" width="700" /></p>
227
+
228
+ - Add photos and videos to device gallery via drag-and-drop
229
+ - Supports large files up to 500 MB
230
+ - Works with iOS Simulators and Android Emulators
231
+
232
+ ### Tool Settings
233
+
234
+ Configure the simvyn server, manage storage, and view diagnostics. Includes a debug report generator for filing issues.
235
+
236
+ <p align="center"><img src="https://raw.githubusercontent.com/pranshuchittora/simvyn/main/docs/assets/tool-settings.png" alt="Tool Settings" width="700" /></p>
237
+
238
+ - Server port, auto-open, and polling interval configuration
239
+ - Storage usage overview with data wipe option
240
+ - Diagnostics: Xcode version, devicectl availability, adb version
241
+ - One-click debug report for bug filing
242
+
243
+ ## Collections Guide
244
+
245
+ Collections let you bundle multiple device actions into a reusable sequence and apply them to any combination of devices with one click.
246
+
247
+ ### Creating a Collection
248
+
249
+ Open the Collections panel from the sidebar. Click **New Collection** and give it a name. The collection starts empty — you'll add steps from the action catalog.
250
+
251
+ ### Adding Steps
252
+
253
+ Click **Add Step** to browse the categorized action catalog. Actions are organized by module — Device Settings, Location, App Management, and more. Select an action, configure its parameters inline (coordinates, bundle IDs, toggle values), and it appears in your collection. Drag steps to reorder them.
254
+
255
+ ### Applying a Collection
256
+
257
+ Click **Apply** to open the apply modal. Select one or more target devices from the device list. A compatibility summary shows which steps will be skipped on incompatible platforms (for example, iOS-only actions on an Android device). Press **Cmd+Enter** to execute. A live status matrix shows per-step, per-device progress in real time.
258
+
259
+ ### Command Palette Integration
260
+
261
+ Saved collections appear in the command palette (**Cmd+K**). Search for a collection by name and apply it directly with the device picker — no need to navigate to the Collections panel.
262
+
263
+ ### Starter Collections
264
+
265
+ Three built-in presets ship with simvyn:
266
+
267
+ - **Dark Mode + Japanese Locale** — Enables dark mode and sets locale to Japanese
268
+ - **Screenshot Setup** — Configures status bar overrides for clean App Store screenshots
269
+ - **Reset Device State** — Clears location, resets settings, and erases app data
270
+
271
+ ### CLI Usage
69
272
 
70
273
  ```bash
71
- simvyn # Start dashboard
72
- simvyn device list # List all devices
73
- simvyn location set <device> 37.78 -122.41 # Set GPS location
74
- simvyn app install <device> ./app.apk # Install an app
75
- simvyn screenshot <device> # Take a screenshot
76
- simvyn logs <device> --level error # Stream error logs
77
- simvyn push <device> --payload payload.json # Send push notification
78
- simvyn device create <name> <type> <runtime> # Create iOS simulator
274
+ simvyn collections list # List all collections
275
+ simvyn collections apply <name> <devices...> # Apply a collection to devices
79
276
  ```
80
277
 
278
+ ## CLI Reference
279
+
280
+ Every feature is accessible from the command line. Run `simvyn` with no arguments to start the dashboard, or use any command below for headless operation.
281
+
282
+ | Command | Description |
283
+ | ------------------------------------------------- | --------------------------------------- |
284
+ | `simvyn` | Start the dashboard (default) |
285
+ | `simvyn device list` | List all devices |
286
+ | `simvyn device boot <device>` | Boot a device |
287
+ | `simvyn device shutdown <device>` | Shutdown a device |
288
+ | `simvyn device erase <device>` | Erase device content and settings |
289
+ | `simvyn device create <name> <type> <runtime>` | Create a new iOS simulator |
290
+ | `simvyn device clone <device> <name>` | Clone an iOS simulator |
291
+ | `simvyn device rename <device> <name>` | Rename an iOS simulator |
292
+ | `simvyn device delete <device>` | Delete an iOS simulator |
293
+ | `simvyn location set <device> <lat> <lng>` | Set GPS coordinates |
294
+ | `simvyn location route <device> <file>` | Play a GPX/KML route |
295
+ | `simvyn location clear <device>` | Clear simulated location |
296
+ | `simvyn app list <device>` | List installed apps |
297
+ | `simvyn app install <device> <path>` | Install an IPA or APK |
298
+ | `simvyn app uninstall <device> <bundle-id>` | Uninstall an app |
299
+ | `simvyn app launch <device> <bundle-id>` | Launch an app |
300
+ | `simvyn app terminate <device> <bundle-id>` | Terminate an app |
301
+ | `simvyn app info <device> <bundle-id>` | Show app details |
302
+ | `simvyn app clear-data <device> <bundle-id>` | Clear app data (Android) |
303
+ | `simvyn logs <device>` | Stream device logs |
304
+ | `simvyn screenshot <device>` | Capture a screenshot |
305
+ | `simvyn record <device>` | Record the screen |
306
+ | `simvyn link <device> <url>` | Open a deep link |
307
+ | `simvyn push <device>` | Send a push notification |
308
+ | `simvyn fs ls <device> <bundle-id> [path]` | List files in app sandbox |
309
+ | `simvyn fs pull <device> <bundle-id> <path>` | Download a file |
310
+ | `simvyn fs push <device> <bundle-id> <src> <dst>` | Upload a file |
311
+ | `simvyn db list <device> <bundle-id>` | List databases |
312
+ | `simvyn db query <device> <bundle-id> <db> <sql>` | Run a SQL query |
313
+ | `simvyn db prefs <device> <bundle-id>` | View SharedPreferences / NSUserDefaults |
314
+ | `simvyn keychain add <device> <cert>` | Add a root certificate |
315
+ | `simvyn keychain reset <device>` | Reset the keychain |
316
+ | `simvyn collections list` | List all collections |
317
+ | `simvyn collections show <id>` | Show collection details |
318
+ | `simvyn collections create <name>` | Create a new collection |
319
+ | `simvyn collections delete <id>` | Delete a collection |
320
+ | `simvyn collections duplicate <id>` | Duplicate a collection |
321
+ | `simvyn collections apply <name> <devices...>` | Apply a collection to devices |
322
+
81
323
  ## How It Works
82
324
 
83
- simvyn wraps `xcrun simctl` (iOS) and `adb` (Android) behind a unified interface. No SDK required — works with any app, no code changes needed. The web dashboard communicates with a local Fastify server over WebSocket for real-time device state and log streaming.
325
+ simvyn wraps `xcrun simctl` (iOS Simulators), `xcrun devicectl` (iOS physical devices), and `adb` (Android) behind a unified interface. No SDK required — works with any app, no code changes needed.
326
+
327
+ The architecture is built around a module system where each feature (location, logs, app management, etc.) is a self-contained plugin that registers its own API routes, CLI commands, and WebSocket handlers. The web dashboard communicates with a local Fastify server over a single multiplexed WebSocket connection for real-time device state and log streaming. Features that aren't available on a particular device type are automatically disabled with clear indicators in the UI.
84
328
 
85
329
  ## Supported Platforms
86
330
 
87
- | Platform | iOS Simulators | Android Emulators | Android Devices |
88
- | -------- | -------------- | ----------------- | --------------- |
89
- | macOS | Yes | Yes | Yes |
90
- | Linux | No | Yes | Yes |
331
+ | Platform | iOS Simulators | iOS Devices | Android Emulators | Android Devices |
332
+ | -------- | -------------- | ----------- | ----------------- | --------------- |
333
+ | macOS | Yes | Limited | Yes | Yes |
334
+ | Linux | No | No | Yes | Yes |
335
+
336
+ ### Real Device Support
337
+
338
+ Physical devices connected via USB are discovered automatically alongside simulators and emulators. The dashboard groups them into separate sections (Physical / Simulators / Emulators) and shows a toast when a device disconnects.
339
+
340
+ **Android physical devices** support nearly all features — app management, deep links, logs, screenshots, database inspector, file browser, and more. A few emulator-only features (location simulation via `adb emu geo`, battery simulation) are unavailable and clearly marked in the UI.
341
+
342
+ **iOS physical devices** require Xcode 15+ and use `xcrun devicectl` under the hood. Supported features include device discovery, app install/uninstall/launch/terminate, app listing, deep links, and file copy. Many features that rely on `simctl` (screenshots, screen recording, location simulation, clipboard, appearance, status bar, push notifications) are not available on physical iOS devices. Unsupported controls are disabled with tooltips explaining why. Collections automatically skip steps that don't apply to physical devices.
91
343
 
92
344
  ## License
93
345