# Alta Video Player (WebAVP) WebAVP is a local player for Alta/Ava Security camera exports. It focuses on core review workflows: importing video exports, synchronizing multiple cameras on one timeline, zooming into footage, and validating export integrity. The app can run in two modes: ## Core Features - Drag/drop individual video and metadata files, folders, or ZIP archives - Import unencrypted ZIPs through vendored JSZip - Import AES-encrypted ZIP exports with an in-app password prompt - Synchronize multiple camera segments on a shared timeline - Scrub, zoom, pan, change playback speed, and frame-step footage - Reorder, hide/show, expand, and automatically or manually lay out up to 16 camera tiles (4x4) - Use region zoom and scroll zoom tools - Verify signed exports offline and optionally confirm certificates with Alta's cloud verification endpoint - Preserve sessions across refreshes with IndexedDB ## Standalone desktop app (Electron) ```bash npm install npm start ``` The Electron shell loads the same player template used by web mode through the custom `webavp://app/` protocol. Certificate verification and GitPeji update checks are bridged through narrowly scoped Electron IPC. **Check for Updates** compares semantic versions and opens the matching public GitPeji release asset in the system browser; installation remains an explicit user action. Packaging scripts are included: ```bash npm run dist:linux # Linux x64 AppImage + deb npm run dist:mac # macOS x64 + arm64 dmg (run on macOS) npm run dist:win # Windows x64 NSIS installer (run on Windows) ``` `electron-builder` is configured for Linux AppImage/deb, macOS dmg, and Windows nsis. Cross-platform packaging still needs to be run on the target OS/build host. ## Web/Python mode ```bash python3 app.py # http://127.0.0.1:5152 ``` The Python stdlib server serves `/`, `/static/*`, and `/api/verify-cert`. It binds to `127.0.0.1` by default; set `WEBAVP_HOST=0.0.0.0` only for deliberate trusted-LAN sharing. Web mode shows **Download Desktop App**, selecting the latest compatible public GitPeji release asset when available and otherwise opening the releases page. ## Checks ```bash npm run check npm run smoke # Electron on a desktop session npm run smoke:headless # Electron under xvfb on headless Linux WEBAVP_SMOKE_WEB_URL=http://127.0.0.1:5152/ npm run smoke:web ``` `check` runs syntax, focused layout/release regressions, Python server tests, and source invariants. The smoke commands exercise the shared template in both Electron and served web modes. See `RELEASING.md` for the GitPeji publishing and asset contract.