vibesurf 0.1.7__tar.gz → 0.1.9__tar.gz

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 (92) hide show
  1. vibesurf-0.1.9/.github/workflows/publish.yml +222 -0
  2. {vibesurf-0.1.7 → vibesurf-0.1.9}/.gitignore +2 -1
  3. {vibesurf-0.1.7 → vibesurf-0.1.9}/PKG-INFO +8 -3
  4. {vibesurf-0.1.7 → vibesurf-0.1.9}/README.md +5 -1
  5. vibesurf-0.1.9/build-local.bat +120 -0
  6. vibesurf-0.1.9/build-local.sh +124 -0
  7. vibesurf-0.1.9/docs/EXECUTABLE_BUILD.md +197 -0
  8. {vibesurf-0.1.7 → vibesurf-0.1.9}/pyproject.toml +2 -1
  9. {vibesurf-0.1.7 → vibesurf-0.1.9}/tests/test_agents.py +10 -12
  10. {vibesurf-0.1.7 → vibesurf-0.1.9}/tests/test_browser.py +5 -4
  11. {vibesurf-0.1.7 → vibesurf-0.1.9}/tests/test_controller.py +1 -2
  12. {vibesurf-0.1.7 → vibesurf-0.1.9}/vibe_surf/_version.py +3 -3
  13. {vibesurf-0.1.7 → vibesurf-0.1.9}/vibe_surf/agents/browser_use_agent.py +48 -154
  14. {vibesurf-0.1.7 → vibesurf-0.1.9}/vibe_surf/agents/vibe_surf_agent.py +10 -9
  15. {vibesurf-0.1.7 → vibesurf-0.1.9}/vibe_surf/backend/shared_state.py +1 -1
  16. {vibesurf-0.1.7 → vibesurf-0.1.9}/vibe_surf/backend/utils/encryption.py +5 -35
  17. {vibesurf-0.1.7 → vibesurf-0.1.9}/vibe_surf/browser/agen_browser_profile.py +3 -4
  18. {vibesurf-0.1.7 → vibesurf-0.1.9}/vibe_surf/browser/agent_browser_session.py +115 -52
  19. {vibesurf-0.1.7 → vibesurf-0.1.9}/vibe_surf/browser/browser_manager.py +2 -2
  20. {vibesurf-0.1.7 → vibesurf-0.1.9}/vibe_surf/browser/utils.py +8 -15
  21. vibesurf-0.1.9/vibe_surf/browser/watchdogs/action_watchdog.py +105 -0
  22. vibesurf-0.1.9/vibe_surf/browser/watchdogs/dom_watchdog.py +282 -0
  23. {vibesurf-0.1.7 → vibesurf-0.1.9}/vibe_surf/cli.py +9 -2
  24. {vibesurf-0.1.7 → vibesurf-0.1.9}/vibe_surf/controller/mcp_client.py +0 -4
  25. vibesurf-0.1.7/vibe_surf/controller/vibesurf_controller.py → vibesurf-0.1.9/vibe_surf/controller/vibesurf_tools.py +13 -48
  26. {vibesurf-0.1.7 → vibesurf-0.1.9}/vibesurf.egg-info/PKG-INFO +8 -3
  27. {vibesurf-0.1.7 → vibesurf-0.1.9}/vibesurf.egg-info/SOURCES.txt +6 -2
  28. {vibesurf-0.1.7 → vibesurf-0.1.9}/vibesurf.egg-info/requires.txt +2 -1
  29. vibesurf-0.1.9/vibesurf.spec +145 -0
  30. vibesurf-0.1.7/.github/workflows/publish.yml +0 -98
  31. vibesurf-0.1.7/vibe_surf/browser/watchdogs/action_watchdog.py +0 -291
  32. vibesurf-0.1.7/vibe_surf/browser/watchdogs/dom_watchdog.py +0 -954
  33. {vibesurf-0.1.7 → vibesurf-0.1.9}/.env.example +0 -0
  34. {vibesurf-0.1.7 → vibesurf-0.1.9}/.python-version +0 -0
  35. {vibesurf-0.1.7 → vibesurf-0.1.9}/LICENSE +0 -0
  36. {vibesurf-0.1.7 → vibesurf-0.1.9}/MANIFEST.in +0 -0
  37. {vibesurf-0.1.7 → vibesurf-0.1.9}/docs/PYPI_SETUP.md +0 -0
  38. {vibesurf-0.1.7 → vibesurf-0.1.9}/setup.cfg +0 -0
  39. {vibesurf-0.1.7 → vibesurf-0.1.9}/tests/test_backend_api.py +0 -0
  40. {vibesurf-0.1.7 → vibesurf-0.1.9}/vibe_surf/__init__.py +0 -0
  41. {vibesurf-0.1.7 → vibesurf-0.1.9}/vibe_surf/agents/__init__.py +0 -0
  42. {vibesurf-0.1.7 → vibesurf-0.1.9}/vibe_surf/agents/prompts/__init__.py +0 -0
  43. {vibesurf-0.1.7 → vibesurf-0.1.9}/vibe_surf/agents/prompts/vibe_surf_prompt.py +0 -0
  44. {vibesurf-0.1.7 → vibesurf-0.1.9}/vibe_surf/agents/report_writer_agent.py +0 -0
  45. {vibesurf-0.1.7 → vibesurf-0.1.9}/vibe_surf/backend/__init__.py +0 -0
  46. {vibesurf-0.1.7 → vibesurf-0.1.9}/vibe_surf/backend/api/__init__.py +0 -0
  47. {vibesurf-0.1.7 → vibesurf-0.1.9}/vibe_surf/backend/api/activity.py +0 -0
  48. {vibesurf-0.1.7 → vibesurf-0.1.9}/vibe_surf/backend/api/config.py +0 -0
  49. {vibesurf-0.1.7 → vibesurf-0.1.9}/vibe_surf/backend/api/files.py +0 -0
  50. {vibesurf-0.1.7 → vibesurf-0.1.9}/vibe_surf/backend/api/models.py +0 -0
  51. {vibesurf-0.1.7 → vibesurf-0.1.9}/vibe_surf/backend/api/task.py +0 -0
  52. {vibesurf-0.1.7 → vibesurf-0.1.9}/vibe_surf/backend/database/__init__.py +0 -0
  53. {vibesurf-0.1.7 → vibesurf-0.1.9}/vibe_surf/backend/database/manager.py +0 -0
  54. {vibesurf-0.1.7 → vibesurf-0.1.9}/vibe_surf/backend/database/models.py +0 -0
  55. {vibesurf-0.1.7 → vibesurf-0.1.9}/vibe_surf/backend/database/queries.py +0 -0
  56. {vibesurf-0.1.7 → vibesurf-0.1.9}/vibe_surf/backend/database/schemas.py +0 -0
  57. {vibesurf-0.1.7 → vibesurf-0.1.9}/vibe_surf/backend/llm_config.py +0 -0
  58. {vibesurf-0.1.7 → vibesurf-0.1.9}/vibe_surf/backend/main.py +0 -0
  59. {vibesurf-0.1.7 → vibesurf-0.1.9}/vibe_surf/backend/migrations/__init__.py +0 -0
  60. {vibesurf-0.1.7 → vibesurf-0.1.9}/vibe_surf/backend/migrations/init_db.py +0 -0
  61. {vibesurf-0.1.7 → vibesurf-0.1.9}/vibe_surf/backend/migrations/seed_data.py +0 -0
  62. {vibesurf-0.1.7 → vibesurf-0.1.9}/vibe_surf/backend/utils/__init__.py +0 -0
  63. {vibesurf-0.1.7 → vibesurf-0.1.9}/vibe_surf/backend/utils/llm_factory.py +0 -0
  64. {vibesurf-0.1.7 → vibesurf-0.1.9}/vibe_surf/browser/__init__.py +0 -0
  65. {vibesurf-0.1.7 → vibesurf-0.1.9}/vibe_surf/browser/watchdogs/__init__.py +0 -0
  66. {vibesurf-0.1.7 → vibesurf-0.1.9}/vibe_surf/chrome_extension/background.js +0 -0
  67. {vibesurf-0.1.7 → vibesurf-0.1.9}/vibe_surf/chrome_extension/config.js +0 -0
  68. {vibesurf-0.1.7 → vibesurf-0.1.9}/vibe_surf/chrome_extension/content.js +0 -0
  69. {vibesurf-0.1.7 → vibesurf-0.1.9}/vibe_surf/chrome_extension/dev-reload.js +0 -0
  70. {vibesurf-0.1.7 → vibesurf-0.1.9}/vibe_surf/chrome_extension/icons/convert-svg.js +0 -0
  71. {vibesurf-0.1.7 → vibesurf-0.1.9}/vibe_surf/chrome_extension/icons/logo-preview.html +0 -0
  72. {vibesurf-0.1.7 → vibesurf-0.1.9}/vibe_surf/chrome_extension/icons/logo.png +0 -0
  73. {vibesurf-0.1.7 → vibesurf-0.1.9}/vibe_surf/chrome_extension/manifest.json +0 -0
  74. {vibesurf-0.1.7 → vibesurf-0.1.9}/vibe_surf/chrome_extension/popup.html +0 -0
  75. {vibesurf-0.1.7 → vibesurf-0.1.9}/vibe_surf/chrome_extension/scripts/api-client.js +0 -0
  76. {vibesurf-0.1.7 → vibesurf-0.1.9}/vibe_surf/chrome_extension/scripts/main.js +0 -0
  77. {vibesurf-0.1.7 → vibesurf-0.1.9}/vibe_surf/chrome_extension/scripts/markdown-it.min.js +0 -0
  78. {vibesurf-0.1.7 → vibesurf-0.1.9}/vibe_surf/chrome_extension/scripts/session-manager.js +0 -0
  79. {vibesurf-0.1.7 → vibesurf-0.1.9}/vibe_surf/chrome_extension/scripts/ui-manager.js +0 -0
  80. {vibesurf-0.1.7 → vibesurf-0.1.9}/vibe_surf/chrome_extension/sidepanel.html +0 -0
  81. {vibesurf-0.1.7 → vibesurf-0.1.9}/vibe_surf/chrome_extension/styles/animations.css +0 -0
  82. {vibesurf-0.1.7 → vibesurf-0.1.9}/vibe_surf/chrome_extension/styles/components.css +0 -0
  83. {vibesurf-0.1.7 → vibesurf-0.1.9}/vibe_surf/chrome_extension/styles/main.css +0 -0
  84. {vibesurf-0.1.7 → vibesurf-0.1.9}/vibe_surf/chrome_extension/styles/settings.css +0 -0
  85. {vibesurf-0.1.7 → vibesurf-0.1.9}/vibe_surf/controller/__init__.py +0 -0
  86. {vibesurf-0.1.7 → vibesurf-0.1.9}/vibe_surf/controller/file_system.py +0 -0
  87. {vibesurf-0.1.7 → vibesurf-0.1.9}/vibe_surf/controller/views.py +0 -0
  88. {vibesurf-0.1.7 → vibesurf-0.1.9}/vibe_surf/llm/__init__.py +0 -0
  89. {vibesurf-0.1.7 → vibesurf-0.1.9}/vibe_surf/llm/openai_compatible.py +0 -0
  90. {vibesurf-0.1.7 → vibesurf-0.1.9}/vibesurf.egg-info/dependency_links.txt +0 -0
  91. {vibesurf-0.1.7 → vibesurf-0.1.9}/vibesurf.egg-info/entry_points.txt +0 -0
  92. {vibesurf-0.1.7 → vibesurf-0.1.9}/vibesurf.egg-info/top_level.txt +0 -0
@@ -0,0 +1,222 @@
1
+ name: Build and Publish
2
+
3
+ on:
4
+ release:
5
+ types: [published, edited]
6
+ workflow_dispatch: # Allow manual trigger
7
+
8
+ jobs:
9
+ test:
10
+ runs-on: ubuntu-latest
11
+ strategy:
12
+ matrix:
13
+ python-version: ['3.11', '3.12']
14
+
15
+ steps:
16
+ - uses: actions/checkout@v4
17
+ with:
18
+ ref: 'main' # Always checkout main branch for latest code
19
+ fetch-depth: 0 # Full history for setuptools-scm
20
+
21
+ - name: Set up Python ${{ matrix.python-version }}
22
+ uses: actions/setup-python@v5
23
+ with:
24
+ python-version: ${{ matrix.python-version }}
25
+
26
+ - name: Install dependencies
27
+ run: |
28
+ python -m pip install --upgrade pip
29
+ pip install build pytest
30
+ pip install -e .
31
+
32
+ - name: Test CLI import
33
+ run: |
34
+ python -c "import vibe_surf; print(f'VibeSurf version: {vibe_surf.__version__}')"
35
+ python -c "from vibe_surf.cli import main; print('CLI import successful')"
36
+
37
+ build-wheels:
38
+ needs: test
39
+ runs-on: ubuntu-latest
40
+
41
+ steps:
42
+ - uses: actions/checkout@v4
43
+ with:
44
+ ref: 'main' # Always checkout main branch for latest code
45
+ fetch-depth: 0 # Full history for setuptools-scm
46
+
47
+ - name: Set up Python
48
+ uses: actions/setup-python@v5
49
+ with:
50
+ python-version: '3.11'
51
+
52
+ - name: Install build dependencies
53
+ run: |
54
+ python -m pip install --upgrade pip
55
+ pip install build setuptools-scm[toml]
56
+
57
+ - name: Build package
58
+ run: python -m build
59
+
60
+ - name: Check built package
61
+ run: |
62
+ pip install twine
63
+ twine check dist/*
64
+
65
+ # Show package contents
66
+ echo "=== Built packages ==="
67
+ ls -la dist/
68
+
69
+ echo "=== Package info ==="
70
+ python -m pip install dist/*.whl
71
+ python -c "import vibe_surf; print(f'Installed version: {vibe_surf.__version__}')"
72
+
73
+ - name: Upload build artifacts
74
+ uses: actions/upload-artifact@v4
75
+ with:
76
+ name: dist
77
+ path: dist/
78
+
79
+ build-executables:
80
+ needs: test
81
+ strategy:
82
+ matrix:
83
+ include:
84
+ # Windows x64
85
+ - os: windows-latest
86
+ asset_name: vibesurf-windows-x64.exe
87
+ activate_cmd: .venv\Scripts\activate.bat
88
+ # macOS Intel (x86_64) - compatible with Apple Silicon via Rosetta 2
89
+ - os: macos-13
90
+ asset_name: vibesurf-macos-intel-x64
91
+ activate_cmd: source .venv/bin/activate
92
+ # macOS Apple Silicon (arm64) - native performance
93
+ - os: macos-14
94
+ asset_name: vibesurf-macos-apple-silicon
95
+ activate_cmd: source .venv/bin/activate
96
+ # Linux x64
97
+ - os: ubuntu-latest
98
+ asset_name: vibesurf-linux-x64
99
+ activate_cmd: source .venv/bin/activate
100
+
101
+ runs-on: ${{ matrix.os }}
102
+
103
+ steps:
104
+ - uses: actions/checkout@v4
105
+ with:
106
+ fetch-depth: 0
107
+
108
+ # Install uv (key step for consistent environment)
109
+ - name: Install uv
110
+ uses: astral-sh/setup-uv@v3
111
+ with:
112
+ version: "latest"
113
+
114
+ # Create uv environment and install current repository code
115
+ - name: Create uv environment
116
+ shell: bash
117
+ run: |
118
+ uv venv --python 3.12
119
+ if [[ "$RUNNER_OS" == "Windows" ]]; then
120
+ .venv/Scripts/activate.bat
121
+ uv pip install -e .
122
+ uv pip install pyinstaller
123
+ else
124
+ source .venv/bin/activate
125
+ uv pip install -e .
126
+ uv pip install pyinstaller
127
+ fi
128
+
129
+ # Verify environment
130
+ - name: Verify environment
131
+ shell: bash
132
+ run: |
133
+ if [[ "$RUNNER_OS" == "Windows" ]]; then
134
+ .venv/Scripts/activate.bat
135
+ python --version
136
+ python -c "from vibe_surf.cli import main; print('CLI available')"
137
+ else
138
+ source .venv/bin/activate
139
+ python --version
140
+ which python
141
+ python -c "from vibe_surf.cli import main; print('CLI available')"
142
+ fi
143
+
144
+ # Build executable using uv environment
145
+ - name: Build executable with uv environment
146
+ shell: bash
147
+ run: |
148
+ if [[ "$RUNNER_OS" == "Windows" ]]; then
149
+ .venv/Scripts/activate.bat
150
+ pyinstaller vibesurf.spec --clean --noconfirm
151
+ else
152
+ source .venv/bin/activate
153
+ pyinstaller vibesurf.spec --clean --noconfirm
154
+ fi
155
+
156
+ - name: Prepare executable
157
+ shell: bash
158
+ run: |
159
+ if [[ "$RUNNER_OS" == "Windows" ]]; then
160
+ mv dist/vibesurf.exe dist/${{ matrix.asset_name }}
161
+ else
162
+ mv dist/vibesurf dist/${{ matrix.asset_name }}
163
+ chmod +x dist/${{ matrix.asset_name }}
164
+ fi
165
+
166
+ - name: Test executable
167
+ shell: bash
168
+ run: |
169
+ # Basic test to ensure executable runs
170
+ if [[ "$RUNNER_OS" == "Windows" ]]; then
171
+ echo "Testing Windows executable..."
172
+ # Simple existence check for Windows
173
+ ls -la dist/${{ matrix.asset_name }}
174
+ else
175
+ echo "Testing Unix executable..."
176
+ ./dist/${{ matrix.asset_name }} --help || echo "Basic test completed"
177
+ fi
178
+
179
+ - name: Upload executable
180
+ uses: actions/upload-artifact@v4
181
+ with:
182
+ name: ${{ matrix.asset_name }}
183
+ path: dist/${{ matrix.asset_name }}
184
+
185
+ publish-pypi:
186
+ needs: [test, build-wheels]
187
+ runs-on: ubuntu-latest
188
+ environment: release
189
+ permissions:
190
+ id-token: write # Required for trusted publishing
191
+
192
+ steps:
193
+ - name: Download build artifacts
194
+ uses: actions/download-artifact@v4
195
+ with:
196
+ name: dist
197
+ path: dist/
198
+
199
+ - name: Publish to PyPI
200
+ uses: pypa/gh-action-pypi-publish@release/v1
201
+ with:
202
+ password: ${{ secrets.PYPI_API_TOKEN }}
203
+ # Use the following line if you want to use trusted publishing instead
204
+ # skip-existing: true
205
+
206
+ publish-executables:
207
+ needs: [test, build-executables]
208
+ runs-on: ubuntu-latest
209
+ if: github.event_name == 'release'
210
+
211
+ steps:
212
+ - name: Download all artifacts
213
+ uses: actions/download-artifact@v4
214
+
215
+ - name: Upload executables to release
216
+ uses: softprops/action-gh-release@v1
217
+ with:
218
+ files: |
219
+ vibesurf-windows-x64.exe/vibesurf-windows-x64.exe
220
+ vibesurf-macos-intel-x64/vibesurf-macos-intel-x64
221
+ vibesurf-macos-apple-silicon/vibesurf-macos-apple-silicon
222
+ vibesurf-linux-x64/vibesurf-linux-x64
@@ -19,4 +19,5 @@ uv.lock
19
19
  swarmsurf_workspace
20
20
  workspace
21
21
  *.db
22
- vibe_surf/_version.py
22
+ vibe_surf/_version.py
23
+ .build-env
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: vibesurf
3
- Version: 0.1.7
3
+ Version: 0.1.9
4
4
  Summary: VibeSurf: A powerful browser assistant for vibe surfing
5
5
  Author: Shao Warm
6
6
  License: Apache-2.0
@@ -26,7 +26,7 @@ Requires-Dist: json-repair>=0.48.0
26
26
  Requires-Dist: aiohttp>=3.12.15
27
27
  Requires-Dist: scikit-image>=0.25.2
28
28
  Requires-Dist: python-socks>=2.7.2
29
- Requires-Dist: browser-use==0.6.1
29
+ Requires-Dist: browser-use==0.7.1
30
30
  Requires-Dist: langgraph>=0.6.4
31
31
  Requires-Dist: fastapi>=0.104.0
32
32
  Requires-Dist: uvicorn[standard]>=0.24.0
@@ -37,6 +37,7 @@ Requires-Dist: sqlalchemy>=2.0.43
37
37
  Requires-Dist: aiosqlite>=0.21.0
38
38
  Requires-Dist: rich>=13.0.0
39
39
  Requires-Dist: greenlet>=3.2.4
40
+ Requires-Dist: getmac>=0.9.5
40
41
  Dynamic: license-file
41
42
 
42
43
  # VibeSurf: A powerful browser assistant for vibe surfing
@@ -75,7 +76,7 @@ powershell -ExecutionPolicy ByPass -c "irm https://astral.sh/uv/install.ps1 | ie
75
76
  ### Step 2: Setup and Install
76
77
  ```bash
77
78
  uv venv --python 3.12
78
- uv pip install vibesurf
79
+ uv pip install vibesurf -U
79
80
  ```
80
81
 
81
82
  ### Step 3: Launch
@@ -85,8 +86,12 @@ vibesurf
85
86
 
86
87
  ## 🎬 Demo
87
88
 
89
+ ### How to use?
88
90
  <video src="https://github.com/user-attachments/assets/0a4650c0-c4ed-423e-9e16-7889e9f9816d" controls="controls">Your browser does not support playing this video!</video>
89
91
 
92
+ ### Dozens of agent running in on browser
93
+ <video src="https://github.com/user-attachments/assets/9c461a6e-5d97-4335-ba09-59e8ec4ad47b" controls="controls">Your browser does not support playing this video!</video>
94
+
90
95
 
91
96
  ## 📝 License
92
97
 
@@ -34,7 +34,7 @@ powershell -ExecutionPolicy ByPass -c "irm https://astral.sh/uv/install.ps1 | ie
34
34
  ### Step 2: Setup and Install
35
35
  ```bash
36
36
  uv venv --python 3.12
37
- uv pip install vibesurf
37
+ uv pip install vibesurf -U
38
38
  ```
39
39
 
40
40
  ### Step 3: Launch
@@ -44,8 +44,12 @@ vibesurf
44
44
 
45
45
  ## 🎬 Demo
46
46
 
47
+ ### How to use?
47
48
  <video src="https://github.com/user-attachments/assets/0a4650c0-c4ed-423e-9e16-7889e9f9816d" controls="controls">Your browser does not support playing this video!</video>
48
49
 
50
+ ### Dozens of agent running in on browser
51
+ <video src="https://github.com/user-attachments/assets/9c461a6e-5d97-4335-ba09-59e8ec4ad47b" controls="controls">Your browser does not support playing this video!</video>
52
+
49
53
 
50
54
  ## 📝 License
51
55
 
@@ -0,0 +1,120 @@
1
+ @echo off
2
+ :: Local build script for Windows
3
+ :: This script creates a uv environment and builds a standalone executable
4
+
5
+ setlocal enabledelayedexpansion
6
+
7
+ echo 🚀 VibeSurf Local Build Script for Windows
8
+ echo ==========================================
9
+
10
+ :: Check if uv is installed
11
+ where uv >nul 2>nul
12
+ if %ERRORLEVEL% neq 0 (
13
+ echo [ERROR] uv is not installed. Please install it first:
14
+ echo powershell -ExecutionPolicy ByPass -c "irm https://astral.sh/uv/install.ps1 | iex"
15
+ exit /b 1
16
+ )
17
+
18
+ echo [SUCCESS] uv is installed
19
+
20
+ :: Use dedicated build environment directory
21
+ set BUILD_ENV=.build-env
22
+
23
+ :: Clean up existing build environment if it exists
24
+ if exist "%BUILD_ENV%" (
25
+ echo [WARNING] Removing existing build environment directory
26
+ rmdir /s /q "%BUILD_ENV%"
27
+ )
28
+
29
+ :: Step 1: Create dedicated build environment
30
+ echo [INFO] Creating dedicated build environment with Python 3.12...
31
+ uv venv %BUILD_ENV% --python 3.12
32
+ if %ERRORLEVEL% neq 0 (
33
+ echo [ERROR] Failed to create build environment
34
+ exit /b 1
35
+ )
36
+
37
+ :: Step 2: Activate build environment and install dependencies
38
+ echo [INFO] Activating build environment and installing dependencies...
39
+ call %BUILD_ENV%\Scripts\activate.bat
40
+
41
+ :: Verify Python version
42
+ python --version
43
+ if %ERRORLEVEL% neq 0 (
44
+ echo [ERROR] Failed to activate Python environment
45
+ exit /b 1
46
+ )
47
+
48
+ :: Install local VibeSurf and PyInstaller
49
+ echo [INFO] Installing local vibesurf in development mode and pyinstaller...
50
+ uv pip install -e .
51
+ if %ERRORLEVEL% neq 0 (
52
+ echo [ERROR] Failed to install local vibesurf
53
+ exit /b 1
54
+ )
55
+
56
+ uv pip install pyinstaller
57
+ if %ERRORLEVEL% neq 0 (
58
+ echo [ERROR] Failed to install pyinstaller
59
+ exit /b 1
60
+ )
61
+
62
+ :: Verify installation
63
+ echo [INFO] Verifying installation...
64
+ python -c "import vibe_surf; print(f'VibeSurf version: {vibe_surf.__version__}')"
65
+ if %ERRORLEVEL% neq 0 (
66
+ echo [ERROR] Failed to import vibe_surf
67
+ exit /b 1
68
+ )
69
+
70
+ python -c "from vibe_surf.cli import main; print('CLI import successful')"
71
+ if %ERRORLEVEL% neq 0 (
72
+ echo [ERROR] Failed to import CLI
73
+ exit /b 1
74
+ )
75
+
76
+ :: Step 3: Build executable
77
+ echo [INFO] Building executable with PyInstaller...
78
+ if not exist "vibesurf.spec" (
79
+ echo [ERROR] vibesurf.spec file not found!
80
+ exit /b 1
81
+ )
82
+
83
+ pyinstaller vibesurf.spec --clean --noconfirm
84
+ if %ERRORLEVEL% neq 0 (
85
+ echo [ERROR] PyInstaller build failed
86
+ exit /b 1
87
+ )
88
+
89
+ :: Step 4: Test executable
90
+ if exist "dist\vibesurf.exe" (
91
+ echo [SUCCESS] Executable built successfully!
92
+
93
+ echo [INFO] Testing executable...
94
+ dist\vibesurf.exe --help >nul 2>&1
95
+ if %ERRORLEVEL% equ 0 (
96
+ echo [SUCCESS] Executable test passed!
97
+ ) else (
98
+ echo [WARNING] Executable test failed, but this might be expected for CLI apps
99
+ )
100
+
101
+ :: Show file info
102
+ echo.
103
+ echo 📊 Executable Information:
104
+ echo =========================
105
+ dir /q dist\vibesurf.exe
106
+
107
+ echo.
108
+ echo [SUCCESS] 🎉 Build completed successfully!
109
+ echo.
110
+ echo 📁 Your executable is located at: .\dist\vibesurf.exe
111
+ echo 🚀 To run: .\dist\vibesurf.exe
112
+ echo.
113
+
114
+ ) else (
115
+ echo [ERROR] Build failed - executable not found
116
+ exit /b 1
117
+ )
118
+
119
+ echo Press any key to exit...
120
+ pause >nul
@@ -0,0 +1,124 @@
1
+ #!/bin/bash
2
+ # Local build script for Unix-like systems (Linux/macOS)
3
+ # This script creates a uv environment and builds a standalone executable
4
+
5
+ set -e # Exit on any error
6
+
7
+ echo "🚀 VibeSurf Local Build Script"
8
+ echo "=============================="
9
+
10
+ # Colors for output
11
+ RED='\033[0;31m'
12
+ GREEN='\033[0;32m'
13
+ YELLOW='\033[1;33m'
14
+ CYAN='\033[0;36m'
15
+ NC='\033[0m' # No Color
16
+
17
+ # Function to print colored output
18
+ print_status() {
19
+ echo -e "${CYAN}[INFO]${NC} $1"
20
+ }
21
+
22
+ print_success() {
23
+ echo -e "${GREEN}[SUCCESS]${NC} $1"
24
+ }
25
+
26
+ print_warning() {
27
+ echo -e "${YELLOW}[WARNING]${NC} $1"
28
+ }
29
+
30
+ print_error() {
31
+ echo -e "${RED}[ERROR]${NC} $1"
32
+ }
33
+
34
+ # Check if uv is installed
35
+ if ! command -v uv &> /dev/null; then
36
+ print_error "uv is not installed. Please install it first:"
37
+ echo "curl -LsSf https://astral.sh/uv/install.sh | sh"
38
+ exit 1
39
+ fi
40
+
41
+ print_success "uv is installed"
42
+
43
+ # Use dedicated build environment directory
44
+ BUILD_ENV=".build-env"
45
+
46
+ # Clean up existing build environment if it exists
47
+ if [ -d "$BUILD_ENV" ]; then
48
+ print_warning "Removing existing build environment directory"
49
+ rm -rf "$BUILD_ENV"
50
+ fi
51
+
52
+ # Step 1: Create dedicated build environment
53
+ print_status "Creating dedicated build environment with Python 3.12..."
54
+ uv venv "$BUILD_ENV" --python 3.12
55
+
56
+ # Step 2: Activate build environment and install dependencies
57
+ print_status "Activating build environment and installing dependencies..."
58
+ source "$BUILD_ENV/bin/activate"
59
+
60
+ # Verify Python version
61
+ PYTHON_VERSION=$(python --version)
62
+ print_success "Using Python: $PYTHON_VERSION"
63
+
64
+ # Install local VibeSurf and PyInstaller
65
+ print_status "Installing local vibesurf in development mode and pyinstaller..."
66
+ uv pip install -e .
67
+ uv pip install pyinstaller
68
+
69
+ # Verify installation
70
+ print_status "Verifying installation..."
71
+ python -c "import vibe_surf; print(f'VibeSurf version: {vibe_surf.__version__}')" || {
72
+ print_error "Failed to import vibe_surf"
73
+ exit 1
74
+ }
75
+
76
+ python -c "from vibe_surf.cli import main; print('CLI import successful')" || {
77
+ print_error "Failed to import CLI"
78
+ exit 1
79
+ }
80
+
81
+ # Step 3: Build executable
82
+ print_status "Building executable with PyInstaller..."
83
+ if [ ! -f "vibesurf.spec" ]; then
84
+ print_error "vibesurf.spec file not found!"
85
+ exit 1
86
+ fi
87
+
88
+ pyinstaller vibesurf.spec --clean --noconfirm
89
+
90
+ # Step 4: Test executable
91
+ if [ -f "dist/vibesurf" ]; then
92
+ print_success "Executable built successfully!"
93
+
94
+ # Make executable and test
95
+ chmod +x dist/vibesurf
96
+
97
+ print_status "Testing executable..."
98
+ ./dist/vibesurf --help > /dev/null 2>&1 && {
99
+ print_success "Executable test passed!"
100
+ } || {
101
+ print_warning "Executable test failed, but this might be expected for CLI apps"
102
+ }
103
+
104
+ # Show file info
105
+ echo ""
106
+ echo "📊 Executable Information:"
107
+ echo "========================="
108
+ ls -lh dist/vibesurf
109
+
110
+ if command -v file &> /dev/null; then
111
+ file dist/vibesurf
112
+ fi
113
+
114
+ echo ""
115
+ print_success "🎉 Build completed successfully!"
116
+ echo ""
117
+ echo "📁 Your executable is located at: ./dist/vibesurf"
118
+ echo "🚀 To run: ./dist/vibesurf"
119
+ echo ""
120
+
121
+ else
122
+ print_error "Build failed - executable not found"
123
+ exit 1
124
+ fi