claude-chrome-parallel 3.0.2 → 3.0.4

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 (3) hide show
  1. package/README.md +109 -206
  2. package/assets/demo.svg +91 -105
  3. package/package.json +1 -1
package/README.md CHANGED
@@ -1,16 +1,58 @@
1
1
  # Claude Chrome Parallel
2
2
 
3
- > **Run 20+ Claude Code browser sessions simultaneously, without conflicts.**
3
+ > **Automate your actual browser—with all your logins active.**
4
4
 
5
5
  [![npm version](https://badge.fury.io/js/claude-chrome-parallel.svg)](https://www.npmjs.com/package/claude-chrome-parallel)
6
6
  [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)
7
7
 
8
+ No more "Detached" errors. Run **20+ Claude Code sessions in parallel**.
9
+
10
+ - ✅ **Authenticated access**: Gmail, Salesforce, LinkedIn—already logged in
11
+ - ✅ **True parallelism**: 5 sites at once, 5x faster
12
+ - ✅ **Multi-account**: Same site, different accounts, isolated sessions
13
+ - ✅ **No bot detection**: Real browser profile, not headless
14
+
15
+ **This isn't just for developers.** Any web task requiring authentication—previously impossible to automate—is now possible with natural language.
16
+
8
17
  <p align="center">
9
- <img src="https://raw.githubusercontent.com/shaun0927/claude-chrome-parallel/main/assets/demo.svg" alt="Chrome Extension vs Claude Chrome Parallel - Animated comparison showing how Chrome Extension fails with 'Detached' error while Claude Chrome Parallel runs 5+ sessions simultaneously" width="100%">
18
+ <img src="https://raw.githubusercontent.com/shaun0927/claude-chrome-parallel/main/assets/demo.svg" alt="Chrome Extension vs Claude Chrome Parallel - Animated comparison showing parallel execution" width="100%">
10
19
  </p>
11
20
 
12
21
  ---
13
22
 
23
+ ## Quick Start
24
+
25
+ ```bash
26
+ npm install -g claude-chrome-parallel
27
+ ```
28
+
29
+ Add to `~/.claude.json`:
30
+
31
+ ```json
32
+ {
33
+ "mcpServers": {
34
+ "chrome-parallel": {
35
+ "command": "ccp",
36
+ "args": ["serve"]
37
+ }
38
+ }
39
+ }
40
+ ```
41
+
42
+ Restart Claude Code. Done.
43
+
44
+ ```
45
+ You: Take a screenshot of https://github.com
46
+
47
+ Claude: [Auto-launches browser, captures screenshot]
48
+ ```
49
+
50
+ ---
51
+
52
+ ## How It Works
53
+
54
+ The official Chrome extension crashes when running multiple Claude sessions ("Detached" error). We fixed that.
55
+
14
56
  ```
15
57
  ┌─────────────────────────────────────────────────────────────────────────────┐
16
58
  │ │
@@ -18,7 +60,7 @@
18
60
  │ (Google account) │ │
19
61
  │ │ │
20
62
  │ Claude Code 2 ─► Worker B ─► [Tab3] [Tab4] ─┼─► Chrome (single instance) │
21
- │ (Naver account) │ Port 9222 │
63
+ │ (LinkedIn account) │ Port 9222 │
22
64
  │ │ │
23
65
  │ Claude Code 3 ─► Worker C ─► [Tab5] [Tab6] ─┘ │
24
66
  │ (Amazon account) │
@@ -30,6 +72,48 @@
30
72
  └─────────────────────────────────────────────────────────────────────────────┘
31
73
  ```
32
74
 
75
+ **Independent CDP connections** per session = No shared state = No conflicts.
76
+
77
+ ---
78
+
79
+ ## Usage Examples
80
+
81
+ ### Multiple Accounts Simultaneously
82
+
83
+ ```
84
+ You: Create "google-personal" and "google-work" Workers,
85
+ then check the inbox of each Gmail account
86
+
87
+ Claude: [Creates 2 Workers → Each accesses Gmail with isolated sessions]
88
+ google-personal: Personal account - 3 new emails
89
+ google-work: Work account - 7 new emails
90
+ ```
91
+
92
+ ### Price Comparison (Parallel)
93
+
94
+ ```
95
+ You: Search for "iPhone 15" lowest price on Amazon, eBay, and Walmart simultaneously
96
+
97
+ Claude: [3 sites run in parallel]
98
+ Amazon: $999 (1.2s)
99
+ eBay: $945 (1.1s)
100
+ Walmart: $979 (1.3s)
101
+ Total time: 1.3s (vs 3.6s sequential)
102
+ ```
103
+
104
+ ### Parallel QA Testing
105
+
106
+ ```bash
107
+ # Terminal 1
108
+ claude -p "Test myapp.com/login"
109
+
110
+ # Terminal 2 (at the same time!)
111
+ claude -p "Test myapp.com/checkout"
112
+
113
+ # Terminal 3 (at the same time!)
114
+ claude -p "Monitor myapp.com/admin"
115
+ ```
116
+
33
117
  ---
34
118
 
35
119
  ## Core Features
@@ -92,134 +176,6 @@ workflow_init({
92
176
 
93
177
  ---
94
178
 
95
- ## Comparison
96
-
97
- | | Chrome Extension | Claude Chrome Parallel |
98
- |---|:---:|:---:|
99
- | **Concurrent Sessions** | ❌ 1 (Detached error) | ✅ **20+** |
100
- | **Worker Isolation** | ❌ | ✅ Isolated cookies/sessions |
101
- | **Multi-account Login** | ❌ | ✅ |
102
- | **Parallel Execution** | ❌ | ✅ |
103
- | **Network Simulation** | ❌ | ✅ 3G/4G/offline |
104
- | **Workflow Orchestration** | ❌ | ✅ |
105
- | **Auto Chrome Launch** | ❌ | ✅ |
106
-
107
- ---
108
-
109
- ## Why It Matters
110
-
111
- ### The Problem
112
-
113
- The official Chrome extension has a fatal flaw: **shared internal state**.
114
-
115
- ```
116
- Claude Code 1 ─┐
117
- ├─► Chrome Extension (shared state) ─► "Detached" error!
118
- Claude Code 2 ─┘
119
- ```
120
-
121
- When Session A takes a screenshot, Session B's connection breaks. You can only run **one session at a time**.
122
-
123
- ### The Solution
124
-
125
- Claude Chrome Parallel creates **independent CDP connections** per session:
126
-
127
- ```
128
- Claude Code 1 ─► CDP Connection 1 ─┐
129
- ├─► Chrome (port 9222)
130
- Claude Code 2 ─► CDP Connection 2 ─┘
131
-
132
- No shared state = No conflicts = 20+ concurrent sessions
133
- ```
134
-
135
- ### The Real Power: Authenticated Sessions
136
-
137
- Unlike headless automation, this runs in **your actual browser** with all your logins active:
138
-
139
- - ✅ Access Gmail, Salesforce, LinkedIn while logged in
140
- - ✅ No credential management or auth flows needed
141
- - ✅ Bypass bot detection (real browser profile)
142
- - ✅ Multiple accounts simultaneously (Worker isolation)
143
-
144
- **This isn't just for developers.** Any web task requiring authentication—previously impossible to automate—is now possible with natural language.
145
-
146
- ---
147
-
148
- ## Quick Start (2 minutes)
149
-
150
- ### 1. Install
151
-
152
- ```bash
153
- npm install -g claude-chrome-parallel
154
- ```
155
-
156
- ### 2. Configure Claude Code
157
-
158
- Add to `~/.claude.json`:
159
-
160
- ```json
161
- {
162
- "mcpServers": {
163
- "chrome-parallel": {
164
- "command": "ccp",
165
- "args": ["serve"]
166
- }
167
- }
168
- }
169
- ```
170
-
171
- ### 3. Restart Claude Code and use
172
-
173
- ```
174
- You: Take a screenshot of https://github.com
175
-
176
- Claude: [Auto-launches browser, captures screenshot]
177
- ```
178
-
179
- > **Tip:** `ccp` is a shorthand for `claude-chrome-parallel`.
180
-
181
- ---
182
-
183
- ## Usage Examples
184
-
185
- ### Multiple Accounts Simultaneously
186
-
187
- ```
188
- You: Create "google-personal" and "google-work" Workers,
189
- then check the inbox of each Gmail account
190
-
191
- Claude: [Creates 2 Workers → Each accesses Gmail with isolated sessions]
192
- google-personal: Personal account - 3 new emails
193
- google-work: Work account - 7 new emails
194
- ```
195
-
196
- ### Price Comparison (Parallel)
197
-
198
- ```
199
- You: Search for "iPhone 15" lowest price on Amazon, eBay, and Walmart simultaneously
200
-
201
- Claude: [3 sites run in parallel]
202
- Amazon: $999 (1.2s)
203
- eBay: $945 (1.1s)
204
- Walmart: $979 (1.3s)
205
- Total time: 1.3s (vs 3.6s sequential)
206
- ```
207
-
208
- ### Parallel QA Testing
209
-
210
- ```bash
211
- # Terminal 1
212
- claude -p "Test myapp.com/login"
213
-
214
- # Terminal 2 (at the same time!)
215
- claude -p "Test myapp.com/checkout"
216
-
217
- # Terminal 3 (at the same time!)
218
- claude -p "Monitor myapp.com/admin"
219
- ```
220
-
221
- ---
222
-
223
179
  ## Chrome-Sisyphus: Orchestration Skill
224
180
 
225
181
  For complex multi-site workflows, use the built-in **Chrome-Sisyphus** skill system.
@@ -251,7 +207,7 @@ For complex multi-site workflows, use the built-in **Chrome-Sisyphus** skill sys
251
207
  └─────────────────────────────────────────────────────────────────┘
252
208
  ```
253
209
 
254
- ### Why This Matters: Context Isolation
210
+ ### Context Isolation
255
211
 
256
212
  **Without isolation** (traditional approach):
257
213
  ```
@@ -274,41 +230,33 @@ Background Tasks: (isolated, don't pollute main)
274
230
  ├── Worker 1: own context, own screenshots
275
231
  ├── Worker 2: own context, own screenshots
276
232
  └── Worker 3: own context, own screenshots
277
-
278
- Scratchpad Files: (persistent state)
279
- └── .agent/chrome-sisyphus/*.md
280
233
  ```
281
234
 
282
- ### Usage
283
-
284
- Copy the `.claude/` folder to your project:
235
+ ### Setup
285
236
 
286
237
  ```bash
287
238
  cp -r node_modules/claude-chrome-parallel/.claude ~/.claude/
288
- # Or copy to your project root
289
239
  ```
290
240
 
291
- Then use in Claude Code:
241
+ Then use:
292
242
 
293
243
  ```
294
244
  /chrome-sisyphus Compare laptop prices on Amazon, BestBuy, and Newegg
295
245
  ```
296
246
 
297
- ### Skill Files
247
+ ---
298
248
 
299
- ```
300
- .claude/
301
- ├── commands/
302
- │ └── chrome-sisyphus.md # /chrome-sisyphus command
303
- └── skills/
304
- └── chrome-sisyphus/
305
- ├── SKILL.md # Skill overview
306
- ├── AGENTS.md # Agent specifications
307
- └── agents/
308
- ├── decomposer.md # Task decomposition
309
- ├── worker-agent.md # Worker execution (Ralph Loop)
310
- └── coordinator.md # Result integration
311
- ```
249
+ ## Comparison
250
+
251
+ | | Chrome Extension | Claude Chrome Parallel |
252
+ |---|:---:|:---:|
253
+ | **Concurrent Sessions** | ❌ 1 (Detached error) | ✅ **20+** |
254
+ | **Worker Isolation** | ❌ | ✅ Isolated cookies/sessions |
255
+ | **Multi-account Login** | ❌ | ✅ |
256
+ | **Parallel Execution** | ❌ | ✅ |
257
+ | **Network Simulation** | ❌ | ✅ 3G/4G/offline |
258
+ | **Workflow Orchestration** | ❌ | ✅ |
259
+ | **Auto Chrome Launch** | | ✅ |
312
260
 
313
261
  ---
314
262
 
@@ -353,54 +301,20 @@ Then use in Claude Code:
353
301
  ccp serve # Start MCP server (auto-run by Claude Code)
354
302
  ccp check # Check Chrome connection
355
303
  ccp status # View session status
356
- ccp status --json # JSON output
357
304
  ccp doctor # Diagnose installation
358
305
  ccp cleanup # Clean up old sessions
359
- ccp serve --port 9223 # Use custom port
360
306
  ```
361
307
 
362
308
  ---
363
309
 
364
- ## Performance
365
-
366
- | Concurrent Sessions | Success Rate |
367
- |:---:|:---:|
368
- | 5 | 100% |
369
- | 10 | 100% |
370
- | 15 | 100% |
371
- | 20 | 100% |
372
-
373
- ---
374
-
375
- ## Additional Features
376
-
377
- ### Network Simulation
378
-
379
- ```
380
- You: Test myapp.com loading time on 3G network
381
-
382
- Claude: [Applies 3G throttling: 1.5Mbps, 100ms latency]
383
- ```
384
-
385
- Presets: `offline`, `slow-2g`, `2g`, `3g`, `4g`, `fast-wifi`, `custom`
386
-
387
- ### Config Recovery
388
-
389
- ```bash
390
- # Auto-recover corrupted .claude.json
391
- ccp recover
392
-
393
- # List backups
394
- ccp recover --list-backups
395
- ```
396
-
397
- ### Session Isolation
310
+ ## Use Cases
398
311
 
399
- ```bash
400
- # Run Claude with isolated config (prevents race conditions)
401
- ccp launch
402
- ccp launch -p "Your prompt"
403
- ```
312
+ - **Business**: ERP/SaaS data extraction, invoice downloads, repetitive task automation
313
+ - **Research**: Login-required platform data collection, academic DB searches
314
+ - **Social Media**: Multi-account posting, message management, analytics
315
+ - **E-commerce**: Member price monitoring, inventory management, review responses
316
+ - **QA Testing**: Parallel scenario testing, network condition testing
317
+ - **Productivity**: Email organization, calendar management, bookmark management
404
318
 
405
319
  ---
406
320
 
@@ -422,17 +336,6 @@ chrome --remote-debugging-port=9222
422
336
 
423
337
  ---
424
338
 
425
- ## Use Cases
426
-
427
- - **Business**: ERP/SaaS data extraction, invoice downloads, repetitive task automation
428
- - **Research**: Login-required platform data collection, academic DB searches
429
- - **Social Media**: Multi-account posting, message management, analytics
430
- - **E-commerce**: Member price monitoring, inventory management, review responses
431
- - **QA Testing**: Parallel scenario testing, network condition testing
432
- - **Productivity**: Email organization, calendar management, bookmark management
433
-
434
- ---
435
-
436
339
  ## Development
437
340
 
438
341
  ```bash
package/assets/demo.svg CHANGED
@@ -1,4 +1,4 @@
1
- <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 800 400">
1
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 800 360">
2
2
  <defs>
3
3
  <linearGradient id="bgGrad" x1="0%" y1="0%" x2="100%" y2="100%">
4
4
  <stop offset="0%" style="stop-color:#1a1a2e"/>
@@ -8,176 +8,162 @@
8
8
  <stop offset="0%" style="stop-color:#00b894"/>
9
9
  <stop offset="100%" style="stop-color:#00cec9"/>
10
10
  </linearGradient>
11
- <linearGradient id="errorGrad" x1="0%" y1="0%" x2="100%" y2="0%">
12
- <stop offset="0%" style="stop-color:#e74c3c"/>
13
- <stop offset="100%" style="stop-color:#c0392b"/>
14
- </linearGradient>
15
- <linearGradient id="purpleGrad" x1="0%" y1="0%" x2="100%" y2="0%">
16
- <stop offset="0%" style="stop-color:#6c5ce7"/>
17
- <stop offset="100%" style="stop-color:#a29bfe"/>
18
- </linearGradient>
19
11
  </defs>
20
12
 
21
13
  <!-- Background -->
22
- <rect width="800" height="400" fill="url(#bgGrad)"/>
14
+ <rect width="800" height="360" fill="url(#bgGrad)"/>
23
15
 
24
16
  <!-- Title -->
25
- <text x="400" y="35" text-anchor="middle" fill="#fff" font-family="system-ui, -apple-system, sans-serif" font-size="18" font-weight="bold">
17
+ <text x="400" y="28" text-anchor="middle" fill="#fff" font-family="system-ui, -apple-system, sans-serif" font-size="15" font-weight="bold">
26
18
  Chrome Extension vs Claude Chrome Parallel
27
19
  </text>
28
20
 
29
21
  <!-- LEFT SIDE: Chrome Extension (Failing) -->
30
- <g transform="translate(30, 60)">
22
+ <g transform="translate(25, 45)">
31
23
  <!-- Header -->
32
- <rect x="0" y="0" width="350" height="30" rx="8" ry="8" fill="#2d3436"/>
33
- <circle cx="15" cy="15" r="5" fill="#e74c3c"/>
34
- <circle cx="32" cy="15" r="5" fill="#f39c12"/>
35
- <circle cx="49" cy="15" r="5" fill="#27ae60"/>
36
- <text x="175" y="20" text-anchor="middle" fill="#b2bec3" font-family="monospace" font-size="12">Chrome Extension</text>
24
+ <rect x="0" y="0" width="360" height="26" rx="6" ry="6" fill="#2d3436"/>
25
+ <circle cx="14" cy="13" r="4" fill="#e74c3c"/>
26
+ <circle cx="28" cy="13" r="4" fill="#f39c12"/>
27
+ <circle cx="42" cy="13" r="4" fill="#27ae60"/>
28
+ <text x="180" y="17" text-anchor="middle" fill="#b2bec3" font-family="monospace" font-size="11">Chrome Extension</text>
37
29
 
38
30
  <!-- Terminal body -->
39
- <rect x="0" y="30" width="350" height="290" rx="0" ry="0" fill="#0d1117"/>
40
- <rect x="0" y="310" width="350" height="10" rx="0" ry="0" fill="#2d3436"/>
31
+ <rect x="0" y="26" width="360" height="260" fill="#0d1117"/>
32
+ <rect x="0" y="276" width="360" height="10" rx="0" ry="0" fill="#2d3436"/>
41
33
 
42
- <!-- Session 1 - Success then stops -->
43
- <text x="10" y="55" fill="#6c5ce7" font-family="monospace" font-size="11">
44
- <tspan>$ claude "Screenshot github.com"</tspan>
45
- </text>
46
- <text x="10" y="75" fill="#00b894" font-family="monospace" font-size="11">
47
- <tspan>Session 1: Taking screenshot...</tspan>
48
- <animate attributeName="opacity" values="0;1;1" dur="4s" repeatCount="indefinite"/>
49
- </text>
50
- <text x="10" y="95" fill="#00b894" font-family="monospace" font-size="11">
51
- <tspan>✓ Screenshot saved</tspan>
52
- <animate attributeName="opacity" values="0;0;1;1" dur="4s" repeatCount="indefinite"/>
34
+ <!-- Session 1 - Starts, completes -->
35
+ <text x="10" y="48" fill="#6c5ce7" font-family="monospace" font-size="11">$ claude "Screenshot github.com"</text>
36
+
37
+ <!-- Session 1 progress bar -->
38
+ <rect x="10" y="56" width="0" height="12" rx="2" fill="url(#successGrad)">
39
+ <animate attributeName="width" values="0;0;50;100;140;140;140;140;140;140;140" dur="10s" repeatCount="indefinite"/>
40
+ </rect>
41
+ <text x="10" y="82" fill="#00b894" font-family="monospace" font-size="11">
42
+ <tspan>✓ Session 1 completed</tspan>
43
+ <animate attributeName="opacity" values="0;0;0;0;1;1;1;1;1;1;1" dur="10s" repeatCount="indefinite"/>
53
44
  </text>
54
45
 
55
- <!-- Session 2 - Error -->
56
- <text x="10" y="130" fill="#6c5ce7" font-family="monospace" font-size="11">
46
+ <!-- Session 2 - Tries to start, gets error -->
47
+ <text x="10" y="110" fill="#6c5ce7" font-family="monospace" font-size="11">
57
48
  <tspan>$ claude "Screenshot google.com"</tspan>
58
- <animate attributeName="opacity" values="0;0;0;1;1" dur="4s" repeatCount="indefinite"/>
49
+ <animate attributeName="opacity" values="0;0;0;0;0;1;1;1;1;1;1" dur="10s" repeatCount="indefinite"/>
59
50
  </text>
60
- <text x="10" y="150" fill="#fdcb6e" font-family="monospace" font-size="11">
61
- <tspan>Session 2: Connecting...</tspan>
62
- <animate attributeName="opacity" values="0;0;0;0;1;1;0" dur="4s" repeatCount="indefinite"/>
51
+
52
+ <!-- Session 2 attempting -->
53
+ <text x="10" y="130" fill="#fdcb6e" font-family="monospace" font-size="11">
54
+ <tspan>Connecting to browser...</tspan>
55
+ <animate attributeName="opacity" values="0;0;0;0;0;0;1;0;0;0;0" dur="10s" repeatCount="indefinite"/>
63
56
  </text>
64
57
 
65
- <!-- Error message with animation -->
58
+ <!-- Error box -->
66
59
  <g>
67
- <animate attributeName="opacity" values="0;0;0;0;0;1;1" dur="4s" repeatCount="indefinite"/>
68
- <rect x="5" y="165" width="340" height="50" rx="4" fill="#2d1b1b"/>
69
- <text x="15" y="185" fill="#e74c3c" font-family="monospace" font-size="11" font-weight="bold">
60
+ <animate attributeName="opacity" values="0;0;0;0;0;0;0;1;1;1;1" dur="10s" repeatCount="indefinite"/>
61
+ <rect x="10" y="140" width="340" height="50" rx="4" fill="#2d1b1b"/>
62
+ <text x="20" y="160" fill="#e74c3c" font-family="monospace" font-size="11" font-weight="bold">
70
63
  ✗ Error: Session Detached
71
64
  </text>
72
- <text x="15" y="205" fill="#e17055" font-family="monospace" font-size="10">
65
+ <text x="20" y="178" fill="#e17055" font-family="monospace" font-size="10">
73
66
  Target closed. Another session took control.
74
67
  </text>
75
68
  </g>
76
69
 
77
70
  <!-- Blinking cursor -->
78
- <rect x="10" y="230" width="8" height="14" fill="#fff">
71
+ <rect x="10" y="205" width="8" height="14" fill="#fff">
79
72
  <animate attributeName="opacity" values="1;0;1" dur="1s" repeatCount="indefinite"/>
80
73
  </rect>
81
74
 
82
- <!-- Status bar -->
83
- <text x="175" y="335" text-anchor="middle" fill="#e74c3c" font-family="system-ui" font-size="14" font-weight="bold">
75
+ <!-- Status -->
76
+ <text x="180" y="255" text-anchor="middle" fill="#e74c3c" font-family="system-ui" font-size="13" font-weight="bold">
84
77
  ❌ Only 1 session at a time
85
78
  </text>
86
79
  </g>
87
80
 
88
81
  <!-- VS Divider -->
89
- <text x="400" y="220" text-anchor="middle" fill="#636e72" font-family="system-ui" font-size="24" font-weight="bold">VS</text>
82
+ <text x="400" y="190" text-anchor="middle" fill="#636e72" font-family="system-ui" font-size="20" font-weight="bold">VS</text>
90
83
 
91
84
  <!-- RIGHT SIDE: Claude Chrome Parallel (Success) -->
92
- <g transform="translate(420, 60)">
85
+ <g transform="translate(415, 45)">
93
86
  <!-- Header -->
94
- <rect x="0" y="0" width="350" height="30" rx="8" ry="8" fill="#2d3436"/>
95
- <circle cx="15" cy="15" r="5" fill="#e74c3c"/>
96
- <circle cx="32" cy="15" r="5" fill="#f39c12"/>
97
- <circle cx="49" cy="15" r="5" fill="#27ae60"/>
98
- <text x="175" y="20" text-anchor="middle" fill="#00b894" font-family="monospace" font-size="12" font-weight="bold">Claude Chrome Parallel</text>
87
+ <rect x="0" y="0" width="360" height="26" rx="6" ry="6" fill="#2d3436"/>
88
+ <circle cx="14" cy="13" r="4" fill="#e74c3c"/>
89
+ <circle cx="28" cy="13" r="4" fill="#f39c12"/>
90
+ <circle cx="42" cy="13" r="4" fill="#27ae60"/>
91
+ <text x="180" y="17" text-anchor="middle" fill="#00b894" font-family="monospace" font-size="11" font-weight="bold">Claude Chrome Parallel</text>
99
92
 
100
93
  <!-- Terminal body -->
101
- <rect x="0" y="30" width="350" height="290" rx="0" ry="0" fill="#0d1117"/>
102
- <rect x="0" y="310" width="350" height="10" rx="0" ry="0" fill="#2d3436"/>
94
+ <rect x="0" y="26" width="360" height="260" fill="#0d1117"/>
95
+ <rect x="0" y="276" width="360" height="10" rx="0" ry="0" fill="#2d3436"/>
96
+
97
+ <!-- ALL 5 SESSIONS START AT THE SAME TIME -->
103
98
 
104
- <!-- Multiple sessions all succeeding -->
105
99
  <!-- Session 1 -->
106
- <text x="10" y="55" fill="#6c5ce7" font-family="monospace" font-size="11">Session 1: github.com</text>
107
- <rect x="150" y="43" width="0" height="14" rx="2" fill="url(#successGrad)">
108
- <animate attributeName="width" values="0;80;80" dur="4s" repeatCount="indefinite"/>
100
+ <text x="10" y="48" fill="#a29bfe" font-family="monospace" font-size="11">Session 1: github.com</text>
101
+ <rect x="150" y="38" width="0" height="12" rx="2" fill="url(#successGrad)">
102
+ <animate attributeName="width" values="0;0;30;60;90;120;120;120;120;120;120" dur="10s" repeatCount="indefinite"/>
109
103
  </rect>
110
- <text x="240" y="55" fill="#00b894" font-family="monospace" font-size="11">
111
- <tspan>✓ Done</tspan>
112
- <animate attributeName="opacity" values="0;0;1;1" dur="4s" repeatCount="indefinite"/>
104
+ <text x="280" y="48" fill="#00b894" font-family="monospace" font-size="11">
105
+ <tspan>✓</tspan>
106
+ <animate attributeName="opacity" values="0;0;0;0;0;1;1;1;1;1;1" dur="10s" repeatCount="indefinite"/>
113
107
  </text>
114
108
 
115
- <!-- Session 2 -->
116
- <text x="10" y="80" fill="#6c5ce7" font-family="monospace" font-size="11">Session 2: google.com</text>
117
- <rect x="150" y="68" width="0" height="14" rx="2" fill="url(#successGrad)">
118
- <animate attributeName="width" values="0;0;70;70" dur="4s" repeatCount="indefinite"/>
109
+ <!-- Session 2 - starts same time -->
110
+ <text x="10" y="70" fill="#a29bfe" font-family="monospace" font-size="11">Session 2: google.com</text>
111
+ <rect x="150" y="60" width="0" height="12" rx="2" fill="url(#successGrad)">
112
+ <animate attributeName="width" values="0;0;25;55;85;110;110;110;110;110;110" dur="10s" repeatCount="indefinite"/>
119
113
  </rect>
120
- <text x="230" y="80" fill="#00b894" font-family="monospace" font-size="11">
121
- <tspan>✓ Done</tspan>
122
- <animate attributeName="opacity" values="0;0;0;1;1" dur="4s" repeatCount="indefinite"/>
114
+ <text x="270" y="70" fill="#00b894" font-family="monospace" font-size="11">
115
+ <tspan>✓</tspan>
116
+ <animate attributeName="opacity" values="0;0;0;0;0;1;1;1;1;1;1" dur="10s" repeatCount="indefinite"/>
123
117
  </text>
124
118
 
125
- <!-- Session 3 -->
126
- <text x="10" y="105" fill="#6c5ce7" font-family="monospace" font-size="11">Session 3: amazon.com</text>
127
- <rect x="150" y="93" width="0" height="14" rx="2" fill="url(#successGrad)">
128
- <animate attributeName="width" values="0;0;0;90;90" dur="4s" repeatCount="indefinite"/>
119
+ <!-- Session 3 - starts same time -->
120
+ <text x="10" y="92" fill="#a29bfe" font-family="monospace" font-size="11">Session 3: amazon.com</text>
121
+ <rect x="150" y="82" width="0" height="12" rx="2" fill="url(#successGrad)">
122
+ <animate attributeName="width" values="0;0;35;70;100;130;130;130;130;130;130" dur="10s" repeatCount="indefinite"/>
129
123
  </rect>
130
- <text x="250" y="105" fill="#00b894" font-family="monospace" font-size="11">
131
- <tspan>✓ Done</tspan>
132
- <animate attributeName="opacity" values="0;0;0;0;1;1" dur="4s" repeatCount="indefinite"/>
124
+ <text x="290" y="92" fill="#00b894" font-family="monospace" font-size="11">
125
+ <tspan>✓</tspan>
126
+ <animate attributeName="opacity" values="0;0;0;0;0;1;1;1;1;1;1" dur="10s" repeatCount="indefinite"/>
133
127
  </text>
134
128
 
135
- <!-- Session 4 -->
136
- <text x="10" y="130" fill="#6c5ce7" font-family="monospace" font-size="11">Session 4: naver.com</text>
137
- <rect x="150" y="118" width="0" height="14" rx="2" fill="url(#successGrad)">
138
- <animate attributeName="width" values="0;0;0;0;60;60" dur="4s" repeatCount="indefinite"/>
129
+ <!-- Session 4 - starts same time (replaced naver with linkedin) -->
130
+ <text x="10" y="114" fill="#a29bfe" font-family="monospace" font-size="11">Session 4: linkedin.com</text>
131
+ <rect x="150" y="104" width="0" height="12" rx="2" fill="url(#successGrad)">
132
+ <animate attributeName="width" values="0;0;20;50;80;105;105;105;105;105;105" dur="10s" repeatCount="indefinite"/>
139
133
  </rect>
140
- <text x="220" y="130" fill="#00b894" font-family="monospace" font-size="11">
141
- <tspan>✓ Done</tspan>
142
- <animate attributeName="opacity" values="0;0;0;0;0;1;1" dur="4s" repeatCount="indefinite"/>
134
+ <text x="265" y="114" fill="#00b894" font-family="monospace" font-size="11">
135
+ <tspan>✓</tspan>
136
+ <animate attributeName="opacity" values="0;0;0;0;0;1;1;1;1;1;1" dur="10s" repeatCount="indefinite"/>
143
137
  </text>
144
138
 
145
- <!-- Session 5 -->
146
- <text x="10" y="155" fill="#6c5ce7" font-family="monospace" font-size="11">Session 5: twitter.com</text>
147
- <rect x="150" y="143" width="0" height="14" rx="2" fill="url(#successGrad)">
148
- <animate attributeName="width" values="0;0;0;0;0;75;75" dur="4s" repeatCount="indefinite"/>
139
+ <!-- Session 5 - starts same time -->
140
+ <text x="10" y="136" fill="#a29bfe" font-family="monospace" font-size="11">Session 5: twitter.com</text>
141
+ <rect x="150" y="126" width="0" height="12" rx="2" fill="url(#successGrad)">
142
+ <animate attributeName="width" values="0;0;28;58;88;115;115;115;115;115;115" dur="10s" repeatCount="indefinite"/>
149
143
  </rect>
150
- <text x="235" y="155" fill="#00b894" font-family="monospace" font-size="11">
151
- <tspan>✓ Done</tspan>
152
- <animate attributeName="opacity" values="0;0;0;0;0;0;1" dur="4s" repeatCount="indefinite"/>
144
+ <text x="275" y="136" fill="#00b894" font-family="monospace" font-size="11">
145
+ <tspan>✓</tspan>
146
+ <animate attributeName="opacity" values="0;0;0;0;0;1;1;1;1;1;1" dur="10s" repeatCount="indefinite"/>
153
147
  </text>
154
148
 
155
- <!-- Stats box -->
149
+ <!-- Result summary box -->
156
150
  <g>
157
- <animate attributeName="opacity" values="0;0;0;0;0;0;1" dur="4s" repeatCount="indefinite"/>
158
- <rect x="10" y="180" width="330" height="80" rx="6" fill="#1e3a1e"/>
159
- <text x="175" y="205" text-anchor="middle" fill="#00b894" font-family="system-ui" font-size="13" font-weight="bold">
151
+ <animate attributeName="opacity" values="0;0;0;0;0;0;1;1;1;1;1" dur="10s" repeatCount="indefinite"/>
152
+ <rect x="10" y="155" width="340" height="65" rx="6" fill="#1a3a1a"/>
153
+ <text x="180" y="178" text-anchor="middle" fill="#00b894" font-family="system-ui" font-size="12" font-weight="bold">
160
154
  All 5 sessions completed in parallel!
161
155
  </text>
162
- <text x="175" y="230" text-anchor="middle" fill="#55efc4" font-family="monospace" font-size="12">
163
- Total time: 1.2s (vs 6.0s sequential)
156
+ <text x="180" y="198" text-anchor="middle" fill="#55efc4" font-family="monospace" font-size="11">
157
+ Total: 1.4s (Sequential would take 7.0s)
164
158
  </text>
165
- <text x="175" y="250" text-anchor="middle" fill="#81ecec" font-family="monospace" font-size="11">
159
+ <text x="180" y="214" text-anchor="middle" fill="#81ecec" font-family="system-ui" font-size="11">
166
160
  ⚡ 5x faster
167
161
  </text>
168
162
  </g>
169
163
 
170
- <!-- Status bar -->
171
- <text x="175" y="335" text-anchor="middle" fill="#00b894" font-family="system-ui" font-size="14" font-weight="bold">
164
+ <!-- Status -->
165
+ <text x="180" y="255" text-anchor="middle" fill="#00b894" font-family="system-ui" font-size="13" font-weight="bold">
172
166
  ✅ 20+ concurrent sessions
173
167
  </text>
174
168
  </g>
175
-
176
- <!-- Bottom CTA -->
177
- <g>
178
- <rect x="250" y="365" width="300" height="28" rx="14" fill="url(#purpleGrad)"/>
179
- <text x="400" y="384" text-anchor="middle" fill="#fff" font-family="system-ui" font-size="12" font-weight="bold">
180
- npm install -g claude-chrome-parallel
181
- </text>
182
- </g>
183
169
  </svg>
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "claude-chrome-parallel",
3
- "version": "3.0.2",
3
+ "version": "3.0.4",
4
4
  "description": "MCP server for parallel Claude Code browser sessions - no more 'Detached' errors",
5
5
  "main": "dist/index.js",
6
6
  "bin": {