vibesurf 0.1.19__py3-none-any.whl → 0.1.21__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 (42) hide show
  1. vibe_surf/_version.py +2 -2
  2. vibe_surf/agents/report_writer_agent.py +1 -1
  3. vibe_surf/backend/api/task.py +1 -1
  4. vibe_surf/backend/api/voices.py +481 -0
  5. vibe_surf/backend/database/migrations/v003_fix_task_status_case.sql +11 -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 +3 -3
  14. vibe_surf/chrome_extension/background.js +224 -9
  15. vibe_surf/chrome_extension/content.js +147 -0
  16. vibe_surf/chrome_extension/manifest.json +11 -2
  17. vibe_surf/chrome_extension/permission-iframe.html +38 -0
  18. vibe_surf/chrome_extension/permission-request.html +104 -0
  19. vibe_surf/chrome_extension/scripts/api-client.js +61 -0
  20. vibe_surf/chrome_extension/scripts/main.js +8 -2
  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/settings-manager.js +690 -3
  24. vibe_surf/chrome_extension/scripts/ui-manager.js +730 -119
  25. vibe_surf/chrome_extension/scripts/user-settings-storage.js +422 -0
  26. vibe_surf/chrome_extension/scripts/voice-recorder.js +514 -0
  27. vibe_surf/chrome_extension/sidepanel.html +106 -29
  28. vibe_surf/chrome_extension/styles/components.css +35 -0
  29. vibe_surf/chrome_extension/styles/input.css +164 -1
  30. vibe_surf/chrome_extension/styles/layout.css +1 -1
  31. vibe_surf/chrome_extension/styles/settings-environment.css +138 -0
  32. vibe_surf/chrome_extension/styles/settings-forms.css +7 -7
  33. vibe_surf/chrome_extension/styles/variables.css +51 -0
  34. vibe_surf/tools/voice_asr.py +125 -0
  35. {vibesurf-0.1.19.dist-info → vibesurf-0.1.21.dist-info}/METADATA +9 -12
  36. {vibesurf-0.1.19.dist-info → vibesurf-0.1.21.dist-info}/RECORD +40 -31
  37. vibe_surf/chrome_extension/icons/convert-svg.js +0 -33
  38. vibe_surf/chrome_extension/icons/logo-preview.html +0 -187
  39. {vibesurf-0.1.19.dist-info → vibesurf-0.1.21.dist-info}/WHEEL +0 -0
  40. {vibesurf-0.1.19.dist-info → vibesurf-0.1.21.dist-info}/entry_points.txt +0 -0
  41. {vibesurf-0.1.19.dist-info → vibesurf-0.1.21.dist-info}/licenses/LICENSE +0 -0
  42. {vibesurf-0.1.19.dist-info → vibesurf-0.1.21.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
  }
@@ -0,0 +1,125 @@
1
+ import os
2
+ import pdb
3
+
4
+ import dashscope
5
+ from openai import OpenAI
6
+ from google import genai
7
+ from typing import Optional
8
+ from vibe_surf.logger import get_logger
9
+
10
+ logger = get_logger(__name__)
11
+
12
+ class QwenASR:
13
+ def __init__(self, model="qwen3-asr-flash", api_key: Optional[str] = None):
14
+ dashscope.api_key = api_key or os.getenv("DASHSCOPE_API_KEY")
15
+ self.model = model or "qwen3-asr-flash"
16
+
17
+ def asr(self, wav_url: str):
18
+ if not wav_url.startswith("http"):
19
+ assert os.path.exists(wav_url), f"{wav_url} not exists!"
20
+ wav_url = f"file://{wav_url}"
21
+
22
+ try:
23
+ messages = [
24
+ {
25
+ "role": "user",
26
+ "content": [
27
+ {"audio": wav_url},
28
+ ]
29
+ }
30
+ ]
31
+ response = dashscope.MultiModalConversation.call(
32
+ model=self.model,
33
+ messages=messages,
34
+ result_format="message",
35
+ asr_options={
36
+ "enable_lid": True,
37
+ "enable_itn": False
38
+ }
39
+ )
40
+ if response.status_code != 200:
41
+ raise Exception(f"http status_code: {response.status_code} {response}")
42
+ output = response['output']['choices'][0]
43
+ if output['finish_reason'] not in ('stop', 'function_call'):
44
+ logger.warning(f'{self.model} finish with error...\n{response}')
45
+ return ""
46
+ recog_text = output["message"]["content"][0]["text"]
47
+ return recog_text
48
+ except Exception as e:
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)}")
125
+ return ""
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: vibesurf
3
- Version: 0.1.19
3
+ Version: 0.1.21
4
4
  Summary: VibeSurf: A powerful browser assistant for vibe surfing
5
5
  Author: Shao Warm
6
6
  License: Apache-2.0
@@ -42,6 +42,7 @@ Requires-Dist: markdown-pdf>=1.9
42
42
  Requires-Dist: nanoid>=2.0.0
43
43
  Requires-Dist: markdownify>=1.2.0
44
44
  Requires-Dist: pathvalidate>=3.3.1
45
+ Requires-Dist: dashscope>=1.24.5
45
46
  Dynamic: license-file
46
47
 
47
48
  # VibeSurf: A powerful browser assistant for vibe surfing
@@ -90,18 +91,14 @@ uv run vibesurf
90
91
 
91
92
  ## 🗺️ Roadmap
92
93
 
93
- ### 🤖 Agent Enhancements
94
+ We're building VibeSurf to be your ultimate AI browser companion. Here's what's coming next:
94
95
 
95
- - **VibeSurf Agent Refactoring**: Remove LangGraph framework dependency to make the agent more flexible and powerful
96
- - **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
97
- - **Enhanced Report Writer Agent**: Optimize the report writer to generate more visually appealing reports with rich graphics and illustrations
98
- - **Global Memory System**: Implement global memory capabilities to make VibeSurf understand and adapt to user preferences better
99
-
100
- ### 🧩 Extension Features
101
-
102
- - **Enhanced Tab Management**: Add @specific tab handling with `/research` and `/deep_research` specialized task commands
103
- - **Smart Text Processing**: Implement word/paragraph translation, summarization, and explanation features for selected content
104
- - **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
105
102
 
106
103
 
107
104
  ## 🎬 Demo
@@ -1,11 +1,11 @@
1
1
  vibe_surf/__init__.py,sha256=WtduuMFGauMD_9dpk4fnRnLTAP6ka9Lfu0feAFNzLfo,339
2
- vibe_surf/_version.py,sha256=fjpHGGz4Pr5zOvmurEGTqs99z8OU4DpgAvX1DM3jqc4,706
2
+ vibe_surf/_version.py,sha256=QwRysHnO-cJwIFSvXReHDj93DEPhlibOTtnnb25J9-c,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
7
  vibe_surf/agents/browser_use_agent.py,sha256=qmm3TAVzEYjvOvSQEa5xUZOgpBOR_8qePME8BjLjOd0,45951
8
- vibe_surf/agents/report_writer_agent.py,sha256=0RZHcrk6WoC7GE66QshrPLt6ka7GlRtnCsgjO7Dfxfw,20966
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
@@ -13,68 +13,76 @@ vibe_surf/agents/prompts/report_writer_prompt.py,sha256=sZE8MUT1CDLmRzbnbEQzAvTw
13
13
  vibe_surf/agents/prompts/vibe_surf_prompt.py,sha256=gn8Q234zwtUxVzduzmINmqV-iooE-aJ9u2-yXQ3Wo6M,5573
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
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
32
36
  vibe_surf/backend/utils/__init__.py,sha256=V8leMFp7apAglUAoCHPZrNNcRHthSLYIudIJE5qwjb0,184
33
37
  vibe_surf/backend/utils/encryption.py,sha256=CjLNh_n0Luhfa-6BB-icfzkiiDqj5b4Gu6MADU3p2eM,3754
34
38
  vibe_surf/backend/utils/llm_factory.py,sha256=mNy8o3sw7vYJ8gwiTsrgXbG7Ri_B11ylE4KGcfHULp8,8972
35
39
  vibe_surf/browser/__init__.py,sha256=_UToO2fZfSCrfjOcxhn4Qq7ZLbYeyPuUUEmqIva-Yv8,325
36
- vibe_surf/browser/agen_browser_profile.py,sha256=4H4qDjqLqHAfMi3niBI9fd0S1GlVDWYDUUOrEQoNkl8,5677
37
- 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=YRpRH74_jRDEaReXhtIW8Pnm29Li4Kf3KjLi-ZFSDZg,33890
38
42
  vibe_surf/browser/browser_manager.py,sha256=PFJ9flmqR2uokuRZ3PDh_Dy6_6qcQ6kH_eRc1yT6Iq8,11257
39
43
  vibe_surf/browser/utils.py,sha256=bBtpMiyz2ixWOr31GbJwZ8pVYcnxztKjTJJO92z1BDY,35742
40
44
  vibe_surf/browser/watchdogs/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
41
45
  vibe_surf/browser/watchdogs/action_watchdog.py,sha256=6lM0nOR67clLzC6nVEMZ2Vam8VHDW8GRlg_jbGUHbPk,5297
42
46
  vibe_surf/browser/watchdogs/dom_watchdog.py,sha256=c0AJo2yckWFZqpgnPz7RbsRjcpwlhjD4mSIzCAbRn48,10994
43
- vibe_surf/chrome_extension/background.js,sha256=qXbX-XhEI5reW7n7ePBcyqEJUh4HtlcAxgfWvg92-_k,19628
47
+ vibe_surf/chrome_extension/background.js,sha256=QNzF_dm7TvOzcZupogDvi1i5mEd0DPmQn4gp3yfcwPY,28666
44
48
  vibe_surf/chrome_extension/config.js,sha256=g53UkfsaOFNC6fZG-THlBxdSjvswPsaQ9w8rxiHNq2E,1093
45
- vibe_surf/chrome_extension/content.js,sha256=q6JRpmHAEdPWNnFSIqoPv8eBm0T574c3H5hp-M4LYlc,8027
49
+ vibe_surf/chrome_extension/content.js,sha256=cB67jK3vIE5zrpXAfi3p50H3EyTqK5xockOph0Q4kQg,13708
46
50
  vibe_surf/chrome_extension/dev-reload.js,sha256=xQpi-1Ekb5P8Ogsm6rUK09QzxafwH0H409zBKmaUFNw,1790
47
- vibe_surf/chrome_extension/manifest.json,sha256=B08nHuU-bPc-pUr30Y-of39TjMlrE7D5gP2sZjZ8CrE,1142
51
+ vibe_surf/chrome_extension/manifest.json,sha256=csaBh7tf_45FHg8eVplMXz0neMahpXbgqk9rJ5EXts4,1277
52
+ vibe_surf/chrome_extension/permission-iframe.html,sha256=R6VM1JfrzkfXTTD5mGCKui1dDWTqHEe9n8TtVdZNPNg,948
53
+ vibe_surf/chrome_extension/permission-request.html,sha256=ct1LTl_9euABiHcqNU6AFcvpCAfANWO0y_dDEAjtwfE,2905
48
54
  vibe_surf/chrome_extension/popup.html,sha256=n3dI_-WbILm0q8O_za6xX0WvOofz5lwT_7YXs0u9RAE,4248
49
- vibe_surf/chrome_extension/sidepanel.html,sha256=UuFTM_32LU3aYpem8o0muhW4FvOdu-7uyfY-tHgArXw,29639
50
- vibe_surf/chrome_extension/icons/convert-svg.js,sha256=j137nZA7MJK35NtrwWff8yb3UEKa5XTAvnV6EjY-CVI,953
51
- 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
52
56
  vibe_surf/chrome_extension/icons/logo.icns,sha256=ZzY1eIKF4dNhNW4CeE1UBQloxNVC7bQx3qcClo3CnMQ,1569615
53
57
  vibe_surf/chrome_extension/icons/logo.png,sha256=PLmv1E6sCGXUE5ZDxr-pFPQd9Gvaw_f1TnYmF8VIssU,566385
54
- vibe_surf/chrome_extension/scripts/api-client.js,sha256=5H5GU-NsO_V_sEP3JheKJ3ejjxiruKZlM5hoqAaRjFs,13880
58
+ vibe_surf/chrome_extension/scripts/api-client.js,sha256=qAQ0WlARCSBb0mFkmjCgT68ra7P82U2xpXFCNWVjUJc,15704
55
59
  vibe_surf/chrome_extension/scripts/file-manager.js,sha256=WcEaeoECq84jXqEo3Q2ywmqppwSUVm-0dtrbTYXL07g,15809
56
60
  vibe_surf/chrome_extension/scripts/history-manager.js,sha256=J_EiBKrRp2cTxuy0Sq5oCju5YuX0_2pGG6NWrJSjC24,22218
57
- vibe_surf/chrome_extension/scripts/main.js,sha256=WhmCGktQoSl7aaMl8a9ysJJiysAjf12bWGypMucCSVg,16913
61
+ vibe_surf/chrome_extension/scripts/main.js,sha256=UsLTBHh3xAcZAAvQeWIHBPCZ-C8d7h7etzwBwAppUmM,17199
58
62
  vibe_surf/chrome_extension/scripts/markdown-it.min.js,sha256=gZ3xe0BdCJplNiHWTKrm6AGZydPy34jJKZqFIf-7hIw,102948
59
63
  vibe_surf/chrome_extension/scripts/modal-manager.js,sha256=9ekFaTmy8sk94KK9HZJ7739ObsZ6ssllmRLP9rQxUKU,14187
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
60
66
  vibe_surf/chrome_extension/scripts/session-manager.js,sha256=sXh4j4dv3eKOGYeov8iUPt-DX5jKQLhcASDXRX9qW5Y,21126
61
- vibe_surf/chrome_extension/scripts/settings-manager.js,sha256=rgstYooxZtV9QjqP8KRRQclHbeiZJozZZfv80A6M_P4,48601
62
- vibe_surf/chrome_extension/scripts/ui-manager.js,sha256=nFwe1vb9S74wD4Z3QreyMn21DuKMBKOMH3BwpvP-jfY,82488
67
+ vibe_surf/chrome_extension/scripts/settings-manager.js,sha256=9UGJFxQ1DbDbfndEBDv32MHfAW8YdfZmwg0vW6ABXOQ,77257
68
+ vibe_surf/chrome_extension/scripts/ui-manager.js,sha256=7mSgf3CHeA_jt2Lv5cPHi3YBnTwgvHfcxz1RDnk5BOg,102452
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
63
71
  vibe_surf/chrome_extension/styles/activity.css,sha256=aEFa_abskrDQvwsesPVOyJW3rUQUEBQpMKPHhY94CoA,19601
64
72
  vibe_surf/chrome_extension/styles/animations.css,sha256=TLAet_xXBxCA-H36BWP4xBGBIVjbDdAj7Q6OPxPsbE8,7891
65
73
  vibe_surf/chrome_extension/styles/base.css,sha256=d8nt7Wej1r57G6pnBIGKEVkepFxlq8Ets0isngCf5w8,1296
66
- vibe_surf/chrome_extension/styles/components.css,sha256=cbpYgT1ujG11axRa9xnHizgm4wfrpSzq_nkUOdfNZ0A,18495
74
+ vibe_surf/chrome_extension/styles/components.css,sha256=k8OkCJlTs5JuuU8p9tXeNeIpmTiRaQJJyG3Fk_6sE_A,19114
67
75
  vibe_surf/chrome_extension/styles/history-modal.css,sha256=xCg0EPz1N4kg47jnz9q9E1M4zGag8lJMt_msAOkZi3M,16583
68
- vibe_surf/chrome_extension/styles/input.css,sha256=7gmWfXbm3CHPEPHtzwSwAtGeNGJtzrect7yYy57rnEo,10745
69
- 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
70
78
  vibe_surf/chrome_extension/styles/responsive.css,sha256=a_SFX-PeOcenG4xMeoru5XFnnXdf0YhEyRzvTVVZHdI,8529
71
- vibe_surf/chrome_extension/styles/settings-environment.css,sha256=OzgezmfZZ_yD60Jy9Uiq83mDmMCfk2dPPcZISb9Eqd4,3390
72
- 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
73
81
  vibe_surf/chrome_extension/styles/settings-modal.css,sha256=VEkr1WmDltdeaoP4fWJ-Jk2t8TNrB5rsz-zLUv3usPI,2727
74
82
  vibe_surf/chrome_extension/styles/settings-profiles.css,sha256=o0FowPPiZum_DvYIGF5p4gEl63QVXTHDoVeD1Q4yy_s,4946
75
83
  vibe_surf/chrome_extension/styles/settings-responsive.css,sha256=jLE0yG15n2aI6_6QF04Rh0Y-oqqLNen81YAVt5yc2Ws,2168
76
84
  vibe_surf/chrome_extension/styles/settings-utilities.css,sha256=3PuQS2857kg83d5erLbLdo_7J95-qV-qyNWS5M-w1oQ,505
77
- 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
78
86
  vibe_surf/llm/__init__.py,sha256=_vDVPo6STf343p1SgMQrF5023hicAx0g83pK2Gbk4Ek,601
79
87
  vibe_surf/llm/openai_compatible.py,sha256=8v0LW_-ZoKv4gcO--6_SmU_BLF8XCJaiPxZ6kXFgM4I,14998
80
88
  vibe_surf/tools/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
@@ -84,9 +92,10 @@ vibe_surf/tools/mcp_client.py,sha256=OeCoTgyx4MoY7JxXndK6pGHIoyFOhf5r7XCbx25y1Ec
84
92
  vibe_surf/tools/report_writer_tools.py,sha256=sUqUFr-_Rs8RJ0Bs77Hrp07kNwRIvHv7ErzSPYSlbTg,705
85
93
  vibe_surf/tools/vibesurf_tools.py,sha256=VVhM2IZOXwpGvJ3v9jTXFHmxTxF2jAzhrwqFqxFVuX4,29976
86
94
  vibe_surf/tools/views.py,sha256=aPoabrXOCrn5vPCAauMKYvpyP9n0qC2xKn1IbjAGXwE,4218
87
- vibesurf-0.1.19.dist-info/licenses/LICENSE,sha256=czn6QYya0-jhLnStD9JqnMS-hwP5wRByipkrGTvoXLI,11355
88
- vibesurf-0.1.19.dist-info/METADATA,sha256=-qI0fID0163n3z-oBIL15hUrNrvhlqCWDzg4iffUK3A,5313
89
- vibesurf-0.1.19.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
90
- vibesurf-0.1.19.dist-info/entry_points.txt,sha256=UxqpvMocL-PR33S6vLF2OmXn-kVzM-DneMeZeHcPMM8,48
91
- vibesurf-0.1.19.dist-info/top_level.txt,sha256=VPZGHqSb6EEqcJ4ZX6bHIuWfon5f6HXl3c7BYpbRqnY,10
92
- vibesurf-0.1.19.dist-info/RECORD,,
95
+ vibe_surf/tools/voice_asr.py,sha256=AJG0yq_Jq-j8ulDlbPhVFfK1jch9_ASesis73iki9II,4702
96
+ vibesurf-0.1.21.dist-info/licenses/LICENSE,sha256=czn6QYya0-jhLnStD9JqnMS-hwP5wRByipkrGTvoXLI,11355
97
+ vibesurf-0.1.21.dist-info/METADATA,sha256=ZU8_6P_WYntKGLDSxNx4zfdnYHLMeMvQUByxS-xFKyM,5158
98
+ vibesurf-0.1.21.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
99
+ vibesurf-0.1.21.dist-info/entry_points.txt,sha256=UxqpvMocL-PR33S6vLF2OmXn-kVzM-DneMeZeHcPMM8,48
100
+ vibesurf-0.1.21.dist-info/top_level.txt,sha256=VPZGHqSb6EEqcJ4ZX6bHIuWfon5f6HXl3c7BYpbRqnY,10
101
+ vibesurf-0.1.21.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>