@dynamicu/chromedebug-mcp 2.6.4 → 2.6.7

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/CLAUDE.md CHANGED
@@ -23,6 +23,9 @@ npm run server # Run standalone server
23
23
  npm run single-server # Run with --single-server flag
24
24
  npm run cleanup # Clean up stale Chrome processes
25
25
  npm run cleanup-force # Force cleanup of all Chrome processes
26
+
27
+ # Persistent server (won't be killed by other instances)
28
+ chromedebug-mcp --persistent # Start a persistent server for manual debugging
26
29
  ```
27
30
 
28
31
  ### Testing
@@ -235,8 +238,30 @@ Chrome Debug provides a CLI tool that can be used directly:
235
238
  ```bash
236
239
  chromedebug-mcp # Runs the MCP server (equivalent to npm start)
237
240
  npx chromedebug-mcp # Run without global installation
241
+
242
+ # Persistent server mode
243
+ chromedebug-mcp --persistent # Won't be killed by other instances
244
+ ```
245
+
246
+ ### Persistent Server Mode
247
+
248
+ The `--persistent` flag marks a server as persistent, preventing it from being killed when other ChromeDebug instances start. This is useful for:
249
+
250
+ - **Manual debugging servers**: Keep a debug server running while using Claude Code
251
+ - **Multiple projects**: Run persistent servers for different projects simultaneously
252
+ - **Development workflows**: Maintain a stable server instance across multiple Claude Code sessions
253
+
254
+ Example:
255
+ ```bash
256
+ # Terminal 1: Start persistent debug server
257
+ chromedebug-mcp --persistent --verbose
258
+
259
+ # Terminal 2: Use Claude Code normally
260
+ # Claude's MCP server will NOT kill the persistent server
238
261
  ```
239
262
 
263
+ See `PERSISTENT-FLAG-README.md` for detailed documentation and examples.
264
+
240
265
  The package name is `chromedebug-mcp` but the project is commonly referred to as Chrome Debug.
241
266
 
242
267
  ## Additional Architecture Notes
@@ -23,9 +23,13 @@ document.addEventListener('DOMContentLoaded', async () => {
23
23
  async function loadActivations() {
24
24
  try {
25
25
  // Get license key and instance ID from storage
26
- const stored = await chrome.storage.local.get(['ls_license_key', 'ls_instance_id', 'chromedebug_instance_id']);
26
+ // Note: ls_instance_id is the LemonSqueezy instance ID set during activation
27
+ const stored = await chrome.storage.local.get(['ls_license_key', 'ls_instance_id']);
27
28
  licenseKey = stored.ls_license_key;
28
- currentInstanceId = stored.chromedebug_instance_id;
29
+ currentInstanceId = stored.ls_instance_id;
30
+
31
+ console.log('[Activation Manager] Current instance ID:', currentInstanceId);
32
+ console.log('[Activation Manager] Storage:', stored);
29
33
 
30
34
  if (!licenseKey) {
31
35
  showError('License key not found. Please activate your license first.');
@@ -36,6 +40,9 @@ async function loadActivations() {
36
40
  const data = await licenseClient.listActivations(licenseKey);
37
41
  activations = data.activations || [];
38
42
 
43
+ console.log('[Activation Manager] Fetched activations:', JSON.stringify(activations, null, 2));
44
+ console.log('[Activation Manager] Comparing against current instance ID:', currentInstanceId);
45
+
39
46
  // Show activation status
40
47
  document.getElementById('activation-status').textContent =
41
48
  `${data.activationUsage} of ${data.activationLimit} activations used`;
@@ -72,8 +79,15 @@ function renderActivations() {
72
79
  item.className = 'activation-item';
73
80
 
74
81
  // Check if this is the current device
75
- const isCurrentDevice = activation.name === currentInstanceId ||
76
- activation.identifier === currentInstanceId;
82
+ // Compare against identifier (unique per activation), not name (same for all activations from this device)
83
+ const isCurrentDevice = currentInstanceId && activation.identifier === currentInstanceId;
84
+
85
+ console.log('[Activation Manager] Activation', index + 1, ':', {
86
+ name: activation.name,
87
+ identifier: activation.identifier,
88
+ currentInstanceId: currentInstanceId,
89
+ isCurrentDevice: isCurrentDevice
90
+ });
77
91
 
78
92
  if (isCurrentDevice) {
79
93
  item.classList.add('current-device');