Skip to content

Progress Cards#

Everything you see between pressing enter on a command and getting your images back. If you are wondering whether a job is stuck, this page is the answer.


The stages, in order#

Every job moves through the same sequence. The card edits itself in place, so you are watching one message change rather than a stream of new ones.

# What you see What is happening
1 🕒 Queued The job is in line. Nothing has started yet.
2 An animated loading emoji, a flat bar, and 0% The job was picked up. The workflow is being built, your prompt is being enhanced if you asked for it, and the model, CLIP and VAE are loading into VRAM.
3 A moon emoji, a 16-character bar, and a percentage Actual generation. This is where most of the time goes.
4 The same bar ticking up to 99% Generation finished. Your images are being downloaded from the backend and uploaded to Discord.
5 The progress message disappears and a new message appears with your images Done.

The message being replaced is normal

At the last step the progress card is deleted and a brand new message is posted with your images and the result card buttons. If you are watching the channel you will see the old message vanish for a moment. Nothing went wrong, and your result is not lost.

Stage 2 can last a while the first time you use a given model, because the model has to be read off disk. Running the same model again is much faster.


Reading the bar#

The status line has three parts: a moon phase emoji, the bar, then the percentage.

The moon emoji cycles through the phases as the job runs:

Progress Emoji
0% 🌑
up to 12% 🌒
up to 25% 🌓
up to 37% 🌔
up to 50% 🌕
up to 62% 🌖
up to 75% 🌗
up to 87% 🌘
above 87% 🌑

The bar itself is 16 characters wide and is drawn from braille block glyphs (⣀ ⣄ ⣆ ⣇ ⣧ ⣷ ⣿). It is a music-visualizer style bar, not a fill meter. At 0% it sits as a flat idle line. Above 0% the filled section rises toward the progress front, the front character peaks at , and everything past it drops back down.

There is no status word on the card. You see the emoji, the bar and the percentage, and nothing else.

The bar bounces and stops short on purpose

Two things look like a freeze and are not:

  • The bar jitters. Random movement is applied to the filled section on every redraw, so the bar visibly bounces like an equalizer even when the percentage has not changed. That is the intended look.
  • It stops somewhere between 93% and 97%. A random cap in that range is drawn when your job starts, and the displayed percentage is clamped to it. This keeps the bar from sitting at a dead "100%" while images are still being fetched. When generation actually finishes, a finishing animation ticks the bar from that cap up to 99% every 1.5 seconds until your images arrive.

A job that pauses at 95% for a few seconds is finishing, not frozen.

How often the bar updates#

The card does not redraw on every step. It needs at least 4% of movement plus a minimum gap between edits, and a jump of 10% or more updates immediately. The minimum gap grows when the channel is busy:

Jobs queued in that channel Minimum gap between edits
0-1 1.5 seconds
2-3 2.5 seconds
4 or more 3.5 seconds

So in a busy channel the bar moves in visibly chunkier steps. It is the display that slows down, not the generation.


The ❌ cancel button#

Every queued and in-progress card carries an button. Press it to cancel.

Job state What happens
Still queued The card flips to 🚫 Job cancelled by @you, the message is deleted, and you get a private ✅ Generation cancelled.
Already running The backend is interrupted, the progress message is deleted, and you get a private ✅ Generation cancelled.
Already finishing Too late. Delivery may already be in flight and your images can still arrive.

The button is wired so that it survives bot restarts. If Eimi restarts while your job is queued, the ❌ on the old card still works and you will not get an "interaction failed" error.

Buttons are rate limited to one press per half second, so a very fast double-click gets Please wait before clicking again.

You can cancel your own jobs. Admins can cancel anyone's, and a delegated server owner can cancel jobs posted in their server. See Access and tiers.


Live previews#

While the sampler runs, the backend can send low-resolution in-progress frames. When previews are on, these appear as a small image on the progress card, refreshed alongside the bar.

Detail Value
Setting show_previews in /settings
Default On
Preview size 384 pixels on the long side, JPEG
First appears Only after the first frame arrives, so early ticks show no image

Turning show_previews off does more than hide the image: the backend is told to skip producing preview frames entirely, which saves a small amount of work per step.

Note

Previews are force-disabled for /render regardless of your setting, because the preview step is incompatible with that pipeline and would kill the job. Some backends -- TensorRT engines and the cloud image APIs -- never send preview frames at all, so you will not see one there either.


Silly progress lines#

Some jobs run on external APIs that report no step-by-step progress at all, so there is nothing to draw a real bar from. For those, the card shows a rotating moon phase icon plus a whimsical status line that changes every few seconds.

This applies to Nano Banana, GPT Image, and the describe context command. The line rotates on a fixed cadence:

Job type Line changes every
GPT Image 3 seconds
Nano Banana (Gemini 3 Pro Image) 6 seconds
Nano Banana (Flash) 2 seconds

Lines are drawn from early, middle and late pools, so they roughly track how far along the job should be by now. Real examples:

Job type Lines you may see
Nano Banana, early Opening the wrapper..., Inspecting the freckles..., Calibrating the ripeness meter...
Nano Banana, middle Peeling with dignity..., Training tiny monkeys..., Negotiating with pixels..., Muttering 'almost...'
Nano Banana, late Signing the masterpiece..., Gift-wrapping the result..., Rolling out the red carpet...
GPT Image, early Summoning pixels from the cloud..., Briefing the art director...
GPT Image, middle Art committee vote in progress..., Adjusting the beret..., Arguing about where to put the highlight...
GPT Image, late Drying the paint..., Straightening the frame..., Prepping the reveal...
describe Counting fingers on hands..., Translating vibes into language..., Trying not to say 'aesthetic'...

The rotation avoids repeating any of the last eight lines it used, so it will not stutter on the same phrase.

Note

These lines carry no information about your job's real state. They exist so the card is not silently blank while an external API works. A card still sitting on Peeling with dignity... is not a stall. These jobs also keep the ❌ cancel button.


Ephemeral cards stop updating after 15 minutes#

If your job card is ephemeral -- private, visible only to you -- Discord's interaction token expires 15 minutes after you ran the command. Past that point Eimi cannot edit the message at all.

Warning

A very long ephemeral job can leave its card frozen mid-bar even though the job finished normally. The generation itself is unaffected and the result is still recorded. Check /history if a private card goes quiet after 15 minutes.

Public cards posted as normal channel messages do not have this limit.

Categories: Queue | Failures | Imagine