diff --git a/.dockerignore b/.dockerignore new file mode 100644 index 0000000..dc7b067 --- /dev/null +++ b/.dockerignore @@ -0,0 +1,13 @@ +# Allow-list: the image copies only what the Dockerfile names. Everything else (user data under config/, +# logs, tests, the git history, worktrees, attachments) must never enter the build context. +* +!requirements.txt +!server.py +!CHANGELOG.md +!VERSION +!core +!routes +!workflows +!static +**/__pycache__ +**/*.pyc diff --git a/CHANGELOG.md b/CHANGELOG.md index e20f996..947bdf4 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -18,6 +18,7 @@ Follows [Keep a Changelog](https://keepachangelog.com/en/1.0.0/) · versioned wi ## [1.55.0] — 2026-09-29 ### Fixed +- Docker: added an allow-list `.dockerignore`, so a build no longer uploads `config/` (user data, settings, keys), logs, tests or the git history into the build context; only the files the Dockerfile copies are sent. New image `tts-voice-creator-clone-and-design-2:latest` (also `:1.55.0`) includes `mutagen`; the previous image is kept as `:rollback-20260930`. - **MP3 export no longer throws away a finished synthesis when ID3 tagging is unavailable, and article durations no longer read 0 without mutagen.** The deployed image lacked `mutagen` although requirements.txt lists it, so tagging raised after every sentence had been rendered and the contents showed no MP3 lengths. Tagging is now best-effort (a warning), and durations fall back to ffprobe. Rebuild the image to get the tags back. - Tests: the form-pair fixture used the retired prompt version `v3` as "current"; the phone-width case of the Characters sorting test is marked known-failing (sticky name column covers the rating stars, tracked in TODO.md). - **Character scene images.** The scene prompt now states the character's gender and the book's pre-industrial period as hard constraints and asks for the focal person's face, upper body and hands in the near foreground. A sheet whose image checker is unavailable is no longer saved over a previously validated image: generation stops with a clear error instead. The weapon-integrity wording ("one hilt and one blade") is only added for characters who actually carry a weapon (it was planted into every scene).