vibesurf 0.1.20__py3-none-any.whl → 0.1.22__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.

Potentially problematic release.


This version of vibesurf might be problematic. Click here for more details.

Files changed (43) hide show
  1. vibe_surf/_version.py +2 -2
  2. vibe_surf/agents/browser_use_agent.py +1 -1
  3. vibe_surf/agents/prompts/vibe_surf_prompt.py +1 -0
  4. vibe_surf/backend/api/task.py +1 -1
  5. vibe_surf/backend/api/voices.py +481 -0
  6. vibe_surf/backend/database/migrations/v004_add_voice_profiles.sql +35 -0
  7. vibe_surf/backend/database/models.py +38 -1
  8. vibe_surf/backend/database/queries.py +189 -1
  9. vibe_surf/backend/main.py +2 -0
  10. vibe_surf/backend/shared_state.py +1 -1
  11. vibe_surf/backend/voice_model_config.py +25 -0
  12. vibe_surf/browser/agen_browser_profile.py +2 -0
  13. vibe_surf/browser/agent_browser_session.py +5 -4
  14. vibe_surf/chrome_extension/background.js +271 -25
  15. vibe_surf/chrome_extension/content.js +147 -0
  16. vibe_surf/chrome_extension/permission-iframe.html +38 -0
  17. vibe_surf/chrome_extension/permission-request.html +104 -0
  18. vibe_surf/chrome_extension/scripts/api-client.js +61 -0
  19. vibe_surf/chrome_extension/scripts/file-manager.js +53 -12
  20. vibe_surf/chrome_extension/scripts/main.js +53 -12
  21. vibe_surf/chrome_extension/scripts/permission-iframe-request.js +188 -0
  22. vibe_surf/chrome_extension/scripts/permission-request.js +118 -0
  23. vibe_surf/chrome_extension/scripts/session-manager.js +30 -4
  24. vibe_surf/chrome_extension/scripts/settings-manager.js +690 -3
  25. vibe_surf/chrome_extension/scripts/ui-manager.js +961 -147
  26. vibe_surf/chrome_extension/scripts/user-settings-storage.js +422 -0
  27. vibe_surf/chrome_extension/scripts/voice-recorder.js +514 -0
  28. vibe_surf/chrome_extension/sidepanel.html +106 -29
  29. vibe_surf/chrome_extension/styles/components.css +35 -0
  30. vibe_surf/chrome_extension/styles/input.css +164 -1
  31. vibe_surf/chrome_extension/styles/layout.css +1 -1
  32. vibe_surf/chrome_extension/styles/settings-environment.css +138 -0
  33. vibe_surf/chrome_extension/styles/settings-forms.css +7 -7
  34. vibe_surf/chrome_extension/styles/variables.css +51 -0
  35. vibe_surf/tools/voice_asr.py +79 -8
  36. {vibesurf-0.1.20.dist-info → vibesurf-0.1.22.dist-info}/METADATA +9 -13
  37. {vibesurf-0.1.20.dist-info → vibesurf-0.1.22.dist-info}/RECORD +41 -34
  38. vibe_surf/chrome_extension/icons/convert-svg.js +0 -33
  39. vibe_surf/chrome_extension/icons/logo-preview.html +0 -187
  40. {vibesurf-0.1.20.dist-info → vibesurf-0.1.22.dist-info}/WHEEL +0 -0
  41. {vibesurf-0.1.20.dist-info → vibesurf-0.1.22.dist-info}/entry_points.txt +0 -0
  42. {vibesurf-0.1.20.dist-info → vibesurf-0.1.22.dist-info}/licenses/LICENSE +0 -0
  43. {vibesurf-0.1.20.dist-info → vibesurf-0.1.22.dist-info}/top_level.txt +0 -0
@@ -51,4 +51,55 @@
51
51
  --transition-fast: 150ms ease-in-out;
52
52
  --transition-normal: 200ms ease-in-out;
53
53
  --transition-slow: 300ms ease-in-out;
54
+ }
55
+
56
+ /* Dark Theme Variables */
57
+ [data-theme="dark"],
58
+ .dark-theme {
59
+ /* Colors */
60
+ --primary-color: #4fc3f7;
61
+ --primary-hover: #29b6f6;
62
+ --secondary-color: #2d2d2d;
63
+ --accent-color: #66bb6a;
64
+ --danger-color: #ef5350;
65
+ --warning-color: #ffca28;
66
+ --text-primary: #ffffff;
67
+ --text-secondary: #b0b0b0;
68
+ --text-muted: #808080;
69
+ --border-color: #404040;
70
+ --border-hover: #505050;
71
+ --bg-primary: #1a1a1a;
72
+ --bg-secondary: #2d2d2d;
73
+ --bg-tertiary: #3a3a3a;
74
+ --bg-hover: #404040;
75
+ --bg-active: #2a3f5f;
76
+ --shadow-sm: 0 1px 2px 0 rgba(0, 0, 0, 0.3);
77
+ --shadow-md: 0 4px 6px -1px rgba(0, 0, 0, 0.4), 0 2px 4px -1px rgba(0, 0, 0, 0.3);
78
+ --shadow-lg: 0 10px 15px -3px rgba(0, 0, 0, 0.4), 0 4px 6px -2px rgba(0, 0, 0, 0.3);
79
+ }
80
+
81
+ /* Auto Theme (follows system preference) */
82
+ @media (prefers-color-scheme: dark) {
83
+ :root:not([data-theme="light"]):not(.light-theme) {
84
+ /* Colors */
85
+ --primary-color: #4fc3f7;
86
+ --primary-hover: #29b6f6;
87
+ --secondary-color: #2d2d2d;
88
+ --accent-color: #66bb6a;
89
+ --danger-color: #ef5350;
90
+ --warning-color: #ffca28;
91
+ --text-primary: #ffffff;
92
+ --text-secondary: #b0b0b0;
93
+ --text-muted: #808080;
94
+ --border-color: #404040;
95
+ --border-hover: #505050;
96
+ --bg-primary: #1a1a1a;
97
+ --bg-secondary: #2d2d2d;
98
+ --bg-tertiary: #3a3a3a;
99
+ --bg-hover: #404040;
100
+ --bg-active: #2a3f5f;
101
+ --shadow-sm: 0 1px 2px 0 rgba(0, 0, 0, 0.3);
102
+ --shadow-md: 0 4px 6px -1px rgba(0, 0, 0, 0.4), 0 2px 4px -1px rgba(0, 0, 0, 0.3);
103
+ --shadow-lg: 0 10px 15px -3px rgba(0, 0, 0, 0.4), 0 4px 6px -2px rgba(0, 0, 0, 0.3);
104
+ }
54
105
  }
@@ -2,6 +2,8 @@ import os
2
2
  import pdb
3
3
 
4
4
  import dashscope
5
+ from openai import OpenAI
6
+ from google import genai
5
7
  from typing import Optional
6
8
  from vibe_surf.logger import get_logger
7
9
 
@@ -10,21 +12,15 @@ logger = get_logger(__name__)
10
12
  class QwenASR:
11
13
  def __init__(self, model="qwen3-asr-flash", api_key: Optional[str] = None):
12
14
  dashscope.api_key = api_key or os.getenv("DASHSCOPE_API_KEY")
13
- self.model = model
15
+ self.model = model or "qwen3-asr-flash"
14
16
 
15
- def asr(self, wav_url: str, context=""):
17
+ def asr(self, wav_url: str):
16
18
  if not wav_url.startswith("http"):
17
19
  assert os.path.exists(wav_url), f"{wav_url} not exists!"
18
20
  wav_url = f"file://{wav_url}"
19
21
 
20
22
  try:
21
23
  messages = [
22
- {
23
- "role": "system",
24
- "content": [
25
- {"text": context},
26
- ]
27
- },
28
24
  {
29
25
  "role": "user",
30
26
  "content": [
@@ -51,4 +47,79 @@ class QwenASR:
51
47
  return recog_text
52
48
  except Exception as e:
53
49
  logger.warning(str(e))
50
+ return ""
51
+
52
+
53
+ class OpenAIASR:
54
+ def __init__(self, model="whisper-1", api_key: Optional[str] = None, base_url: Optional[str] = None):
55
+ self.api_key = api_key or os.getenv("OPENAI_API_KEY")
56
+ self.base_url = base_url or os.getenv("OPENAI_ENDPOINT")
57
+ self.model = model or "whisper-1"
58
+ self.client = OpenAI(api_key=self.api_key, base_url=self.base_url)
59
+
60
+ def asr(self, wav_url: str):
61
+ try:
62
+ # Handle file path
63
+ if wav_url.startswith("file://"):
64
+ file_path = wav_url[7:] # Remove file:// prefix
65
+ elif not wav_url.startswith("http"):
66
+ file_path = wav_url
67
+ else:
68
+ raise ValueError("OpenAI Whisper ASR only supports local files")
69
+
70
+ if not os.path.exists(file_path):
71
+ raise FileNotFoundError(f"Audio file not found: {file_path}")
72
+
73
+ # Open and transcribe the audio file
74
+ with open(file_path, "rb") as audio_file:
75
+ transcript = self.client.audio.transcriptions.create(
76
+ model=self.model,
77
+ file=audio_file,
78
+ response_format="text"
79
+ )
80
+
81
+ return transcript if isinstance(transcript, str) else transcript.text
82
+ except Exception as e:
83
+ logger.warning(f"OpenAI Whisper ASR error: {str(e)}")
84
+ return ""
85
+
86
+
87
+ class GeminiASR:
88
+ def __init__(self, model="gemini-2.5-flash", api_key: Optional[str] = None):
89
+ self.api_key = api_key or os.getenv("GOOGLE_API_KEY")
90
+ self.model = model or "gemini-2.5-flash"
91
+ if not self.api_key:
92
+ raise ValueError("Google API key is required for Gemini ASR")
93
+
94
+ # Initialize the genai client
95
+ self.client = genai.Client(api_key=self.api_key)
96
+
97
+ def asr(self, wav_url: str):
98
+ try:
99
+ # Handle file path
100
+ if wav_url.startswith("file://"):
101
+ file_path = wav_url[7:] # Remove file:// prefix
102
+ elif not wav_url.startswith("http"):
103
+ file_path = wav_url
104
+ else:
105
+ raise ValueError("Gemini ASR only supports local files")
106
+
107
+ if not os.path.exists(file_path):
108
+ raise FileNotFoundError(f"Audio file not found: {file_path}")
109
+
110
+ # Upload the audio file using the client
111
+ audio_file = self.client.files.upload(file=file_path)
112
+
113
+ # Generate content with the audio file
114
+ response = self.client.models.generate_content(
115
+ model=self.model,
116
+ contents=[
117
+ "Please transcribe the audio to text. Only return the transcribed text without any additional commentary.",
118
+ audio_file
119
+ ]
120
+ )
121
+
122
+ return response.text if response.text else ""
123
+ except Exception as e:
124
+ logger.warning(f"Gemini ASR error: {str(e)}")
54
125
  return ""
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: vibesurf
3
- Version: 0.1.20
3
+ Version: 0.1.22
4
4
  Summary: VibeSurf: A powerful browser assistant for vibe surfing
5
5
  Author: Shao Warm
6
6
  License: Apache-2.0
@@ -37,7 +37,7 @@ Requires-Dist: aiosqlite>=0.21.0
37
37
  Requires-Dist: rich>=13.0.0
38
38
  Requires-Dist: greenlet>=3.2.4
39
39
  Requires-Dist: getmac>=0.9.5
40
- Requires-Dist: browser-use==0.7.8
40
+ Requires-Dist: browser-use==0.7.9
41
41
  Requires-Dist: markdown-pdf>=1.9
42
42
  Requires-Dist: nanoid>=2.0.0
43
43
  Requires-Dist: markdownify>=1.2.0
@@ -91,18 +91,14 @@ uv run vibesurf
91
91
 
92
92
  ## 🗺️ Roadmap
93
93
 
94
- ### 🤖 Agent Enhancements
94
+ We're building VibeSurf to be your ultimate AI browser companion. Here's what's coming next:
95
95
 
96
- - **VibeSurf Agent Refactoring**: Remove LangGraph framework dependency to make the agent more flexible and powerful
97
- - **Advanced Coding Agent**: Design a powerful coding agent capable of handling and analyzing complex data, generating charts and visualizations. Combined with VibeSurf agent, this will create a "local Manus" experience
98
- - **Enhanced Report Writer Agent**: Optimize the report writer to generate more visually appealing reports with rich graphics and illustrations
99
- - **Global Memory System**: Implement global memory capabilities to make VibeSurf understand and adapt to user preferences better
100
-
101
- ### 🧩 Extension Features
102
-
103
- - **Enhanced Tab Management**: Add @specific tab handling with `/research` and `/deep_research` specialized task commands
104
- - **Smart Text Processing**: Implement word/paragraph translation, summarization, and explanation features for selected content
105
- - **Local Credential Management**: Add secure credential configuration system to keep your privacy data stored locally
96
+ - [ ] **Smart Skills System**: Add `/search` for quick information search and `/crawl` for automatic website data extraction
97
+ - [ ] **Powerful Coding Agent**: Build a comprehensive coding assistant for data processing and analysis directly in your browser
98
+ - [ ] **Third-Party Integrations**: Connect with n8n workflows and other tools to combine browsing with automation
99
+ - [ ] **Custom Workflow Templates**: Create reusable templates for auto-login, data collection, and complex browser automation
100
+ - [ ] **Smart Interaction Features**: Text selection for translation/Q&A, screenshot analysis, and voice reading capabilities
101
+ - [ ] **Real-Time Conversation & Memory**: Add persistent chat functionality with global memory to make VibeSurf truly understand you
106
102
 
107
103
 
108
104
  ## 🎬 Demo
@@ -1,81 +1,88 @@
1
1
  vibe_surf/__init__.py,sha256=WtduuMFGauMD_9dpk4fnRnLTAP6ka9Lfu0feAFNzLfo,339
2
- vibe_surf/_version.py,sha256=P88Jfo9OvOr8LB0vHFqLUwFR7A0eE281KxEewbcCSBc,706
2
+ vibe_surf/_version.py,sha256=o3nZ3vj6LXerN2NKds558INvVml0G0wcb-duWVc5JMs,706
3
3
  vibe_surf/cli.py,sha256=pbep2dBeQqralZ8AggkH4h2nayBarbdN8lhZxo35gNU,16689
4
4
  vibe_surf/common.py,sha256=_WWMxen5wFwzUjEShn3yDVC1OBFUiJ6Vccadi6tuG6w,1215
5
5
  vibe_surf/logger.py,sha256=k53MFA96QX6t9OfcOf1Zws8PP0OOqjVJfhUD3Do9lKw,3043
6
6
  vibe_surf/agents/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
7
- vibe_surf/agents/browser_use_agent.py,sha256=qmm3TAVzEYjvOvSQEa5xUZOgpBOR_8qePME8BjLjOd0,45951
7
+ vibe_surf/agents/browser_use_agent.py,sha256=jeUYV7yk6vyycw6liju_597GdjB3CW_B2wEhn2F0ekk,45957
8
8
  vibe_surf/agents/report_writer_agent.py,sha256=pCF2k6VLyO-sSviGBqqIyVD3SLqaZtSqiW3kvNfPY1I,20967
9
9
  vibe_surf/agents/vibe_surf_agent.py,sha256=i7O4Djw3Pd1ijwbkGbXkQqO1y0RunlelCqajjfJFfaQ,73687
10
10
  vibe_surf/agents/views.py,sha256=yHjNJloa-aofVTGyuRy08tBYP_Y3XLqt1DUWOUmHRng,4825
11
11
  vibe_surf/agents/prompts/__init__.py,sha256=l4ieA0D8kLJthyNN85FKLNe4ExBa3stY3l-aImLDRD0,36
12
12
  vibe_surf/agents/prompts/report_writer_prompt.py,sha256=sZE8MUT1CDLmRzbnbEQzAvTwJjpITgh2Q8g1_eXmkzE,4454
13
- vibe_surf/agents/prompts/vibe_surf_prompt.py,sha256=gn8Q234zwtUxVzduzmINmqV-iooE-aJ9u2-yXQ3Wo6M,5573
13
+ vibe_surf/agents/prompts/vibe_surf_prompt.py,sha256=rC6EtcJH9nuHDcTdVELFsv02Lghp3wWp1fsJm9l1v4o,5664
14
14
  vibe_surf/backend/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
15
15
  vibe_surf/backend/llm_config.py,sha256=9V8Gg065TQALbOKQnOqFWd8RzOJjegOD8w6YOf90Q7Y,5036
16
- vibe_surf/backend/main.py,sha256=nZDs_FkYU7NdqSm1O4OwHJslYIJZL1Gr3CEKa8ByaEY,7178
17
- vibe_surf/backend/shared_state.py,sha256=doZv5A6h2Qvq1hM5a3-vnU0Jc8AAlHwuM9WhVu5mFk4,23446
16
+ vibe_surf/backend/main.py,sha256=SWbYXXbPGirGSujyVQqdHCzCR-d7Ffu94_J9JyY7jK8,7292
17
+ vibe_surf/backend/shared_state.py,sha256=8tKfG9kHS7Rg4U0z7PSXqeS-Nr4MDJuGiCw6XrtSTqw,23478
18
+ vibe_surf/backend/voice_model_config.py,sha256=oee4fvOexXKzKRDv2-FEKQj7Z2OznACrj6mfWRGy7h0,567
18
19
  vibe_surf/backend/api/__init__.py,sha256=XxF1jUOORpLYCfFuPrrnUGRnOrr6ClH0_MNPU-4RnSs,68
19
20
  vibe_surf/backend/api/activity.py,sha256=_cnHusqolt5Hf3KdAf6FK-3sBc-TSaadmb5dJxGI57A,9398
20
21
  vibe_surf/backend/api/browser.py,sha256=NXedyZG3NIVRIx5O7d9mHwVWX-Q4_KsX5mSgfKt8UEA,2122
21
22
  vibe_surf/backend/api/config.py,sha256=EwzxYvC6HlaVo2OFWjtBmBMjX4eW2q8hp7l2LO2GZV0,27124
22
23
  vibe_surf/backend/api/files.py,sha256=kJMG9MWECKXwGh64Q6xvAzNjeZGcLhIEnn65HiMZHKE,11762
23
24
  vibe_surf/backend/api/models.py,sha256=n_bu8vavvO8bIKA1WUAbaGPFeZKeamMJelDWU3DlFJc,10533
24
- vibe_surf/backend/api/task.py,sha256=vpQMOn6YBuD_16jzfUajUvBYaydC0jj8Ny3WOJDVuck,14359
25
+ vibe_surf/backend/api/task.py,sha256=GGqV_liGnST4tWgH535WpoMvKqNAFYBism3LDBqYTSA,14361
26
+ vibe_surf/backend/api/voices.py,sha256=YfPCqnR7EAYh2nfMRIpB0xEo6_giTtxrcSeobU3HQHg,17098
25
27
  vibe_surf/backend/database/__init__.py,sha256=XhmcscnhgMhUyXML7m4SnuQIqkFpyY_zJ0D3yYa2RqQ,239
26
28
  vibe_surf/backend/database/manager.py,sha256=Okmr6yG2aycmatONRMyRbHe6l53RkFIPeMxxPSD3ycY,11884
27
- vibe_surf/backend/database/models.py,sha256=ETh4SGZ1ZRXw-jZhU8L16UhbvylXDrm9Wmnn6rJKnhw,7203
28
- vibe_surf/backend/database/queries.py,sha256=WEXZBNHQ1LWWR4Bv-49LMs8mZOkapFBx2_vM1GGLoA8,33723
29
+ vibe_surf/backend/database/models.py,sha256=Z5_RqGyD4ER5bsrYjc2iso9yPo7zfAqxNeVDGtZqotw,8887
30
+ vibe_surf/backend/database/queries.py,sha256=0-RKjbHY3G5Y5_QrTtvl-nHs0KPlygmwm0ZOdbsvINY,41155
29
31
  vibe_surf/backend/database/schemas.py,sha256=OPnpRKwYG1Cu8geJ6pajiEDF8x8mRestXnAfI4Gy18w,3402
30
32
  vibe_surf/backend/database/migrations/v001_initial_schema.sql,sha256=MC2fa1WHUEhHhdOTxz0qB4RI7JdGRpiGXZ77ytl3LRQ,4345
31
33
  vibe_surf/backend/database/migrations/v002_add_agent_mode.sql,sha256=jKnW28HsphUeU9kudEx9QaLnUh8swmmOt-hFsZJay24,251
32
34
  vibe_surf/backend/database/migrations/v003_fix_task_status_case.sql,sha256=npzRgEnKymTzvb-nOZHtycjVyWX2Dx0tCEtrZJfcujg,580
35
+ vibe_surf/backend/database/migrations/v004_add_voice_profiles.sql,sha256=-9arjQBF-OxvFIOwkEl7JJJRDTS_nJ8GNX3T7bJgVq0,1321
33
36
  vibe_surf/backend/utils/__init__.py,sha256=V8leMFp7apAglUAoCHPZrNNcRHthSLYIudIJE5qwjb0,184
34
37
  vibe_surf/backend/utils/encryption.py,sha256=CjLNh_n0Luhfa-6BB-icfzkiiDqj5b4Gu6MADU3p2eM,3754
35
38
  vibe_surf/backend/utils/llm_factory.py,sha256=mNy8o3sw7vYJ8gwiTsrgXbG7Ri_B11ylE4KGcfHULp8,8972
36
39
  vibe_surf/browser/__init__.py,sha256=_UToO2fZfSCrfjOcxhn4Qq7ZLbYeyPuUUEmqIva-Yv8,325
37
- vibe_surf/browser/agen_browser_profile.py,sha256=4H4qDjqLqHAfMi3niBI9fd0S1GlVDWYDUUOrEQoNkl8,5677
38
- vibe_surf/browser/agent_browser_session.py,sha256=rptz2MdXspS44zC21nJaLOmp5aEWsvBfvzpDk5Jr-mA,33884
40
+ vibe_surf/browser/agen_browser_profile.py,sha256=J06hCBJSJ-zAFVM9yDFz8UpmiLuFyWke1EMekpU45eo,5871
41
+ vibe_surf/browser/agent_browser_session.py,sha256=UBU4yiPg9v2DDR6yY3KkNTNH-g7of8fm-mpdXOWvYbE,33970
39
42
  vibe_surf/browser/browser_manager.py,sha256=PFJ9flmqR2uokuRZ3PDh_Dy6_6qcQ6kH_eRc1yT6Iq8,11257
40
43
  vibe_surf/browser/utils.py,sha256=bBtpMiyz2ixWOr31GbJwZ8pVYcnxztKjTJJO92z1BDY,35742
41
44
  vibe_surf/browser/watchdogs/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
42
45
  vibe_surf/browser/watchdogs/action_watchdog.py,sha256=6lM0nOR67clLzC6nVEMZ2Vam8VHDW8GRlg_jbGUHbPk,5297
43
46
  vibe_surf/browser/watchdogs/dom_watchdog.py,sha256=c0AJo2yckWFZqpgnPz7RbsRjcpwlhjD4mSIzCAbRn48,10994
44
- vibe_surf/chrome_extension/background.js,sha256=qXbX-XhEI5reW7n7ePBcyqEJUh4HtlcAxgfWvg92-_k,19628
47
+ vibe_surf/chrome_extension/background.js,sha256=9YLbLmBl__PPUwN6Edf0EQfE53Br1VfjlUiIkznf4n4,30181
45
48
  vibe_surf/chrome_extension/config.js,sha256=g53UkfsaOFNC6fZG-THlBxdSjvswPsaQ9w8rxiHNq2E,1093
46
- vibe_surf/chrome_extension/content.js,sha256=q6JRpmHAEdPWNnFSIqoPv8eBm0T574c3H5hp-M4LYlc,8027
49
+ vibe_surf/chrome_extension/content.js,sha256=cB67jK3vIE5zrpXAfi3p50H3EyTqK5xockOph0Q4kQg,13708
47
50
  vibe_surf/chrome_extension/dev-reload.js,sha256=xQpi-1Ekb5P8Ogsm6rUK09QzxafwH0H409zBKmaUFNw,1790
48
51
  vibe_surf/chrome_extension/manifest.json,sha256=B08nHuU-bPc-pUr30Y-of39TjMlrE7D5gP2sZjZ8CrE,1142
52
+ vibe_surf/chrome_extension/permission-iframe.html,sha256=R6VM1JfrzkfXTTD5mGCKui1dDWTqHEe9n8TtVdZNPNg,948
53
+ vibe_surf/chrome_extension/permission-request.html,sha256=ct1LTl_9euABiHcqNU6AFcvpCAfANWO0y_dDEAjtwfE,2905
49
54
  vibe_surf/chrome_extension/popup.html,sha256=n3dI_-WbILm0q8O_za6xX0WvOofz5lwT_7YXs0u9RAE,4248
50
- vibe_surf/chrome_extension/sidepanel.html,sha256=UuFTM_32LU3aYpem8o0muhW4FvOdu-7uyfY-tHgArXw,29639
51
- vibe_surf/chrome_extension/icons/convert-svg.js,sha256=j137nZA7MJK35NtrwWff8yb3UEKa5XTAvnV6EjY-CVI,953
52
- vibe_surf/chrome_extension/icons/logo-preview.html,sha256=hrgU45uziKHKIb8be9P4ZrZJyGggWnm2M5oEu89V5sM,6962
55
+ vibe_surf/chrome_extension/sidepanel.html,sha256=-ND1Q_HLHf9Pg1F3Q1u-32x_RoN5czOnskNuAJ-iz-k,38982
53
56
  vibe_surf/chrome_extension/icons/logo.icns,sha256=ZzY1eIKF4dNhNW4CeE1UBQloxNVC7bQx3qcClo3CnMQ,1569615
54
57
  vibe_surf/chrome_extension/icons/logo.png,sha256=PLmv1E6sCGXUE5ZDxr-pFPQd9Gvaw_f1TnYmF8VIssU,566385
55
- vibe_surf/chrome_extension/scripts/api-client.js,sha256=5H5GU-NsO_V_sEP3JheKJ3ejjxiruKZlM5hoqAaRjFs,13880
56
- vibe_surf/chrome_extension/scripts/file-manager.js,sha256=WcEaeoECq84jXqEo3Q2ywmqppwSUVm-0dtrbTYXL07g,15809
58
+ vibe_surf/chrome_extension/scripts/api-client.js,sha256=qAQ0WlARCSBb0mFkmjCgT68ra7P82U2xpXFCNWVjUJc,15704
59
+ vibe_surf/chrome_extension/scripts/file-manager.js,sha256=dtaYJNrpUnKH9zCsIpAAEkFN43ownDRtkyUhV8zxGZ0,17585
57
60
  vibe_surf/chrome_extension/scripts/history-manager.js,sha256=J_EiBKrRp2cTxuy0Sq5oCju5YuX0_2pGG6NWrJSjC24,22218
58
- vibe_surf/chrome_extension/scripts/main.js,sha256=WhmCGktQoSl7aaMl8a9ysJJiysAjf12bWGypMucCSVg,16913
61
+ vibe_surf/chrome_extension/scripts/main.js,sha256=hmRQsnq5pEqrBgfuyJ9brfpTGgyl_lJHHPmyjr9MdNY,18509
59
62
  vibe_surf/chrome_extension/scripts/markdown-it.min.js,sha256=gZ3xe0BdCJplNiHWTKrm6AGZydPy34jJKZqFIf-7hIw,102948
60
63
  vibe_surf/chrome_extension/scripts/modal-manager.js,sha256=9ekFaTmy8sk94KK9HZJ7739ObsZ6ssllmRLP9rQxUKU,14187
61
- vibe_surf/chrome_extension/scripts/session-manager.js,sha256=sXh4j4dv3eKOGYeov8iUPt-DX5jKQLhcASDXRX9qW5Y,21126
62
- vibe_surf/chrome_extension/scripts/settings-manager.js,sha256=rgstYooxZtV9QjqP8KRRQclHbeiZJozZZfv80A6M_P4,48601
63
- vibe_surf/chrome_extension/scripts/ui-manager.js,sha256=nFwe1vb9S74wD4Z3QreyMn21DuKMBKOMH3BwpvP-jfY,82488
64
+ vibe_surf/chrome_extension/scripts/permission-iframe-request.js,sha256=JTin53qSN8PqH4yoXluoK_llGJl1UlOgswp_9ojqxuk,8541
65
+ vibe_surf/chrome_extension/scripts/permission-request.js,sha256=9WEeTqMD0tHm1aX2ySkZgJ23siVZLZWAjVQe2dSmnoI,5168
66
+ vibe_surf/chrome_extension/scripts/session-manager.js,sha256=rOPGDTyV1oK-qYfqJKK8mpvQFSdnz0_F0wCcbxPfTSw,21887
67
+ vibe_surf/chrome_extension/scripts/settings-manager.js,sha256=9UGJFxQ1DbDbfndEBDv32MHfAW8YdfZmwg0vW6ABXOQ,77257
68
+ vibe_surf/chrome_extension/scripts/ui-manager.js,sha256=iznuSHhwZVGS7uuXdwPkZSMIADT2VTHRh_zz7MgBYVw,109068
69
+ vibe_surf/chrome_extension/scripts/user-settings-storage.js,sha256=5aGuHXwTokX5wKjdNnu3rVkZv9XoD15FmgCELRRE3Xw,14191
70
+ vibe_surf/chrome_extension/scripts/voice-recorder.js,sha256=rIq9Rhyq-QyeCxJxxZGbnbPC0MCjQtNx6T2UC1g_al4,16852
64
71
  vibe_surf/chrome_extension/styles/activity.css,sha256=aEFa_abskrDQvwsesPVOyJW3rUQUEBQpMKPHhY94CoA,19601
65
72
  vibe_surf/chrome_extension/styles/animations.css,sha256=TLAet_xXBxCA-H36BWP4xBGBIVjbDdAj7Q6OPxPsbE8,7891
66
73
  vibe_surf/chrome_extension/styles/base.css,sha256=d8nt7Wej1r57G6pnBIGKEVkepFxlq8Ets0isngCf5w8,1296
67
- vibe_surf/chrome_extension/styles/components.css,sha256=cbpYgT1ujG11axRa9xnHizgm4wfrpSzq_nkUOdfNZ0A,18495
74
+ vibe_surf/chrome_extension/styles/components.css,sha256=k8OkCJlTs5JuuU8p9tXeNeIpmTiRaQJJyG3Fk_6sE_A,19114
68
75
  vibe_surf/chrome_extension/styles/history-modal.css,sha256=xCg0EPz1N4kg47jnz9q9E1M4zGag8lJMt_msAOkZi3M,16583
69
- vibe_surf/chrome_extension/styles/input.css,sha256=7gmWfXbm3CHPEPHtzwSwAtGeNGJtzrect7yYy57rnEo,10745
70
- vibe_surf/chrome_extension/styles/layout.css,sha256=ejX3qZnPrObzynf3XLwqurLI1ZaGKx41dj9ypdeBP28,4522
76
+ vibe_surf/chrome_extension/styles/input.css,sha256=CLbFtRii_Qz641ZpzhRZZe-MnrjK1ZvqptwxIZ296FE,14275
77
+ vibe_surf/chrome_extension/styles/layout.css,sha256=HikLtMB4IxPdwjq8bDmJ7E3B0rArYVlQ4VK3HXez8yQ,4524
71
78
  vibe_surf/chrome_extension/styles/responsive.css,sha256=a_SFX-PeOcenG4xMeoru5XFnnXdf0YhEyRzvTVVZHdI,8529
72
- vibe_surf/chrome_extension/styles/settings-environment.css,sha256=OzgezmfZZ_yD60Jy9Uiq83mDmMCfk2dPPcZISb9Eqd4,3390
73
- vibe_surf/chrome_extension/styles/settings-forms.css,sha256=alBDabKacyxw0kf116Lr8WU4bjdWqTDht01MtIRMjj4,6970
79
+ vibe_surf/chrome_extension/styles/settings-environment.css,sha256=UpjdTdGszUtNrrLF-T9sIhBBWrnY6oNVvrPcgkB9S8A,6215
80
+ vibe_surf/chrome_extension/styles/settings-forms.css,sha256=oR93bdQDZyu-b-z_HGkX3f-wC1yP-35mW7B8ec6KlSw,7061
74
81
  vibe_surf/chrome_extension/styles/settings-modal.css,sha256=VEkr1WmDltdeaoP4fWJ-Jk2t8TNrB5rsz-zLUv3usPI,2727
75
82
  vibe_surf/chrome_extension/styles/settings-profiles.css,sha256=o0FowPPiZum_DvYIGF5p4gEl63QVXTHDoVeD1Q4yy_s,4946
76
83
  vibe_surf/chrome_extension/styles/settings-responsive.css,sha256=jLE0yG15n2aI6_6QF04Rh0Y-oqqLNen81YAVt5yc2Ws,2168
77
84
  vibe_surf/chrome_extension/styles/settings-utilities.css,sha256=3PuQS2857kg83d5erLbLdo_7J95-qV-qyNWS5M-w1oQ,505
78
- vibe_surf/chrome_extension/styles/variables.css,sha256=VbFJ8L76AaJUqb6gCz9jEG_V6OX4YJa65I2iyeNJIw4,1411
85
+ vibe_surf/chrome_extension/styles/variables.css,sha256=enjyhsa0PeU3b-3uiXa-VkV-1-h2-Ai3m4KpmC2k0rY,2984
79
86
  vibe_surf/llm/__init__.py,sha256=_vDVPo6STf343p1SgMQrF5023hicAx0g83pK2Gbk4Ek,601
80
87
  vibe_surf/llm/openai_compatible.py,sha256=8v0LW_-ZoKv4gcO--6_SmU_BLF8XCJaiPxZ6kXFgM4I,14998
81
88
  vibe_surf/tools/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
@@ -85,10 +92,10 @@ vibe_surf/tools/mcp_client.py,sha256=OeCoTgyx4MoY7JxXndK6pGHIoyFOhf5r7XCbx25y1Ec
85
92
  vibe_surf/tools/report_writer_tools.py,sha256=sUqUFr-_Rs8RJ0Bs77Hrp07kNwRIvHv7ErzSPYSlbTg,705
86
93
  vibe_surf/tools/vibesurf_tools.py,sha256=VVhM2IZOXwpGvJ3v9jTXFHmxTxF2jAzhrwqFqxFVuX4,29976
87
94
  vibe_surf/tools/views.py,sha256=aPoabrXOCrn5vPCAauMKYvpyP9n0qC2xKn1IbjAGXwE,4218
88
- vibe_surf/tools/voice_asr.py,sha256=iBMzPSXYDtAbalr-lwzsGVKQPbR0Cj2lvsKSLKyEcU8,1790
89
- vibesurf-0.1.20.dist-info/licenses/LICENSE,sha256=czn6QYya0-jhLnStD9JqnMS-hwP5wRByipkrGTvoXLI,11355
90
- vibesurf-0.1.20.dist-info/METADATA,sha256=EvLwKDgeGFER75FSHwSj8koN5g02vwROXU-fl0rHXm0,5346
91
- vibesurf-0.1.20.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
92
- vibesurf-0.1.20.dist-info/entry_points.txt,sha256=UxqpvMocL-PR33S6vLF2OmXn-kVzM-DneMeZeHcPMM8,48
93
- vibesurf-0.1.20.dist-info/top_level.txt,sha256=VPZGHqSb6EEqcJ4ZX6bHIuWfon5f6HXl3c7BYpbRqnY,10
94
- vibesurf-0.1.20.dist-info/RECORD,,
95
+ vibe_surf/tools/voice_asr.py,sha256=AJG0yq_Jq-j8ulDlbPhVFfK1jch9_ASesis73iki9II,4702
96
+ vibesurf-0.1.22.dist-info/licenses/LICENSE,sha256=czn6QYya0-jhLnStD9JqnMS-hwP5wRByipkrGTvoXLI,11355
97
+ vibesurf-0.1.22.dist-info/METADATA,sha256=vQdjdd1Sh3UUcQEriaqFOUkZOCuuXEZJM-BcdgwRwoE,5158
98
+ vibesurf-0.1.22.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
99
+ vibesurf-0.1.22.dist-info/entry_points.txt,sha256=UxqpvMocL-PR33S6vLF2OmXn-kVzM-DneMeZeHcPMM8,48
100
+ vibesurf-0.1.22.dist-info/top_level.txt,sha256=VPZGHqSb6EEqcJ4ZX6bHIuWfon5f6HXl3c7BYpbRqnY,10
101
+ vibesurf-0.1.22.dist-info/RECORD,,
@@ -1,33 +0,0 @@
1
- const fs = require('fs');
2
- const path = require('path');
3
-
4
- // Simple SVG to PNG conversion using Canvas API in Node.js
5
- // This is a fallback method when imagemagick/rsvg-convert is not available
6
-
7
- const svgFiles = [
8
- 'logo-neural.svg',
9
- 'logo-data.svg',
10
- 'logo-swarm.svg',
11
- 'logo-wave.svg'
12
- ];
13
-
14
- const sizes = [16, 48, 128];
15
-
16
- console.log('Note: For proper SVG to PNG conversion, please install one of these tools:');
17
- console.log('- ImageMagick: brew install imagemagick');
18
- console.log('- rsvg-convert: brew install librsvg');
19
- console.log('- Or use online SVG to PNG converter');
20
- console.log('');
21
- console.log('SVG files created successfully:');
22
- svgFiles.forEach(file => {
23
- console.log(`- ${file}`);
24
- });
25
-
26
- console.log('');
27
- console.log('Required PNG sizes for Chrome extension:');
28
- sizes.forEach(size => {
29
- svgFiles.forEach(file => {
30
- const pngFile = file.replace('.svg', `-${size}.png`);
31
- console.log(`- ${pngFile}`);
32
- });
33
- });
@@ -1,187 +0,0 @@
1
- <!DOCTYPE html>
2
- <html lang="en">
3
- <head>
4
- <meta charset="UTF-8">
5
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
6
- <title>VibeSurf Logo Preview</title>
7
- <style>
8
- body {
9
- font-family: system-ui, -apple-system, sans-serif;
10
- padding: 20px;
11
- background: #f5f5f5;
12
- margin: 0;
13
- }
14
- .container {
15
- max-width: 800px;
16
- margin: 0 auto;
17
- background: white;
18
- padding: 30px;
19
- border-radius: 12px;
20
- box-shadow: 0 4px 6px rgba(0, 0, 0, 0.1);
21
- }
22
- h1 {
23
- text-align: center;
24
- color: #333;
25
- margin-bottom: 30px;
26
- }
27
- .logo-grid {
28
- display: grid;
29
- grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));
30
- gap: 20px;
31
- margin-bottom: 30px;
32
- }
33
- .logo-card {
34
- padding: 20px;
35
- border: 1px solid #e1e5e9;
36
- border-radius: 8px;
37
- text-align: center;
38
- background: #fafbfc;
39
- transition: all 0.2s ease;
40
- }
41
- .logo-card:hover {
42
- border-color: #007acc;
43
- transform: translateY(-2px);
44
- box-shadow: 0 4px 12px rgba(0, 122, 204, 0.15);
45
- }
46
- .logo-display {
47
- margin: 15px 0;
48
- }
49
- .logo-title {
50
- font-weight: 600;
51
- color: #333;
52
- margin-bottom: 10px;
53
- }
54
- .logo-sizes {
55
- display: flex;
56
- justify-content: center;
57
- align-items: center;
58
- gap: 10px;
59
- margin: 10px 0;
60
- }
61
- .size-label {
62
- font-size: 12px;
63
- color: #666;
64
- }
65
- .note {
66
- background: #e6f3ff;
67
- border: 1px solid #b8daff;
68
- border-radius: 6px;
69
- padding: 15px;
70
- color: #004085;
71
- font-size: 14px;
72
- line-height: 1.5;
73
- }
74
- .note strong {
75
- color: #002752;
76
- }
77
- </style>
78
- </head>
79
- <body>
80
- <div class="container">
81
- <h1>VibeSurf Logo Designs</h1>
82
-
83
- <div class="logo-grid">
84
- <!-- Neural Network Logo -->
85
- <div class="logo-card">
86
- <div class="logo-title">Neural Network</div>
87
- <div class="logo-display">
88
- <div class="logo-sizes">
89
- <div>
90
- <div class="size-label">16px</div>
91
- <img src="logo-neural.svg" width="16" height="16" alt="Neural 16px">
92
- </div>
93
- <div>
94
- <div class="size-label">48px</div>
95
- <img src="logo-neural.svg" width="48" height="48" alt="Neural 48px">
96
- </div>
97
- <div>
98
- <div class="size-label">128px</div>
99
- <img src="logo-neural.svg" width="128" height="128" alt="Neural 128px">
100
- </div>
101
- </div>
102
- </div>
103
- <div>AI-focused with neural network pattern</div>
104
- </div>
105
-
106
- <!-- Data Flow Logo -->
107
- <div class="logo-card">
108
- <div class="logo-title">Data Flow</div>
109
- <div class="logo-display">
110
- <div class="logo-sizes">
111
- <div>
112
- <div class="size-label">16px</div>
113
- <img src="logo-data.svg" width="16" height="16" alt="Data 16px">
114
- </div>
115
- <div>
116
- <div class="size-label">48px</div>
117
- <img src="logo-data.svg" width="48" height="48" alt="Data 48px">
118
- </div>
119
- <div>
120
- <div class="size-label">128px</div>
121
- <img src="logo-data.svg" width="128" height="128" alt="Data 128px">
122
- </div>
123
- </div>
124
- </div>
125
- <div>Data processing and connection flows</div>
126
- </div>
127
-
128
- <!-- Swarm Intelligence Logo -->
129
- <div class="logo-card">
130
- <div class="logo-title">Swarm Intelligence</div>
131
- <div class="logo-display">
132
- <div class="logo-sizes">
133
- <div>
134
- <div class="size-label">16px</div>
135
- <img src="logo-swarm.svg" width="16" height="16" alt="Swarm 16px">
136
- </div>
137
- <div>
138
- <div class="size-label">48px</div>
139
- <img src="logo-swarm.svg" width="48" height="48" alt="Swarm 48px">
140
- </div>
141
- <div>
142
- <div class="size-label">128px</div>
143
- <img src="logo-swarm.svg" width="128" height="128" alt="Swarm 128px">
144
- </div>
145
- </div>
146
- </div>
147
- <div>Hexagonal swarm pattern with connections</div>
148
- </div>
149
-
150
- <!-- Wave Surf Logo -->
151
- <div class="logo-card">
152
- <div class="logo-title">Wave Surf</div>
153
- <div class="logo-display">
154
- <div class="logo-sizes">
155
- <div>
156
- <div class="size-label">16px</div>
157
- <img src="logo-wave.svg" width="16" height="16" alt="Wave 16px">
158
- </div>
159
- <div>
160
- <div class="size-label">48px</div>
161
- <img src="logo-wave.svg" width="48" height="48" alt="Wave 48px">
162
- </div>
163
- <div>
164
- <div class="size-label">128px</div>
165
- <img src="logo-wave.svg" width="128" height="128" alt="Wave 128px">
166
- </div>
167
- </div>
168
- </div>
169
- <div>Surfing waves with connection nodes</div>
170
- </div>
171
- </div>
172
-
173
- <div class="note">
174
- <strong>Note:</strong> These SVG logos are modern, tech-focused designs for the VibeSurf AI browser extension.
175
- For best Chrome extension compatibility, convert to PNG format using:
176
- <br><br>
177
- • <strong>ImageMagick:</strong> <code>brew install imagemagick</code>
178
- <br>
179
- • <strong>rsvg-convert:</strong> <code>brew install librsvg</code>
180
- <br>
181
- • <strong>Online converter:</strong> Use any SVG to PNG converter website
182
- <br><br>
183
- The current manifest.json uses the Neural Network logo by default.
184
- </div>
185
- </div>
186
- </body>
187
- </html>