You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
feat: bundle Python backend into desktop app (PyInstaller sidecar) + close packaging gaps
Gap 1 — Backend bundling:
- backend/vortex-backend.spec: PyInstaller spec -> single vortex-backend exe
- backend/backend_entry.py: entry point importing app.main directly (not by
string) so PyInstaller bundles the full import graph; --host/--port flags
- Verified: bundled exe serves /api/v1/health + /settings standalone
Gap 2 — Real backend lifecycle in main.rs:
- BackendState(Mutex<Option<CommandChild>>) tracks spawned process
- stop_backend now kills the child (was a stub)
- start_backend prefers the PyInstaller sidecar, falls back to python-uvicorn
for dev; refuses double-start
- get_backend_status: real HTTP health check (reqwest added)
- tauri.conf.json: externalBin binaries/vortex-backend
Gap 3 — User-data dirs:
- config.py: %APPDATA%/Vortex (Win), ~/Library/Application Support/Vortex
(mac), ~/.local/share/Vortex (linux); VORTEX_HOME still overrides for dev
- config/memory/logs/models subdirs; settings.json + vortex.log moved there
Gap 4 — Apple Silicon + CI bundling:
- build matrix adds macos-arm64 (aarch64-apple-darwin)
- CI build job now runs PyInstaller and places the target-triple-named
sidecar before tauri:build
- gitignore: backend/dist, build, .build-venv, frontend binaries
0 commit comments