Sequences (ordered shots = scene + in/out + transition) with full validation, CRUD, and a client-driven film render the server orchestrates: browser renders each shot through the existing /render/* endpoints, server ffmpeg-concatenates in order with cuts or xfade dissolves, muxes a film-level audio bed, reaps after 48h. render.js refactored so there is one frame-post path in the repo (captureFrames/withRenderSize/begin/end/poll); new web/film.js drives the loop. Also fixes a pre-existing mux bug: no apad meant short audio truncated PICTURE. Orchestrator: deploy compose/script now carry SCENEGOD_SEQUENCES + SCENEGOD_FILMS volumes so shot lists survive a rebuild. Verified live: demo-two-shot renders one 11.500s mp4 with a genuinely compositing dissolve; a film built from the M7 templates (street wide -> dissolve -> closer -> cut -> record store) renders 11.800s at 960x540. 15 test groups green. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
14 lines
771 B
Bash
Executable File
14 lines
771 B
Bash
Executable File
#!/bin/bash
|
|
# rsync-deploy scenegod to the dealgod VPS (NOT a git checkout there — meshgod model).
|
|
# NOTE: assets/ is EXCLUDED on purpose (it lives in the VPS volume). Templates and
|
|
# sequences ship with the code, so after adding an asset one of them references:
|
|
# rsync -az assets/ root@100.94.195.115:/opt/scenegod-data/assets/
|
|
set -e
|
|
VPS=root@100.94.195.115
|
|
rsync -az --delete \
|
|
--exclude .git --exclude .venv --exclude assets --exclude scenes \
|
|
--exclude renders --exclude films --exclude '*.pyc' --exclude __pycache__ \
|
|
--exclude .env --exclude '*.log' \
|
|
"$(cd "$(dirname "$0")/.." && pwd)/" "$VPS":/opt/scenegod/
|
|
ssh "$VPS" 'mkdir -p /opt/scenegod-data/{assets,scenes,renders,sequences,films} && cd /opt/scenegod/deploy && docker compose up -d --build'
|