- nginx basic auth on /previz/ (login file lives on the server, mounted
from docker/auth/, see DEPLOY.md step 8); private, no-store so
Cloudflare never caches it
- Print styles for previz pages: dark, A4 landscape, one section a page;
videos print as poster frames with a link
- scripts/previz-pdf.mjs (npm run previz:pdf) prints the page to
public/previz/crowd/crowd-previz.pdf via Edge/Chrome DevTools
- "PDF" download link on the page
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- Unlinked, noindex page listing marker PNGs from public/set/markers
(discovered at build time; filenames encode device/resolution/orientation)
- Detects the current screen and offers the closest match first
- One-tap full-screen viewer: wake lock, hidden controls, full grid/edges
toggle, fill vs fit by aspect, back button closes, deep links via hash
- Offline service worker + home-screen manifest for iPhone full screen
- Marketing chrome moved into an (site) route group so /set has none
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Matches the vfxreview/xbid setup: runner pulls and runs docker compose;
nginx:alpine serves the static export on the npm_default network behind
Nginx Proxy Manager. DEPLOY.md has the one-time SSH setup steps.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>