Repository navigation
v1.9.0 — Video Gallery
Video Gallery
New gallery type for distributing long-form videos via adaptive HLS streaming with revocable token-based access.
Core features
- HLS transcoding — auto remux (H.264/AAC, near-instant) or re-encode modes:
creator_1080p(CRF 20, max 6 Mbps),creator_720p(CRF 19, max 3.5 Mbps),force_abr(3-quality ABR ladder) - Dedicated video worker — separate from the photo build worker, scales to zero at rest, CPU-limited, one transcode per pod
- Token-protected HLS streaming — in-memory token cache eliminates per-segment DB queries for smooth playback
- Enrollment flow — double opt-in email, nLPD-compliant, single-use confirm token, revocable per-person viewer tokens
- Watch page — Video.js 8 + VHS, ±10s buttons, multi-video sidebar, keyboard shortcuts, quality selector for ABR streams
- Thumbnails — per-video poster auto-extracted at frame 5s, gallery cover used in public project listing
- Admin UI — 3-tab gallery detail (Videos / Access / Stats), upload with progress bar, drag-and-drop reorder, transcode mode selector with live ETA
- View tracking — server-side events (play/pause/seek/heartbeat/ended), per-token and per-video stats, no third-party dependencies
- Public galleries — video galleries with
access=publicappear in project listings with/watch/:sluglinks (no token required) - Enrollment email — on confirm, viewer receives email with clickable cover thumbnail and watch link
Bug fixes (since v1.8.0)
- SMTP settings no longer clobbered when saving from unrelated settings pages (partial PATCH fix)
- Video gallery build status set to
doneat creation — no longer queued for photo build pipeline - Photo worker skips video gallery jobs and triggers project prerender
- Gallery cover served at
/api/video-covers/:id(public route, no auth) - Enrollment re-submit re-sends watch link when already confirmed
- Team page now allows email update for org members
Infrastructure
- New
Dockerfile.video-workerwith FFmpeg docker-compose.saas.ymlincludesvideo-workerservice with CPU limits and dedicated PVC- DB migrations:
009_video_gallery.sql(4 tables),010_video_transcode_progress.sql,011_video_creator_modes.sql