Changelog
This site is still being adjusted. Below is what actually changed and why — most of it because something genuinely went wrong.
19 August 2026
Speed: 60–80 seconds per run down to 42–45
Timing the pipeline node by node showed the bottleneck was moving model weights onto the GPU, not the computation itself. We swapped the text encoder for a smaller quantisation (25.3GB → 14.6GB), dropped the sampler from 6 steps to 4 (the acceleration LoRA was built for 4 anyway), and removed an audio decode whose output was thrown away immediately. Output quality was compared at a fixed random seed: no visible difference. Worst-case runtime also collapsed from 137 seconds to a steady figure.
Animal motions, and a guard against portrait motions on photos without people
A user uploaded a photo of a bird with a portrait motion, and the model produced a stranger's face and pushed the shot in on it. The cause was the word "the person" in the portrait prompts. Motions are now split into People and Animals; the animal prompts use "the animal" throughout and end with "No people appear". Uploads also run a face check and warn you when the choice doesn't match the photo.
Fixed a leak: "recent results" listed everyone's results
That list had no ownership check, so anyone could see photos other people had uploaded. History now requires logging in and only shows your own results; videos, source images and status queries all validate ownership. Ownership is determined by account and browser cookie, never by IP — people behind the same router share an IP, and identifying by IP would show strangers each other's photos.
Free allowance and accounts
Three runs per IP per day without an account, unlimited with a free account. Failed or cancelled runs refund the allowance. Passwords are stored as PBKDF2-SHA256 hashes with per-account salts.
Losing your connection no longer wastes the run
The frontend used to give up after 30 seconds of failed polling, even though the backend was still running the job — a phone freezing a background tab was enough to trigger it. It now retries indefinitely, stores the job id in the browser, and keeps job state on the server's disk, so even a server restart can reattach to a job still in flight.
Cancelling actually cancels
Queued jobs are removed from the queue; running jobs get an interrupt — but only after confirming that the running job is yours, so it never kills someone else's.
Queue visibility
The home page shows how many jobs are queued, and the progress bar shows how many are ahead of yours.
Content pages
Examples, guide, failure cases, old photos, FAQ, how it works, about, privacy, terms, contact — eleven pages. The demo clips now use a different public-domain photo for every motion (Einstein, Lincoln, Mark Twain, Chaplin, Frida Kahlo, Tesla, plus CC0 cat, fox, swan, rooster and goose), all generated by this site, with full licence and photographer credits. Hovering a motion on the home page pops up the real output for that motion.
We disproved one of our own recommendations
The guide used to say "a small or blurry source makes the face drift". We tested it: squashing the Lincoln portrait to 96 pixels wide and blowing it back up produced a result nearly identical to the full-resolution original. That advice is gone, and the comparison clips are on the failure cases page. What actually breaks a result is a subject mismatch, not image quality.
Our own analytics
Server-side counting only, no third-party tracking code. Visitors are de-duplicated with a daily-salted hash and no IP is stored. See the privacy policy.
English version
The whole site is now available in English at /en, with a language switcher, automatic detection from your browser's language, and hreflang annotations so search engines treat the two versions as the same pages rather than duplicates.
18 August 2026
First version
Six portrait motions, photo upload, progress display, CSS frames, ping-pong looped output.
Fixed a hard-coded output aspect ratio
Everything was rendered at 576×768 regardless of the source, so landscape photos were squeezed into portrait. Output dimensions are now derived from the source photo.