Skip to content

feat(ui): add Generate tab Upscale controls#9126

Open
AsuraAce wants to merge 10 commits intoinvoke-ai:mainfrom
AsuraAce:codex/generate-upscale-hrf-pr
Open

feat(ui): add Generate tab Upscale controls#9126
AsuraAce wants to merge 10 commits intoinvoke-ai:mainfrom
AsuraAce:codex/generate-upscale-hrf-pr

Conversation

@AsuraAce
Copy link
Copy Markdown

@AsuraAce AsuraAce commented May 5, 2026

Summary

This PR adds Generate-tab Upscale controls backed by the existing High Resolution Fix graph path.

It includes:

  • a Generate-tab Upscale accordion with Latent and Upscale Model methods
  • graph generation for latent HRF and model-based upscaling/refinement, including tiled VAE decode for the final latent decode
  • model-family gating so Generate Upscale is visible/applied only for supported SD1.5 and SDXL bases
  • preservation of hidden Upscale settings when users temporarily switch to unsupported model families
  • metadata and recall support for HRF settings, refinement model, and dedicated HRF LoRAs
  • Recall Parameters behavior that recalls the base generation size and leaves final output dimensions to Image Details
  • UI polish for disabled-but-configurable Upscale settings, grouped refinement model selection, and Upscale-specific help popovers

The main user impact is that Generate users can configure an upscale/refinement pass directly from the Generate tab, then recall/remix images using the original base generation dimensions plus the saved Upscale settings.

View screenshots image
image

Related Issues / Discussions

N/A

QA Instructions

Manual reviewer QA:

  1. Select an SD1.5 or SDXL model on the Generate tab.
  2. Confirm the Generate accordions are ordered Image, Generation, Upscale, Refiner, Advanced.
  3. Open Upscale with Enable off and confirm the settings are visible but muted/disabled.
  4. Hover labels such as Denoise Strength, Tile Control, Tile Control Weight, and Refinement LoRAs; confirm the help text is specific to Upscale/refinement behavior.
  5. Enable Upscale, select Latent, set Scale to 2, and generate. Confirm generation completes and the output dimensions match the scaled size.
  6. Switch to Upscale Model, select an upscale model and a Tile/Union ControlNet model, then generate successfully.
  7. If compatible models are available, select a Refinement Model, set Refinement LoRAs to Dedicated, add a LoRA, and generate.
  8. Open the generated image in Viewer -> Recall Parameters; confirm Upscale fields are listed, including the refinement model and dedicated refinement LoRAs when used.
  9. Remix/recall the image and confirm Width/Height recall the base generation size while Image Details still show the final upscaled output size.
  10. Switch to an unsupported model family such as Flux, SD3, or Anima; confirm the Upscale accordion is hidden and stale Upscale settings do not block queueing.
  11. Switch back to SD1.5 or SDXL and confirm the previous Upscale settings are preserved.

Automated checks run locally:

pnpm --dir invokeai/frontend/web exec vitest run src/features/nodes/util/graph/generation/addHighResFix.test.ts src/features/gallery/components/ImageMetadataViewer/ImageMetadataActions.test.tsx src/features/metadata/parsing.test.ts src/features/metadata/parsing.test.tsx src/features/controlLayers/store/paramsSlice.test.ts src/features/queue/store/readiness.test.ts
pnpm run --dir invokeai/frontend/web lint:tsc
pnpm run --dir invokeai/frontend/web lint:eslint
pnpm run --dir invokeai/frontend/web lint:prettier
git diff --check

Additional local smoke coverage:

  • Latent HRF uses tiled final decode and avoids the previous VRAM issue
  • Upscale Model HRF generates and metadata recall uses the base generation size
  • Generation queue smoke test passed with a single active backend for the Invoke root

Merge Plan

No special merge sequencing is required. This touches persisted Generate params and includes the corresponding migration/test coverage.

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 (not applicable)
  • Updated What's New copy (not applicable)

@github-actions github-actions Bot added python PRs that change python files invocations PRs that change invocations frontend PRs that change frontend files labels May 5, 2026
@AsuraAce AsuraAce changed the title [codex] Add Generate tab Upscale controls feat(ui): add Generate tab Upscale controls May 5, 2026
@AsuraAce AsuraAce marked this pull request as ready for review May 5, 2026 16:35
@AsuraAce AsuraAce marked this pull request as draft May 5, 2026 19:11
@AsuraAce
Copy link
Copy Markdown
Author

AsuraAce commented May 5, 2026

I found one more support-scope issue while smoke testing: latent Upscale is currently exposed for non-SD model families like ANIMA. I’m moving this back to draft briefly to tighten supported model gating before review.

@AsuraAce AsuraAce marked this pull request as ready for review May 6, 2026 11:44
@lstein lstein added the 6.14.x label May 7, 2026
@lstein lstein moved this to 6.14.x Theme: LIBRARY UPDATES in Invoke - Community Roadmap May 7, 2026
@kappacommit
Copy link
Copy Markdown
Contributor

I quite like the idea of this feature, my one feedback would be to update your hover tooltips for each control to be more meaningful. Eg: What is a refinement LoRA? And for the sliders, maybe along the lines of what a higher value for that setting will do versus a lower value.

@AsuraAce
Copy link
Copy Markdown
Author

AsuraAce commented May 8, 2026

@kappacommit Thanks for the feedback, tooltips are updated, i hope things are clearer now.

AsuraAce added 2 commits May 8, 2026 09:32
…ale-hrf-pr

# Conflicts:
#	invokeai/frontend/web/src/features/controlLayers/store/paramsSlice.test.ts
#	invokeai/frontend/web/src/features/controlLayers/store/paramsSlice.ts
#	invokeai/frontend/web/src/features/controlLayers/store/types.ts
@kappacommit
Copy link
Copy Markdown
Contributor

@kappacommit Thanks for the feedback, tooltips are updated, i hope things are clearer now.

Much better, thank you

@joshistoast
Copy link
Copy Markdown
Collaborator

While on the surface this is a great thing to have, we have a dedicated upscale tab. This is now effectively duplicating the upscale feature, and I feel like we should focus on instead improving that

@AsuraAce
Copy link
Copy Markdown
Author

AsuraAce commented May 9, 2026

While on the surface this is a great thing to have, we have a dedicated upscale tab. This is now effectively duplicating the upscale feature, and I feel like we should focus on instead improving that

This is actually what it try to improve. Instead of user having to do something like:

Generate Tab (Generate Image) > Upscale Tab (Upscale Image) > Canvas (Add Detail). This takes minutes and you loose metadata in the process. Adding Upscale and Detailer to the Generate Tab would make this more convenient and faster to generate images while not taking anything away.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

6.14.x frontend PRs that change frontend files invocations PRs that change invocations python PRs that change python files

Projects

Status: 6.14.x Theme: LIBRARY UPDATES

Development

Successfully merging this pull request may close these issues.

5 participants