vibesurf 0.1.20__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.
- vibe_surf/_version.py +2 -2
- vibe_surf/backend/api/task.py +1 -1
- vibe_surf/backend/api/voices.py +481 -0
- vibe_surf/backend/database/migrations/v004_add_voice_profiles.sql +35 -0
- vibe_surf/backend/database/models.py +38 -1
- vibe_surf/backend/database/queries.py +189 -1
- vibe_surf/backend/main.py +2 -0
- vibe_surf/backend/shared_state.py +1 -1
- vibe_surf/backend/voice_model_config.py +25 -0
- vibe_surf/browser/agen_browser_profile.py +2 -0
- vibe_surf/browser/agent_browser_session.py +3 -3
- vibe_surf/chrome_extension/background.js +224 -9
- vibe_surf/chrome_extension/content.js +147 -0
- vibe_surf/chrome_extension/manifest.json +11 -2
- vibe_surf/chrome_extension/permission-iframe.html +38 -0
- vibe_surf/chrome_extension/permission-request.html +104 -0
- vibe_surf/chrome_extension/scripts/api-client.js +61 -0
- vibe_surf/chrome_extension/scripts/main.js +8 -2
- vibe_surf/chrome_extension/scripts/permission-iframe-request.js +188 -0
- vibe_surf/chrome_extension/scripts/permission-request.js +118 -0
- vibe_surf/chrome_extension/scripts/settings-manager.js +690 -3
- vibe_surf/chrome_extension/scripts/ui-manager.js +730 -119
- vibe_surf/chrome_extension/scripts/user-settings-storage.js +422 -0
- vibe_surf/chrome_extension/scripts/voice-recorder.js +514 -0
- vibe_surf/chrome_extension/sidepanel.html +106 -29
- vibe_surf/chrome_extension/styles/components.css +35 -0
- vibe_surf/chrome_extension/styles/input.css +164 -1
- vibe_surf/chrome_extension/styles/layout.css +1 -1
- vibe_surf/chrome_extension/styles/settings-environment.css +138 -0
- vibe_surf/chrome_extension/styles/settings-forms.css +7 -7
- vibe_surf/chrome_extension/styles/variables.css +51 -0
- vibe_surf/tools/voice_asr.py +79 -8
- {vibesurf-0.1.20.dist-info → vibesurf-0.1.21.dist-info}/METADATA +8 -12
- {vibesurf-0.1.20.dist-info → vibesurf-0.1.21.dist-info}/RECORD +38 -31
- vibe_surf/chrome_extension/icons/convert-svg.js +0 -33
- vibe_surf/chrome_extension/icons/logo-preview.html +0 -187
- {vibesurf-0.1.20.dist-info → vibesurf-0.1.21.dist-info}/WHEEL +0 -0
- {vibesurf-0.1.20.dist-info → vibesurf-0.1.21.dist-info}/entry_points.txt +0 -0
- {vibesurf-0.1.20.dist-info → vibesurf-0.1.21.dist-info}/licenses/LICENSE +0 -0
- {vibesurf-0.1.20.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
|
}
|
vibe_surf/tools/voice_asr.py
CHANGED
|
@@ -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
|
|
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.
|
|
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
|
|
@@ -91,18 +91,14 @@ uv run vibesurf
|
|
|
91
91
|
|
|
92
92
|
## 🗺️ Roadmap
|
|
93
93
|
|
|
94
|
-
|
|
94
|
+
We're building VibeSurf to be your ultimate AI browser companion. Here's what's coming next:
|
|
95
95
|
|
|
96
|
-
- **
|
|
97
|
-
- **
|
|
98
|
-
-
|
|
99
|
-
- **
|
|
100
|
-
|
|
101
|
-
|
|
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,5 +1,5 @@
|
|
|
1
1
|
vibe_surf/__init__.py,sha256=WtduuMFGauMD_9dpk4fnRnLTAP6ka9Lfu0feAFNzLfo,339
|
|
2
|
-
vibe_surf/_version.py,sha256=
|
|
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
|
|
@@ -13,69 +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=
|
|
17
|
-
vibe_surf/backend/shared_state.py,sha256=
|
|
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=
|
|
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=
|
|
28
|
-
vibe_surf/backend/database/queries.py,sha256=
|
|
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=
|
|
38
|
-
vibe_surf/browser/agent_browser_session.py,sha256=
|
|
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
|
|
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=
|
|
47
|
+
vibe_surf/chrome_extension/background.js,sha256=QNzF_dm7TvOzcZupogDvi1i5mEd0DPmQn4gp3yfcwPY,28666
|
|
45
48
|
vibe_surf/chrome_extension/config.js,sha256=g53UkfsaOFNC6fZG-THlBxdSjvswPsaQ9w8rxiHNq2E,1093
|
|
46
|
-
vibe_surf/chrome_extension/content.js,sha256=
|
|
49
|
+
vibe_surf/chrome_extension/content.js,sha256=cB67jK3vIE5zrpXAfi3p50H3EyTqK5xockOph0Q4kQg,13708
|
|
47
50
|
vibe_surf/chrome_extension/dev-reload.js,sha256=xQpi-1Ekb5P8Ogsm6rUK09QzxafwH0H409zBKmaUFNw,1790
|
|
48
|
-
vibe_surf/chrome_extension/manifest.json,sha256=
|
|
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
|
|
49
54
|
vibe_surf/chrome_extension/popup.html,sha256=n3dI_-WbILm0q8O_za6xX0WvOofz5lwT_7YXs0u9RAE,4248
|
|
50
|
-
vibe_surf/chrome_extension/sidepanel.html,sha256
|
|
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=
|
|
58
|
+
vibe_surf/chrome_extension/scripts/api-client.js,sha256=qAQ0WlARCSBb0mFkmjCgT68ra7P82U2xpXFCNWVjUJc,15704
|
|
56
59
|
vibe_surf/chrome_extension/scripts/file-manager.js,sha256=WcEaeoECq84jXqEo3Q2ywmqppwSUVm-0dtrbTYXL07g,15809
|
|
57
60
|
vibe_surf/chrome_extension/scripts/history-manager.js,sha256=J_EiBKrRp2cTxuy0Sq5oCju5YuX0_2pGG6NWrJSjC24,22218
|
|
58
|
-
vibe_surf/chrome_extension/scripts/main.js,sha256=
|
|
61
|
+
vibe_surf/chrome_extension/scripts/main.js,sha256=UsLTBHh3xAcZAAvQeWIHBPCZ-C8d7h7etzwBwAppUmM,17199
|
|
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
|
|
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
|
|
61
66
|
vibe_surf/chrome_extension/scripts/session-manager.js,sha256=sXh4j4dv3eKOGYeov8iUPt-DX5jKQLhcASDXRX9qW5Y,21126
|
|
62
|
-
vibe_surf/chrome_extension/scripts/settings-manager.js,sha256=
|
|
63
|
-
vibe_surf/chrome_extension/scripts/ui-manager.js,sha256=
|
|
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
|
|
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=
|
|
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=
|
|
70
|
-
vibe_surf/chrome_extension/styles/layout.css,sha256=
|
|
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=
|
|
73
|
-
vibe_surf/chrome_extension/styles/settings-forms.css,sha256=
|
|
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=
|
|
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=
|
|
89
|
-
vibesurf-0.1.
|
|
90
|
-
vibesurf-0.1.
|
|
91
|
-
vibesurf-0.1.
|
|
92
|
-
vibesurf-0.1.
|
|
93
|
-
vibesurf-0.1.
|
|
94
|
-
vibesurf-0.1.
|
|
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>
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|