Skip to content

Redesign Model Manager Installation Queue#8910

Merged
lstein merged 25 commits intoinvoke-ai:mainfrom
joshistoast:feat/model-manager-queue-redesign
Apr 10, 2026
Merged

Redesign Model Manager Installation Queue#8910
lstein merged 25 commits intoinvoke-ai:mainfrom
joshistoast:feat/model-manager-queue-redesign

Conversation

@joshistoast
Copy link
Copy Markdown
Collaborator

Summary

Completely redesigns the model manager's install queue panel. The new design gives proper hierarchy and organization to the model queue items and their statuses, actions and data.

image

Compared with the previous version:

image

Related Issues / Discussions

QA Instructions

Merge Plan

Checklist

  • The PR has a short but descriptive title, suitable for a changelog
  • Tests added / updated (if applicable)
  • ❗Changes to a redux slice have a corresponding migration
  • Documentation added / updated (if applicable)
  • Updated What's New copy (if doing a release after this PR)

joshistoast added 3 commits February 24, 2026 18:07
- standardized table row widths
- sticky table header
- reverse table data direction (new items on top)
- queue empty state
- ui and icon tweaks
- add progress tooltip
- add code comments for sanity
@github-actions github-actions bot added the frontend PRs that change frontend files label Feb 25, 2026
@joshistoast
Copy link
Copy Markdown
Collaborator Author

In a perfect world, individual queue items get a prune button

@DustyShoe
Copy link
Copy Markdown
Collaborator

image
  1. What was the intention behind combining all bulk action buttons into a single dropdown? In my opinion, this results in poor UX.
  2. How do we resume individual download? I’d suggest making the Pause button a toggle (Pause/Resume).
image image
  1. In the updated version, the “Backend disconnected” message feels more prominent and somewhat out of place compared to the previous layout.

@joshistoast
Copy link
Copy Markdown
Collaborator Author

joshistoast commented Feb 25, 2026

  1. What was the intention behind combining all bulk action buttons into a single dropdown? In my opinion, this results in poor UX.

Most invoke bulk actions are in a dropdown.

  1. How do we resume individual download? I’d suggest making the Pause button a toggle (Pause/Resume).

It is a toggle. Also the pausing feature doesn't work for me so if that portion of the UI is broken you'll need to let me know how to fix it.

  1. In the updated version, the “Backend disconnected” message feels more prominent and somewhat out of place compared to the previous layout.

Prominent is good.

@DustyShoe
Copy link
Copy Markdown
Collaborator

Also, if my opinion matters, i'm voting on separate bulk buttons and changing backend status message.

@joshistoast
Copy link
Copy Markdown
Collaborator Author

I don't think the backend status needs to even be here, it's already shown in the sidebar and there's nothing special about the queue that would warrant it getting a special badge for it and not the models page, generation page, etc.

@DustyShoe
Copy link
Copy Markdown
Collaborator

DustyShoe commented Feb 25, 2026

I don't think the backend status needs to even be here, it's already shown in the sidebar and there's nothing special about the queue that would warrant it getting a special badge for it and not the models page, generation page, etc.

“Backend disconnected” was added to address a specific UX gap:

  1. When the backend is stopped/crashes (for example via Ctrl+C), installs are paused server-side.
  2. During that disconnect window, the frontend can still show stale “In Progress” states.
  3. The banner makes it explicit that the data source is currently unavailable and queue status may be outdated.
  4. Once the backend reconnects and resync runs, statuses are refreshed.

So this prevents a false impression that downloads are still progressing normally.

Sure, we have a tiny triangle in the sidebar signaling the same thing, but it’s barely noticeable.

@lstein lstein self-assigned this Feb 27, 2026
@lstein lstein added the v6.13.x label Feb 27, 2026
@joshistoast joshistoast changed the title Feat/model manager queue redesign Redesign Model Manager Installation Queue Feb 27, 2026
@DustyShoe
Copy link
Copy Markdown
Collaborator

image

The popup could be more descriptive. What exactly is disconnected? The server? The backend?
I would still prefer to have separate bulk Pause/Resume buttons.
Combining all options into a single dropdown could lead to poor UX.
Users would have to guess that “Resume All / Pause All” options are available.

@joshistoast
Copy link
Copy Markdown
Collaborator Author

image The popup could be more descriptive. What exactly is disconnected? The server? The backend? I would still prefer to have separate bulk Pause/Resume buttons. Combining all options into a single dropdown could lead to poor UX. Users would have to guess that “Resume All / Pause All” options are available.

Hmm, those are supposed to be inline. Fair point on the description, I'll add that.

Tucking away the lower priority actions isn't bad UX, it's good UI. Under that alternative precedent, the rest of the UI would get VERY messy.

@DustyShoe
Copy link
Copy Markdown
Collaborator

Tucking away the lower priority actions isn't bad UX, it's good UI. Under that alternative precedent, the rest of the UI would get VERY messy.

I'd argue that claim. Resume all and Pause all are higher priority than Prune.
We shouldn't sacrifice good UX for the sake of good UI. Having three separate buttons for each action is not messy.

@joshistoast
Copy link
Copy Markdown
Collaborator Author

Tucking away the lower priority actions isn't bad UX, it's good UI. Under that alternative precedent, the rest of the UI would get VERY messy.

I'd argue that claim. Resume all and Pause all are higher priority than Prune. We shouldn't sacrifice good UX for the sake of good UI. Having three separate buttons for each action is not messy.

I'll sit and study some other queuing UIs to get a feel for what actions are priority

@joshistoast
Copy link
Copy Markdown
Collaborator Author

joshistoast commented Mar 4, 2026

How about this:

[Pause All] [Resume All] [...]
                         [Prune]
                         [Cancel All]

If There are no items to resume, the resume button is hidden. Likewise for pause all, so it feels like more of a toggle in some situations. But in situations where some are paused and some are running both would be visible.

@DustyShoe
Copy link
Copy Markdown
Collaborator

How about this:

[Pause All] [Resume All] [...]
[Prune]
If There are no items to resume, the resume button is hidden. Likewise for pause all, so it feels like more of a toggle in some situations. But in situations where some are paused and some are running both would be visible.

That sounds like a much better solution!

@joshistoast
Copy link
Copy Markdown
Collaborator Author

@DustyShoe You'll probably need to test the pause/resume since that functionality doesn't work for me at all.

@DustyShoe
Copy link
Copy Markdown
Collaborator

image

Pause All and Resume All working as they should.

Hidden Prune button is even more confusing now. Maybe leave it visible with Cancel All being hidden behind dropdown as it was before?

Also there's some inconsistency in Pause and Resume button width. Wouldn't it be better to make them look the same?

Status labels can be moved further to the left to leave more breathing room. Longer Pause button makes them jump to the left by few pixels.

@joshistoast
Copy link
Copy Markdown
Collaborator Author

joshistoast commented Mar 5, 2026

Hidden Prune button is even more confusing now. Maybe leave it visible with Cancel All being hidden behind dropdown as it was before?

The goal is to hide destructive elements into the dropdown. When there's no non-destructive bulk actions available, prune becomes the only option available up there in place of the pause/resume.

Also there's some inconsistency in Pause and Resume button width. Wouldn't it be better to make them look the same?

No

Status labels can be moved further to the left to leave more breathing room. Longer Pause button makes them jump to the left by few pixels.

I can adjust that a tad

@DustyShoe
Copy link
Copy Markdown
Collaborator

The goal is to hide destructive elements into the dropdown. When there's no non-destructive bulk actions available, prune becomes the only option available up there in place of the pause/resume.

Prune is not a destructive action, and it should remain visible whenever there are jobs in the list with no available actions.
Users shouldn’t have to guess that the option exists.

Hiding Cancel All is more acceptable because each job already has its own Cancel button.
Prune, on the other hand, doesn’t need per-job buttons since it only clears finished or cancelled items and can always be used without the risk of removing something unintentionally.

Copy link
Copy Markdown
Collaborator

@lstein lstein left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The UX works for me. I tested the following successfully:

  1. Adding multiple models to the queue
  2. pausing/resuming individual models
  3. cancelling individual models
  4. pausing/resuming all
  5. cancelling all
  6. killing the backend while the qiueue is active and then restarting the server.
    All seems to work as advertised.

lstein and others added 5 commits March 28, 2026 18:10
- Treated downloads_done as an active install phase for row UI and bulk cancel.
- Stopped stale error text from overriding the badge after resume/restart by only showing the error label when
  the displayed status is actually error.
- Added row-level action locking to block duplicate pause/resume/cancel/restart submissions.
- Added optimistic row status handling so the UI does not briefly fall back to stale error/restart state
  before RTK Query/socket updates arrive.
- Fixed local-path basename parsing for both the main row title and restart-required file rows.
- Added an accessible aria-label to the overflow menu button.
@joshistoast
Copy link
Copy Markdown
Collaborator Author

@lstein ok now it's good to go 👍

@DustyShoe
Copy link
Copy Markdown
Collaborator

You still don't want to expose Prune button when there's a mix of canceled/complete and active/paused downloads?

@lstein
Copy link
Copy Markdown
Collaborator

lstein commented Apr 4, 2026

@joshistoast

I took another look at the PR in the context of @DustyShoe 's comments. I've tried both with the Prune function being a button that appears whenever there is a terminal job to remove, or as a menu item. I do prefer having Prune be a button at all times, as it is a more consistent user experience.

However, I leave it up to you which to use. If you decide to go with the button interface, here is a small fix to show the Prune button whenever terminal jobs exist, even alongside active jobs.

Commit: 36c72c7

git fetch origin feat/model-manager-queue-redesign
git cherry-pick 36c72c76c1

The PR is approved, so just let me know what you decide.

(Co-Authored-By: Claude Opus 4.6 (1M context) noreply@anthropic.com)

@lstein lstein enabled auto-merge (squash) April 10, 2026 01:44
@lstein lstein merged commit 3c9b282 into invoke-ai:main Apr 10, 2026
13 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

frontend PRs that change frontend files v6.13.x

Projects

Status: 6.13.x Theme: MODELS

Development

Successfully merging this pull request may close these issues.

3 participants