@dynamicu/chromedebug-mcp 2.6.7 → 2.7.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.
Files changed (39) hide show
  1. package/CLAUDE.md +1 -1
  2. package/README.md +1 -1
  3. package/chrome-extension/background.js +611 -505
  4. package/chrome-extension/browser-recording-manager.js +1 -1
  5. package/chrome-extension/chrome-debug-logger.js +168 -0
  6. package/chrome-extension/console-interception-library.js +430 -0
  7. package/chrome-extension/content.css +16 -16
  8. package/chrome-extension/content.js +458 -126
  9. package/chrome-extension/extension-config.js +1 -1
  10. package/chrome-extension/license-helper.js +26 -0
  11. package/chrome-extension/manifest.free.json +0 -3
  12. package/chrome-extension/options.js +1 -1
  13. package/chrome-extension/popup.html +221 -191
  14. package/chrome-extension/popup.js +88 -379
  15. package/chrome-extension/pro/enhanced-capture.js +406 -0
  16. package/chrome-extension/pro/frame-editor.html +410 -0
  17. package/chrome-extension/pro/frame-editor.js +1496 -0
  18. package/chrome-extension/pro/function-tracker.js +843 -0
  19. package/chrome-extension/pro/jszip.min.js +13 -0
  20. package/dist/chromedebug-extension-free.zip +0 -0
  21. package/package.json +3 -1
  22. package/scripts/webpack.config.free.cjs +8 -8
  23. package/scripts/webpack.config.pro.cjs +2 -0
  24. package/src/cli.js +2 -2
  25. package/src/database.js +55 -7
  26. package/src/index.js +9 -6
  27. package/src/mcp/server.js +2 -2
  28. package/src/services/process-manager.js +10 -6
  29. package/src/services/process-tracker.js +10 -5
  30. package/src/services/profile-manager.js +17 -2
  31. package/src/validation/schemas.js +2 -2
  32. package/src/index-direct.js +0 -157
  33. package/src/index-modular.js +0 -219
  34. package/src/index-monolithic-backup.js +0 -2230
  35. package/src/legacy/chrome-controller-old.js +0 -1406
  36. package/src/legacy/index-express.js +0 -625
  37. package/src/legacy/index-old.js +0 -977
  38. package/src/legacy/routes.js +0 -260
  39. package/src/legacy/shared-storage.js +0 -101
@@ -0,0 +1,410 @@
1
+ <!DOCTYPE html>
2
+ <html>
3
+ <head>
4
+ <meta charset="utf-8">
5
+ <title>Chrome Debug Frame Editor</title>
6
+ <style>
7
+ * {
8
+ box-sizing: border-box;
9
+ margin: 0;
10
+ padding: 0;
11
+ }
12
+
13
+ body {
14
+ font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Arial, sans-serif;
15
+ background: #f5f5f5;
16
+ color: #333;
17
+ }
18
+
19
+ .header {
20
+ background: #fff;
21
+ border-bottom: 1px solid #ddd;
22
+ padding: 20px;
23
+ position: fixed;
24
+ top: 0;
25
+ left: 0;
26
+ right: 0;
27
+ z-index: 100;
28
+ box-shadow: 0 2px 4px rgba(0,0,0,0.1);
29
+ }
30
+
31
+ .header h1 {
32
+ font-size: 24px;
33
+ margin-bottom: 10px;
34
+ }
35
+
36
+ .header-info {
37
+ display: flex;
38
+ gap: 20px;
39
+ align-items: center;
40
+ margin-bottom: 15px;
41
+ font-size: 14px;
42
+ color: #666;
43
+ }
44
+
45
+ .header-controls {
46
+ display: flex;
47
+ gap: 10px;
48
+ align-items: center;
49
+ }
50
+
51
+ .btn {
52
+ padding: 8px 16px;
53
+ border: none;
54
+ border-radius: 4px;
55
+ font-size: 14px;
56
+ cursor: pointer;
57
+ transition: all 0.2s;
58
+ }
59
+
60
+ .btn-primary {
61
+ background: #4A90E2;
62
+ color: white;
63
+ }
64
+
65
+ .btn-primary:hover {
66
+ background: #357ABD;
67
+ }
68
+
69
+ .btn-secondary {
70
+ background: #fff;
71
+ color: #333;
72
+ border: 1px solid #ddd;
73
+ }
74
+
75
+ .btn-secondary:hover {
76
+ background: #f5f5f5;
77
+ }
78
+
79
+ .btn-danger {
80
+ background: #f44336;
81
+ color: white;
82
+ }
83
+
84
+ .btn-danger:hover {
85
+ background: #d32f2f;
86
+ }
87
+
88
+ .btn:disabled {
89
+ opacity: 0.5;
90
+ cursor: not-allowed;
91
+ }
92
+
93
+ .content {
94
+ margin-top: 140px;
95
+ padding: 20px;
96
+ }
97
+
98
+ .frames-container {
99
+ background: #fff;
100
+ border-radius: 8px;
101
+ overflow: hidden;
102
+ box-shadow: 0 2px 4px rgba(0,0,0,0.1);
103
+ }
104
+
105
+ .frame-item {
106
+ border-bottom: 1px solid #eee;
107
+ padding: 15px;
108
+ display: flex;
109
+ gap: 15px;
110
+ align-items: start;
111
+ transition: background 0.2s;
112
+ }
113
+
114
+ .frame-item:hover {
115
+ background: #f9f9f9;
116
+ }
117
+
118
+ .frame-item.selected {
119
+ background: #e3f2fd;
120
+ }
121
+
122
+ .frame-checkbox {
123
+ margin-top: 40px;
124
+ }
125
+
126
+ .frame-thumbnail {
127
+ width: 160px;
128
+ height: 90px;
129
+ background: #f0f0f0;
130
+ border-radius: 4px;
131
+ overflow: hidden;
132
+ flex-shrink: 0;
133
+ }
134
+
135
+ .frame-thumbnail img {
136
+ width: 100%;
137
+ height: 100%;
138
+ object-fit: cover;
139
+ }
140
+
141
+ .frame-placeholder {
142
+ width: 100%;
143
+ height: 100%;
144
+ display: flex;
145
+ align-items: center;
146
+ justify-content: center;
147
+ color: #999;
148
+ font-size: 12px;
149
+ }
150
+
151
+ .frame-info {
152
+ flex: 1;
153
+ }
154
+
155
+ .frame-header {
156
+ display: flex;
157
+ justify-content: space-between;
158
+ align-items: center;
159
+ margin-bottom: 8px;
160
+ }
161
+
162
+ .frame-title {
163
+ font-weight: 500;
164
+ font-size: 16px;
165
+ }
166
+
167
+ .frame-timestamp {
168
+ font-size: 13px;
169
+ color: #666;
170
+ }
171
+
172
+ .frame-logs {
173
+ margin-top: 8px;
174
+ }
175
+
176
+ .frame-log-summary {
177
+ font-size: 13px;
178
+ color: #666;
179
+ cursor: pointer;
180
+ display: flex;
181
+ align-items: center;
182
+ gap: 5px;
183
+ }
184
+
185
+ .frame-log-summary:hover {
186
+ color: #4A90E2;
187
+ }
188
+
189
+ .log-count {
190
+ background: #e0e0e0;
191
+ padding: 2px 8px;
192
+ border-radius: 12px;
193
+ font-size: 12px;
194
+ }
195
+
196
+ .frame-logs-expanded {
197
+ margin-top: 10px;
198
+ padding: 10px;
199
+ background: #f5f5f5;
200
+ border-radius: 4px;
201
+ font-family: monospace;
202
+ font-size: 12px;
203
+ max-height: 200px;
204
+ overflow-y: auto;
205
+ }
206
+
207
+ .log-entry {
208
+ margin-bottom: 5px;
209
+ display: flex;
210
+ gap: 10px;
211
+ }
212
+
213
+ .log-level {
214
+ font-weight: bold;
215
+ text-transform: uppercase;
216
+ width: 50px;
217
+ }
218
+
219
+ .log-level.log { color: #666; }
220
+ .log-level.info { color: #2196F3; }
221
+ .log-level.warn { color: #FF9800; }
222
+ .log-level.error { color: #f44336; }
223
+
224
+ .log-time {
225
+ color: #999;
226
+ width: 60px;
227
+ }
228
+
229
+ .log-message {
230
+ flex: 1;
231
+ word-break: break-word;
232
+ }
233
+
234
+ .loading {
235
+ text-align: center;
236
+ padding: 40px;
237
+ color: #666;
238
+ }
239
+
240
+ .error {
241
+ background: #ffebee;
242
+ color: #c62828;
243
+ padding: 20px;
244
+ border-radius: 4px;
245
+ margin: 20px;
246
+ }
247
+
248
+ .selection-info {
249
+ background: #e3f2fd;
250
+ padding: 10px 15px;
251
+ border-radius: 4px;
252
+ font-size: 14px;
253
+ color: #1565C0;
254
+ margin-left: auto;
255
+ }
256
+
257
+ .empty-state {
258
+ text-align: center;
259
+ padding: 60px 20px;
260
+ color: #666;
261
+ }
262
+
263
+ .empty-state h2 {
264
+ font-size: 20px;
265
+ margin-bottom: 10px;
266
+ color: #333;
267
+ }
268
+
269
+ /* Modal styles for enlarged frame view */
270
+ .modal-overlay {
271
+ position: fixed;
272
+ top: 0;
273
+ left: 0;
274
+ right: 0;
275
+ bottom: 0;
276
+ background: rgba(0, 0, 0, 0.8);
277
+ display: flex;
278
+ align-items: center;
279
+ justify-content: center;
280
+ z-index: 1000;
281
+ opacity: 0;
282
+ visibility: hidden;
283
+ transition: all 0.3s ease;
284
+ }
285
+
286
+ .modal-overlay.visible {
287
+ opacity: 1;
288
+ visibility: visible;
289
+ }
290
+
291
+ .modal-content {
292
+ position: relative;
293
+ max-width: 90vw;
294
+ max-height: 90vh;
295
+ background: white;
296
+ border-radius: 8px;
297
+ overflow: hidden;
298
+ box-shadow: 0 20px 60px rgba(0, 0, 0, 0.5);
299
+ transform: scale(0.9);
300
+ transition: transform 0.3s ease;
301
+ }
302
+
303
+ .modal-overlay.visible .modal-content {
304
+ transform: scale(1);
305
+ }
306
+
307
+ .modal-header {
308
+ padding: 15px 20px;
309
+ background: #f5f5f5;
310
+ border-bottom: 1px solid #ddd;
311
+ display: flex;
312
+ justify-content: space-between;
313
+ align-items: center;
314
+ }
315
+
316
+ .modal-title {
317
+ font-size: 16px;
318
+ font-weight: 500;
319
+ margin: 0;
320
+ }
321
+
322
+ .modal-close {
323
+ background: none;
324
+ border: none;
325
+ font-size: 24px;
326
+ cursor: pointer;
327
+ color: #666;
328
+ padding: 0;
329
+ width: 30px;
330
+ height: 30px;
331
+ display: flex;
332
+ align-items: center;
333
+ justify-content: center;
334
+ border-radius: 50%;
335
+ transition: background 0.2s;
336
+ }
337
+
338
+ .modal-close:hover {
339
+ background: #e0e0e0;
340
+ }
341
+
342
+ .modal-image {
343
+ max-width: 100%;
344
+ max-height: calc(90vh - 120px);
345
+ display: block;
346
+ }
347
+
348
+ .frame-thumbnail {
349
+ cursor: pointer;
350
+ transition: transform 0.2s;
351
+ }
352
+
353
+ .frame-thumbnail:hover {
354
+ transform: scale(1.05);
355
+ }
356
+ </style>
357
+ </head>
358
+ <body>
359
+ <div class="header">
360
+ <h1 id="editorTitle">Frame Editor</h1>
361
+ <div class="header-info">
362
+ <div id="sessionInfo">Loading session...</div>
363
+ <div class="selection-info" id="selectionInfo" style="display: none;">
364
+ <span id="selectedCount">0</span> <span id="selectionType">frames</span> selected
365
+ </div>
366
+ </div>
367
+ <div class="header-controls">
368
+ <button class="btn btn-secondary" id="selectAllBtn">Select All</button>
369
+ <button class="btn btn-secondary" id="selectNoneBtn">Select None</button>
370
+ <button class="btn btn-secondary" id="invertSelectionBtn">Invert Selection</button>
371
+ <button class="btn btn-danger" id="deleteSelectedBtn" disabled>Delete Selected</button>
372
+ <button class="btn btn-primary" id="saveEditedBtn" disabled>Save as New Recording</button>
373
+ </div>
374
+ </div>
375
+
376
+ <div class="content">
377
+ <div id="loadingContainer" class="loading">
378
+ Loading frames...
379
+ </div>
380
+
381
+ <div id="errorContainer" class="error" style="display: none;">
382
+ </div>
383
+
384
+ <div id="emptyContainer" class="empty-state" style="display: none;">
385
+ <h2>No Recording Selected</h2>
386
+ <p>Please select a recording from the extension popup to edit.</p>
387
+ </div>
388
+
389
+ <div class="frames-container" id="framesContainer" style="display: none;">
390
+ </div>
391
+ </div>
392
+
393
+ <!-- Modal for enlarged frame view -->
394
+ <div class="modal-overlay" id="frameModal">
395
+ <div class="modal-content">
396
+ <div class="modal-header">
397
+ <h3 class="modal-title" id="modalTitle">Frame Preview</h3>
398
+ <button class="modal-close" id="modalClose">×</button>
399
+ </div>
400
+ <div class="modal-body">
401
+ <img class="modal-image" id="modalImage" src="" alt="Frame">
402
+ </div>
403
+ </div>
404
+ </div>
405
+
406
+ <script src="../extension-config.js"></script>
407
+ <script src="jszip.min.js"></script>
408
+ <script src="frame-editor.js"></script>
409
+ </body>
410
+ </html>