/GUIDE
How the in-place animation works
Each frame is printed, then the cursor is moved back up by the number of lines in the frame (the escape sequence ESC [ n A) and the next frame is printed over it. The cursor is hidden with ESC [ ? 25 l while it plays and shown again afterwards, even if the program is stopped.
Single-line spinners only need a carriage return (\r) to go back to the start of the line.
Keep startup fast
A splash should never make a tool slower. Play it while real work happens, such as loading config or opening a connection, or cap it at a second. For tools people run many times a minute, show it only on the first run or behind a --splash flag.
Pipes, CI and accessibility
Always check that output is a terminal before animating. In CI logs, every frame becomes a new line and turns a log into thousands of lines. The baked code does this check for you.
Screen reader users hear every redraw. Offer a --quiet flag, and print a plain final line such as "✓ Built in 1.2 s" so the result is clear without the animation.
File size
Baked frames are plain text, usually 1 to 4 KB each. Sixteen frames of a 48 by 24 piece is about 20 KB, small enough to ship inside any binary. Use fewer frames or a smaller piece for tiny tools.