Skip to content

v5.7.0

Choose a tag to compare

@github-actions github-actions released this 13 Aug 09:59
· 70 commits to master since this release

Usage

Docker Image

Multi-arch (linux/amd64, linux/arm64) images for this release are published to GHCR and Docker Hub.

Pull

GitHub Container Registry (GHCR):

docker pull ghcr.io/lcy362/free-short-video:5.7.0

Docker Hub:

docker pull lcy362/free-short-video:v5.7.0

Run

Data persistence: the app writes all generated videos, uploads and settings into /app/.working_dir and /app/.agnes_config inside the container. A plain docker run without a volume loses everything when the container is recreated. Mount these paths to your host so outputs survive restarts and can be exported.

Option A — bind mount to a host folder (recommended; files land directly in the folder):

mkdir -p ~/agnes-data/working ~/agnes-data/config
docker run -d -p 8765:8765 \
  -e AGNES_API_KEY=<your-key> \
  -v ~/agnes-data/working:/app/.working_dir \
  -v ~/agnes-data/config:/app/.agnes_config \
  ghcr.io/lcy362/free-short-video:5.7.0

Your videos will be in ~/agnes-data/working/ on your machine.

Option B — named Docker volume (no host path needed; survives container recreation):

docker volume create agnes-working
docker volume create agnes-config
docker run -d -p 8765:8765 \
  -e AGNES_API_KEY=<your-key> \
  -v agnes-working:/app/.working_dir \
  -v agnes-config:/app/.agnes_config \
  ghcr.io/lcy362/free-short-video:5.7.0

Export files from a named volume:

docker run --rm -v agnes-working:/data -v "$PWD":/out busybox cp -r /data/. /out/agnes-export

Then open http://localhost:8765.

Notes

  • Prefer Docker Hub? Replace the image with lcy362/free-short-video:v5.7.0.
  • The image already declares VOLUME for both paths, so docker run -p 8765:8765 <image> (no -v) keeps data only while you reuse the same container (stop/start); recreating the container starts fresh.
  • AGNES_API_KEY can also be set later in the Web UI; it is then stored in the mounted config volume.

npm

Use npx for a one-shot run or install globally:

# Quick run (no install):
npx free-short-video

# Global install:
npm install -g free-short-video
free-short-video

Requires Python 3.10+ and ffmpeg on your system.
On first run, a Python virtual environment is auto-created and dependencies are installed.


What's New

Features & Improvements

  • Multi-API-Key rotation & throughput boost — configure multiple Agnes API keys (env + config, auto-dedup); requests rotate across keys via a KeyRing, and a 429 retry-on-key-switch mechanism instantly switches to the next key on rate-limit instead of backing off. Layered rate limiting gives video submissions a dedicated 1×Key/min bucket alongside the shared 20×Key×0.8/min bucket, roughly doubling achievable throughput with 2 keys.
  • User-supplied scene reference images (creative) — in creative long-video mode you can now upload a reference image per scene; the pipeline uses your image instead of AI-generated storyboard frames for that scene.
  • Task deletion (UI + API) — delete completed task folders from the task list or via DELETE /api/tasks/{id}; running tasks are protected with a clear error. The whole .working_dir stays clean.
  • API-key list & per-key removal — the settings panel now lists all configured keys with source badges (env/config); config-sourced keys can be removed individually without clearing everything.
  • Windows one-click startstart.bat for native Windows usage without Docker.

Refactoring & Optimizations

  • Frontend engineering re-architecture — the single-file index.html was refactored into a Vue 3 + Vite + TypeScript project (frontend/) with build output committed to static/. This brings type safety, modular components/composables/i18n, and a stable dev/build workflow (verified by CI's frontend-build job).
  • Unified image normalization module — new utils/image_normalizer.py normalizes reference/end-frame images to target size with black-bar padding before model submission, improving i2i/keyframes input consistency.

Bug Fixes

  • API-key plaintext leakGET /api/config/keys now returns masked keys (sk-xxx...xxxx) with stable IDs instead of plaintext, preventing key disclosure via the API; deletion uses the stable ID.
  • Legacy task API compatibility — the legacy POST /api/tasks route now forwards scene_reference_images, fixing CI failures for older clients.
  • JSON robustness — optional json_repair fallback for LLM JSON responses with trailing commas / missing colons.
  • npm packaging — exclude runtime-generated static/generated/ from the published npm package.