peji 407892ed9a Fix Electron cloud cert verification (use Node https, not net.fetch)
The Alta verify endpoint requests an optional TLS client certificate.
Chromium's network stack (net.fetch) reacts by aborting the handshake
with ERR_SSL_CLIENT_AUTH_CERT_NEEDED, and the select-client-certificate
event never fires to let us proceed — so cloud verification silently
failed only in the desktop build, looking like the app was offline.

Issue the request via Node's https module instead, matching the Python
app.py reference (urlopen) and curl, which ignore the optional client-
cert request and proceed normally. Same 2xx-means-verified semantics,
10s timeout, and return shape.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-03 08:39:20 -04:00
2026-06-03 08:39:12 -04:00
2026-06-03 08:39:12 -04:00

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 manually lay out camera tiles
  • 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)

npm install
npm start

The Electron shell loads the existing UI through the custom webavp://app/ protocol, so local assets are served from the packaged app instead of brittle file:// paths. Certificate verification is bridged through Electron IPC (window.webavpNative.verifyCertificateOnline) and performed in the main process.

Packaging scripts are included:

npm run dist

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

python3 app.py
# http://0.0.0.0:5152

The Python stdlib server serves /, /static/*, and /api/verify-cert. There are no Python package dependencies.

Checks

npm run check
xvfb-run -a npm run smoke

check runs Electron main/preload syntax checks and py_compile for the Python server. smoke starts Electron, waits for webavp://app/index.html to finish loading, then exits automatically. On a desktop session, npm run smoke is enough; on headless Linux, use xvfb-run -a npm run smoke.

S
Description
Alta Video Player — web-based surveillance video player for Alta/Ava Security camera exports
Readme 152 KiB
Languages
HTML 93.6%
JavaScript 4.4%
Python 2%