3939 with :
4040 node-version : ${{ env.NODE_VERSION }}
4141
42+ - name : Setup pnpm
43+ uses : pnpm/action-setup@v4
44+ with :
45+ version : 10
46+
4247 - name : Setup Rust
4348 uses : dtolnay/rust-toolchain@stable
4449 with :
@@ -55,18 +60,42 @@ jobs:
5560 source .venv/bin/activate
5661 python -m pip install --upgrade pip setuptools wheel
5762 pip install -r requirements.txt
58- pip install pyinstaller==6.11.1
5963
6064 - name : Build Python backend with PyInstaller
6165 run : |
6266 cd backend
6367 source .venv/bin/activate
6468 python -m PyInstaller backend_server.spec
6569
70+ - name : Smoke test backend startup (macOS)
71+ run : |
72+ cd backend
73+ source .venv/bin/activate
74+ ./dist/backend_server/backend_server > backend-smoke.log 2>&1 &
75+ backend_pid=$!
76+ sleep 10
77+
78+ echo "=== backend smoke log ==="
79+ cat backend-smoke.log
80+
81+ if grep -E "(ModuleNotFoundError|ImportError|Failed to execute script)" backend-smoke.log; then
82+ echo "Backend smoke test failed: startup import error detected"
83+ kill "$backend_pid" 2>/dev/null || true
84+ exit 1
85+ fi
86+
87+ if ! kill -0 "$backend_pid" 2>/dev/null; then
88+ echo "Backend smoke test failed: backend process exited early"
89+ exit 1
90+ fi
91+
92+ echo "Backend smoke test passed: process is running without import errors"
93+ kill "$backend_pid" 2>/dev/null || true
94+
6695 - name : Install frontend requirements
6796 run : |
6897 cd frontend
69- npm install
98+ pnpm install --frozen-lockfile
7099
71100 - name : Copy backend bundle for Tauri
72101 run : |
@@ -76,10 +105,10 @@ jobs:
76105 - name : Build Tauri application
77106 env :
78107 TAURI_SIGNING_PRIVATE_KEY : ${{ secrets.TAURI_SIGNING_PRIVATE_KEY }}
79- TAURI_SIGNING_PRIVATE_KEY_PASSWORD : ' '
108+ TAURI_SIGNING_PRIVATE_KEY_PASSWORD : ${{ secrets.TAURI_SIGNING_PRIVATE_KEY_PASSWORD }}
80109 run : |
81110 cd frontend
82- npm run tauri build
111+ pnpm run tauri build
83112
84113 - name : Find macOS build artifacts
85114 id : find_files
@@ -213,6 +242,11 @@ jobs:
213242 with :
214243 node-version : ${{ env.NODE_VERSION }}
215244
245+ - name : Setup pnpm
246+ uses : pnpm/action-setup@v4
247+ with :
248+ version : 10
249+
216250 - name : Setup Rust
217251 uses : dtolnay/rust-toolchain@stable
218252
@@ -228,7 +262,6 @@ jobs:
228262 .\venv\Scripts\activate
229263 python -m pip install --upgrade pip
230264 pip install -r requirements.txt
231- pip install pyinstaller
232265
233266 # Backend: Build with PyInstaller using your spec file
234267 - name : Build Python backend with PyInstaller
@@ -241,7 +274,7 @@ jobs:
241274 - name : Install frontend requirements
242275 run : |
243276 cd frontend
244- npm install
277+ pnpm install --frozen-lockfile
245278
246279 # Run ensure-backend.js to copy and rename the backend executable
247280 - name : Copy and rename backend executable
@@ -253,20 +286,18 @@ jobs:
253286 run : |
254287 cd frontend/src-tauri
255288 # Install any additional Tauri-specific requirements if needed
256- # Currently using npm install from frontend folder covers this
289+ # Currently using pnpm install from frontend folder covers this
257290
258291
259292 # Build the final application
260293 - name : Build Tauri application
261294 env :
262- # Pass the Base64 secret DIRECTLY here.
263- # Tauri will handle the decoding automatically.
264295 TAURI_SIGNING_PRIVATE_KEY : ${{ secrets.TAURI_SIGNING_PRIVATE_KEY }}
265- TAURI_SIGNING_PRIVATE_KEY_PASSWORD : ' '
296+ TAURI_SIGNING_PRIVATE_KEY_PASSWORD : ${{ secrets.TAURI_SIGNING_PRIVATE_KEY_PASSWORD }}
266297
267298 run : |
268299 cd frontend
269- npm run tauri build
300+ pnpm run tauri build
270301
271302
272303
@@ -531,6 +562,7 @@ jobs:
531562 2. Open the DMG and drag Local Lens to Applications
532563 3. Fix Gatekeeper block (choose one):
533564 - Download and double-click Fix_Local_Lens.command
565+ - If blocked: run `bash ~/Downloads/Fix_Local_Lens.command`
534566 - Right-click the app, Open, click Open in the dialog
535567 - Terminal: xattr -cr "/Applications/Local Lens.app"
536568
0 commit comments