Skip to content

v5.3.0

Choose a tag to compare

@github-actions github-actions released this 06 Aug 09:31
· 117 commits to master since this release

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.3.0

Docker Hub:

docker pull lcy362/free-short-video:v5.3.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.3.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.3.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.3.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

Refactoring & Optimizations

  • web/ routing layerserver.py is split into a modular route layer (web/routes/), improving structure and testability.
  • Package splitsscreenwriter.pycore/screenwriter/; the 1928-line creative_video.pycore/pipelines/creative/; subtitle.py and concatenator.py → packages; backward-compatible re-export alias modules kept.
  • Unified audio fallback — poetry / manuscript / anchor / creative pipelines share one _generate_audio_with_fallback method instead of duplicated logic.
  • Typed config & constants — typed AppSettings via Pydantic for config reads; progress literals and retry bases converged into named constants.
  • Stale-task sweep — zombie task cleanup endpoint added.
  • Test coverage 55% → 63% — 178 → 291 passing tests across all refactor batches.

Bug Fixes

  • Legacy POST /api/tasks endpoint (broken since v3.x) restored via router-level integration tests.
  • Missing re import in the creative steps_video module.
  • Regression checker now exempts v2.0 legacy step fields.

Full Changelog: v5.2.1...v5.3.0