vibesurf 0.1.9a5__py3-none-any.whl → 0.1.10__py3-none-any.whl

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 (41) hide show
  1. vibe_surf/_version.py +2 -2
  2. vibe_surf/agents/vibe_surf_agent.py +25 -15
  3. vibe_surf/backend/api/browser.py +66 -0
  4. vibe_surf/backend/api/task.py +2 -1
  5. vibe_surf/backend/main.py +76 -1
  6. vibe_surf/backend/shared_state.py +2 -0
  7. vibe_surf/browser/agent_browser_session.py +312 -62
  8. vibe_surf/browser/browser_manager.py +57 -92
  9. vibe_surf/browser/watchdogs/dom_watchdog.py +43 -43
  10. vibe_surf/chrome_extension/background.js +84 -0
  11. vibe_surf/chrome_extension/manifest.json +3 -1
  12. vibe_surf/chrome_extension/scripts/file-manager.js +526 -0
  13. vibe_surf/chrome_extension/scripts/history-manager.js +658 -0
  14. vibe_surf/chrome_extension/scripts/modal-manager.js +487 -0
  15. vibe_surf/chrome_extension/scripts/session-manager.js +31 -8
  16. vibe_surf/chrome_extension/scripts/settings-manager.js +1214 -0
  17. vibe_surf/chrome_extension/scripts/ui-manager.js +770 -3186
  18. vibe_surf/chrome_extension/sidepanel.html +27 -4
  19. vibe_surf/chrome_extension/styles/activity.css +574 -0
  20. vibe_surf/chrome_extension/styles/base.css +76 -0
  21. vibe_surf/chrome_extension/styles/history-modal.css +791 -0
  22. vibe_surf/chrome_extension/styles/input.css +429 -0
  23. vibe_surf/chrome_extension/styles/layout.css +186 -0
  24. vibe_surf/chrome_extension/styles/responsive.css +454 -0
  25. vibe_surf/chrome_extension/styles/settings-environment.css +165 -0
  26. vibe_surf/chrome_extension/styles/settings-forms.css +389 -0
  27. vibe_surf/chrome_extension/styles/settings-modal.css +141 -0
  28. vibe_surf/chrome_extension/styles/settings-profiles.css +244 -0
  29. vibe_surf/chrome_extension/styles/settings-responsive.css +144 -0
  30. vibe_surf/chrome_extension/styles/settings-utilities.css +25 -0
  31. vibe_surf/chrome_extension/styles/variables.css +54 -0
  32. vibe_surf/cli.py +1 -0
  33. vibe_surf/controller/vibesurf_tools.py +0 -2
  34. {vibesurf-0.1.9a5.dist-info → vibesurf-0.1.10.dist-info}/METADATA +18 -2
  35. {vibesurf-0.1.9a5.dist-info → vibesurf-0.1.10.dist-info}/RECORD +39 -23
  36. vibe_surf/chrome_extension/styles/main.css +0 -2338
  37. vibe_surf/chrome_extension/styles/settings.css +0 -1100
  38. {vibesurf-0.1.9a5.dist-info → vibesurf-0.1.10.dist-info}/WHEEL +0 -0
  39. {vibesurf-0.1.9a5.dist-info → vibesurf-0.1.10.dist-info}/entry_points.txt +0 -0
  40. {vibesurf-0.1.9a5.dist-info → vibesurf-0.1.10.dist-info}/licenses/LICENSE +0 -0
  41. {vibesurf-0.1.9a5.dist-info → vibesurf-0.1.10.dist-info}/top_level.txt +0 -0
@@ -0,0 +1,454 @@
1
+ /* Responsive Styles - VibeSurf Extension */
2
+
3
+ /* Small Screen Adjustments */
4
+ @media (max-width: 320px) {
5
+ .header {
6
+ padding: var(--spacing-md);
7
+ }
8
+
9
+ .activity-log {
10
+ padding: var(--spacing-md);
11
+ }
12
+
13
+ .input-section {
14
+ padding: var(--spacing-md);
15
+ }
16
+ }
17
+
18
+ /* Tablet and Medium Screen Adjustments */
19
+ @media (max-width: 768px) {
20
+ .history-modal-content {
21
+ width: 96vw !important;
22
+ max-height: 92vh !important;
23
+ border-radius: 12px !important;
24
+ margin: 16px !important;
25
+ }
26
+
27
+ .history-content {
28
+ padding: 24px !important;
29
+ padding-top: 20px !important;
30
+ }
31
+
32
+ .section-header {
33
+ padding-bottom: 20px !important;
34
+ margin-bottom: 24px !important;
35
+ }
36
+
37
+ .section-header h4 {
38
+ font-size: 20px !important;
39
+ }
40
+
41
+ .search-filter-bar {
42
+ flex-direction: column !important;
43
+ gap: 16px !important;
44
+ }
45
+
46
+ .search-input, .filter-select {
47
+ padding: 12px 16px !important;
48
+ font-size: 14px !important;
49
+ }
50
+
51
+ .recent-task-item {
52
+ padding: 20px !important;
53
+ gap: 16px !important;
54
+ margin-bottom: 16px !important;
55
+ }
56
+
57
+ .task-status-icon {
58
+ width: 40px !important;
59
+ height: 40px !important;
60
+ font-size: 18px !important;
61
+ }
62
+
63
+ .task-header {
64
+ flex-direction: column !important;
65
+ align-items: flex-start !important;
66
+ gap: 8px !important;
67
+ }
68
+
69
+ .session-item {
70
+ padding: 16px !important;
71
+ gap: 16px !important;
72
+ margin-bottom: 12px !important;
73
+ }
74
+
75
+ .session-header {
76
+ flex-direction: column !important;
77
+ align-items: flex-start !important;
78
+ gap: 6px !important;
79
+ }
80
+
81
+ .pagination-controls {
82
+ flex-direction: column !important;
83
+ gap: 16px !important;
84
+ text-align: center !important;
85
+ padding: 20px 0 !important;
86
+ }
87
+
88
+ .page-btn {
89
+ padding: 10px 16px !important;
90
+ font-size: 13px !important;
91
+ }
92
+
93
+ .view-more-btn {
94
+ padding: 16px !important;
95
+ font-size: 14px !important;
96
+ }
97
+ }
98
+
99
+ /* Mobile Screen Adjustments */
100
+ @media (max-width: 480px) {
101
+ .history-modal-content {
102
+ width: 98vw !important;
103
+ max-height: 95vh !important;
104
+ border-radius: 8px !important;
105
+ margin: 8px !important;
106
+ }
107
+
108
+ .history-content {
109
+ padding: 20px !important;
110
+ padding-top: 16px !important;
111
+ }
112
+
113
+ .section-header h4 {
114
+ font-size: 18px !important;
115
+ }
116
+
117
+ .back-btn {
118
+ padding: 8px 16px !important;
119
+ font-size: 13px !important;
120
+ }
121
+
122
+ .recent-task-item {
123
+ padding: 16px !important;
124
+ gap: 12px !important;
125
+ border-radius: 12px !important;
126
+ }
127
+
128
+ .task-status-icon {
129
+ width: 36px !important;
130
+ height: 36px !important;
131
+ font-size: 16px !important;
132
+ border-radius: 10px !important;
133
+ }
134
+
135
+ .session-id-badge {
136
+ font-size: 10px !important;
137
+ padding: 4px 8px !important;
138
+ }
139
+
140
+ .task-timestamp, .session-time {
141
+ font-size: 11px !important;
142
+ }
143
+
144
+ .task-description {
145
+ font-size: 14px !important;
146
+ -webkit-line-clamp: 3 !important;
147
+ margin-bottom: 12px !important;
148
+ }
149
+
150
+ .task-meta, .session-details {
151
+ font-size: 12px !important;
152
+ gap: 8px !important;
153
+ }
154
+
155
+ .task-status-text {
156
+ padding: 3px 8px !important;
157
+ font-size: 11px !important;
158
+ }
159
+
160
+ .session-item {
161
+ padding: 14px !important;
162
+ gap: 12px !important;
163
+ border-radius: 10px !important;
164
+ }
165
+
166
+ .session-id {
167
+ font-size: 13px !important;
168
+ }
169
+
170
+ .empty-state {
171
+ padding: 40px 20px !important;
172
+ min-height: 240px !important;
173
+ }
174
+
175
+ .empty-state-icon {
176
+ font-size: 56px !important;
177
+ margin-bottom: 20px !important;
178
+ }
179
+
180
+ .empty-state-title {
181
+ font-size: 18px !important;
182
+ margin-bottom: 12px !important;
183
+ }
184
+
185
+ .empty-state-description {
186
+ font-size: 14px !important;
187
+ max-width: 280px !important;
188
+ }
189
+
190
+ .task-item-content {
191
+ min-width: 0;
192
+ }
193
+
194
+ .task-description {
195
+ -webkit-line-clamp: 3;
196
+ }
197
+ }
198
+
199
+ /* Extra Small Mobile Screens */
200
+ @media (max-width: 360px) {
201
+ .history-content {
202
+ padding: 16px !important;
203
+ }
204
+
205
+ .recent-task-item {
206
+ flex-direction: column !important;
207
+ align-items: flex-start !important;
208
+ text-align: left !important;
209
+ }
210
+
211
+ .task-status-icon {
212
+ align-self: flex-end !important;
213
+ margin-bottom: 8px !important;
214
+ }
215
+
216
+ .task-header {
217
+ width: 100% !important;
218
+ }
219
+
220
+ .session-item {
221
+ flex-direction: column !important;
222
+ align-items: flex-start !important;
223
+ }
224
+
225
+ .session-header {
226
+ width: 100% !important;
227
+ }
228
+ }
229
+
230
+ /* Accessibility Enhancements */
231
+ @media (prefers-reduced-motion: reduce) {
232
+ .recent-task-item,
233
+ .session-item,
234
+ .view-more-btn,
235
+ .back-btn,
236
+ .page-btn,
237
+ .task-suggestion,
238
+ .icon-btn,
239
+ .action-btn,
240
+ .control-btn {
241
+ transition: none !important;
242
+ }
243
+
244
+ .recent-task-item:hover,
245
+ .session-item:hover,
246
+ .task-suggestion:hover {
247
+ transform: none !important;
248
+ }
249
+
250
+ .loading-skeleton {
251
+ animation: none !important;
252
+ background: var(--bg-tertiary) !important;
253
+ }
254
+
255
+ .history-modal .status-dot.running,
256
+ .history-modal .status-dot.active,
257
+ .status-dot.active {
258
+ animation: none !important;
259
+ }
260
+
261
+ .history-modal .status-dot.running::before,
262
+ .history-modal .status-dot.active::before {
263
+ animation: none !important;
264
+ opacity: 0 !important;
265
+ }
266
+
267
+ @keyframes pulse {
268
+ 0%, 100% {
269
+ opacity: 1;
270
+ }
271
+ 50% {
272
+ opacity: 1;
273
+ }
274
+ }
275
+ }
276
+
277
+ /* High Contrast Mode Support */
278
+ @media (prefers-contrast: high) {
279
+ :root {
280
+ --border-color: #000000;
281
+ --text-muted: #333333;
282
+ --bg-secondary: #f0f0f0;
283
+ --bg-tertiary: #e0e0e0;
284
+ }
285
+
286
+ .recent-task-item,
287
+ .session-item,
288
+ .message-bubble,
289
+ .control-btn,
290
+ .action-btn {
291
+ border-width: 2px !important;
292
+ }
293
+
294
+ .task-status-icon,
295
+ .task-status-text {
296
+ border-width: 2px !important;
297
+ }
298
+
299
+ .history-modal .status-dot,
300
+ .status-dot {
301
+ border: 2px solid currentColor !important;
302
+ }
303
+
304
+ .message-bubble {
305
+ box-shadow: none !important;
306
+ }
307
+ }
308
+
309
+ /* Print Styles */
310
+ @media print {
311
+ .header-right,
312
+ .control-panel,
313
+ .input-section,
314
+ .action-btn,
315
+ .icon-btn {
316
+ display: none !important;
317
+ }
318
+
319
+ .vibesurf-container {
320
+ height: auto !important;
321
+ overflow: visible !important;
322
+ }
323
+
324
+ .activity-log {
325
+ overflow: visible !important;
326
+ padding: 0 !important;
327
+ }
328
+
329
+ .message-bubble {
330
+ border: 1px solid #000 !important;
331
+ box-shadow: none !important;
332
+ break-inside: avoid;
333
+ }
334
+
335
+ .activity-item {
336
+ break-inside: avoid;
337
+ page-break-inside: avoid;
338
+ }
339
+ }
340
+
341
+ /* Large Screen Optimizations */
342
+ @media (min-width: 1200px) {
343
+ .vibesurf-container {
344
+ max-width: 1200px;
345
+ margin: 0 auto;
346
+ }
347
+
348
+ .message-container {
349
+ max-width: 85%;
350
+ }
351
+
352
+ .history-modal-content {
353
+ max-width: 1000px;
354
+ }
355
+
356
+ .quick-tasks {
357
+ grid-template-columns: repeat(2, 1fr);
358
+ max-width: 600px;
359
+ }
360
+ }
361
+
362
+ /* Ultra-wide Screen Adjustments */
363
+ @media (min-width: 1600px) {
364
+ .message-container {
365
+ max-width: 70%;
366
+ }
367
+
368
+ .quick-tasks {
369
+ grid-template-columns: repeat(3, 1fr);
370
+ max-width: 800px;
371
+ }
372
+ }
373
+
374
+ /* Touch Device Optimizations */
375
+ @media (hover: none) and (pointer: coarse) {
376
+ .icon-btn,
377
+ .action-btn,
378
+ .control-btn {
379
+ min-height: 44px;
380
+ min-width: 44px;
381
+ }
382
+
383
+ .task-suggestion {
384
+ padding: var(--spacing-xl);
385
+ }
386
+
387
+ .copy-btn {
388
+ min-height: 32px;
389
+ min-width: 32px;
390
+ }
391
+
392
+ .recent-task-item,
393
+ .session-item {
394
+ padding: var(--spacing-xl);
395
+ }
396
+ }
397
+
398
+ /* Landscape Mobile Adjustments */
399
+ @media (max-height: 500px) and (orientation: landscape) {
400
+ .header {
401
+ padding: var(--spacing-sm) var(--spacing-lg);
402
+ min-height: 48px;
403
+ }
404
+
405
+ .input-section {
406
+ padding: var(--spacing-sm) var(--spacing-md);
407
+ }
408
+
409
+ .welcome-message {
410
+ padding: var(--spacing-md) var(--spacing-lg);
411
+ }
412
+
413
+ .quick-tasks {
414
+ grid-template-columns: repeat(2, 1fr);
415
+ gap: var(--spacing-sm);
416
+ }
417
+
418
+ .task-suggestion {
419
+ padding: var(--spacing-md);
420
+ }
421
+ }
422
+
423
+ /* Reduced Data Mode */
424
+ @media (prefers-reduced-data: reduce) {
425
+ .loading-skeleton {
426
+ background: var(--bg-tertiary) !important;
427
+ animation: none !important;
428
+ }
429
+
430
+ .task-status-icon::before,
431
+ .recent-task-item::before,
432
+ .session-item::before {
433
+ display: none !important;
434
+ }
435
+
436
+ .view-more-btn::before {
437
+ display: none !important;
438
+ }
439
+ }
440
+
441
+ /* Focus Visible Support */
442
+ @media (prefers-reduced-motion: no-preference) {
443
+ .recent-task-item:focus-visible,
444
+ .session-item:focus-visible,
445
+ .view-more-btn:focus-visible,
446
+ .back-btn:focus-visible,
447
+ .task-suggestion:focus-visible,
448
+ .icon-btn:focus-visible,
449
+ .action-btn:focus-visible,
450
+ .control-btn:focus-visible {
451
+ outline: 3px solid var(--primary-color);
452
+ outline-offset: 2px;
453
+ }
454
+ }
@@ -0,0 +1,165 @@
1
+ /* Environment Variables Management */
2
+
3
+ /* Environment Variables Tab */
4
+ .env-variables-container {
5
+ display: flex;
6
+ flex-direction: column;
7
+ gap: 16px;
8
+ }
9
+
10
+ .env-var-item {
11
+ display: flex;
12
+ gap: 12px;
13
+ align-items: flex-start;
14
+ padding: 16px;
15
+ background: var(--bg-secondary);
16
+ border: 1px solid var(--border-color);
17
+ border-radius: 8px;
18
+ }
19
+
20
+ .env-var-key,
21
+ .env-var-value {
22
+ flex: 1;
23
+ }
24
+
25
+ .readonly-input {
26
+ background-color: var(--bg-tertiary) !important;
27
+ color: var(--text-muted) !important;
28
+ cursor: not-allowed !important;
29
+ opacity: 0.7;
30
+ }
31
+
32
+ .readonly-input:focus {
33
+ outline: none !important;
34
+ box-shadow: none !important;
35
+ border-color: var(--border-color) !important;
36
+ }
37
+
38
+ .env-var-actions {
39
+ display: flex;
40
+ gap: 4px;
41
+ }
42
+
43
+ .env-var-btn {
44
+ width: 32px;
45
+ height: 32px;
46
+ border: none;
47
+ background: transparent;
48
+ color: var(--text-muted);
49
+ cursor: pointer;
50
+ border-radius: 6px;
51
+ transition: all 0.2s ease;
52
+ display: flex;
53
+ align-items: center;
54
+ justify-content: center;
55
+ }
56
+
57
+ .env-var-btn:hover {
58
+ background: var(--bg-hover);
59
+ color: var(--text-primary);
60
+ }
61
+
62
+ .env-var-btn.delete:hover {
63
+ background: rgba(220, 53, 69, 0.1);
64
+ color: var(--danger-color);
65
+ }
66
+
67
+ .add-env-var-btn {
68
+ display: flex;
69
+ align-items: center;
70
+ justify-content: center;
71
+ gap: 8px;
72
+ width: 100%;
73
+ padding: 16px;
74
+ border: 1px dashed var(--border-color);
75
+ border-radius: 8px;
76
+ background: transparent;
77
+ color: var(--text-secondary);
78
+ font-size: 14px;
79
+ font-weight: 600;
80
+ cursor: pointer;
81
+ transition: all 0.3s ease;
82
+ }
83
+
84
+ .add-env-var-btn:hover {
85
+ border-color: var(--primary-color);
86
+ background: rgba(0, 122, 204, 0.05);
87
+ color: var(--primary-color);
88
+ }
89
+
90
+ /* Environment Variables Action Center */
91
+ .env-var-actions-center {
92
+ display: flex;
93
+ justify-content: center;
94
+ margin-top: 32px;
95
+ padding-top: 24px;
96
+ border-top: 1px solid var(--border-color);
97
+ }
98
+
99
+ .save-env-vars-btn-modern {
100
+ display: flex;
101
+ align-items: center;
102
+ gap: 12px;
103
+ padding: 16px 32px;
104
+ background: linear-gradient(135deg, var(--primary-color), var(--primary-hover));
105
+ color: white;
106
+ border: none;
107
+ border-radius: 12px;
108
+ font-size: 16px;
109
+ font-weight: 600;
110
+ cursor: pointer;
111
+ transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
112
+ box-shadow: 0 4px 12px rgba(0, 122, 204, 0.2);
113
+ position: relative;
114
+ overflow: hidden;
115
+ }
116
+
117
+ .save-env-vars-btn-modern::before {
118
+ content: '';
119
+ position: absolute;
120
+ top: 0;
121
+ left: -100%;
122
+ width: 100%;
123
+ height: 100%;
124
+ background: linear-gradient(90deg, transparent, rgba(255, 255, 255, 0.2), transparent);
125
+ transition: left 0.5s ease;
126
+ }
127
+
128
+ .save-env-vars-btn-modern:hover {
129
+ transform: translateY(-2px);
130
+ box-shadow: 0 8px 24px rgba(0, 122, 204, 0.3);
131
+ background: linear-gradient(135deg, var(--primary-hover), var(--primary-color));
132
+ }
133
+
134
+ .save-env-vars-btn-modern:hover::before {
135
+ left: 100%;
136
+ }
137
+
138
+ .save-env-vars-btn-modern:active {
139
+ transform: translateY(0);
140
+ box-shadow: 0 4px 12px rgba(0, 122, 204, 0.2);
141
+ }
142
+
143
+ .save-env-vars-btn-modern .btn-icon {
144
+ display: flex;
145
+ align-items: center;
146
+ justify-content: center;
147
+ width: 20px;
148
+ height: 20px;
149
+ }
150
+
151
+ .save-env-vars-btn-modern .btn-text {
152
+ font-weight: 600;
153
+ letter-spacing: 0.5px;
154
+ }
155
+
156
+ .save-env-vars-btn-modern:disabled {
157
+ opacity: 0.6;
158
+ cursor: not-allowed;
159
+ transform: none !important;
160
+ box-shadow: 0 4px 12px rgba(0, 122, 204, 0.1) !important;
161
+ }
162
+
163
+ .save-env-vars-btn-modern:disabled::before {
164
+ display: none;
165
+ }