✨ Undo/redo in Workflows
Undo/redo redo now available in the workflow editor. There's some amount of tuning to be done with how actions are grouped.
For example, when you move a node around, do we allow you to undo each pixel of movement, or do we group the position changes as one action? When you are typing a prompt, do we undo each letter, word, or the whole change at once?
Currently, we group like changes together. It's possible some things are grouped when they shouldn't be, or should be grouped but are not. Your feedback will be very useful in tuning the behaviour so it un-does the right changes.
✨ Load Workflow from Any Image
Starting with v4.2.2, graphs are embedded in _all_ images generated by Invoke. Images generated in the workflow editor also have the enriched workflow embedded separately. The `Load Workflow` button will load the enriched workflow if it exists, else it will load the graph.
You'll see a new `Graph` tab in the metadata viewer showing the embedded graph.
Graph vs Workflow
Graphs are used by the backend and contain minimal data. Workflows are an enrich data format that includes a representation of the graph plus extra information, including things like:
- Title, description, author, etc
- Node positions
- Custom node and field labels
This new feature embeds the _graph_ in every image - including images generated on the Generation or Canvas tabs.
Canvas Caveat
This functionality is available only for _individual_ canvas generations - not the full composition. Why is that?
Consider what goes into a full canvas composition. It's the product of any number of graphs, with any amount of drawing and erasing between each graph execution. It's not possible to consolidate this into a single graph.
When you generate on canvas, your images for the given bounding box are added to a staging area, which allows you to cycle through images and commit or discard the image. The staging area also allows you to save a candidate generation. **It is these images that can be loaded as a workflow, because they are the product of a single graph execution.**
👷 Other Fixes and Enhancements
- Min/max LoRA weight values extended (-10 to +10) H0onnn
- Denoising strength and layer opacity are retained when sending image to initial image steffy-lo
- SDXL T2I Adapter only blocks invoking when dimensions aren't multiple of 32 (was erroneously 64)
- Improved UX when manipulating edges in workflows
- Connected inputs on nodes collapse, hiding the nonfunctional UI component
- Use `ctrl/cmd-shift-v` to paste copied nodes with input edges
- Docs updates hsm207
- Fix: visible seams when outpainting
- Fix: edge case that could prevent workflows from loading if user hadn't opened the workflows tab yet
- Fix: minor jank/inefficiency with control adapter auto-process (control layers only)
- Internal: utility to create graph objects without going crazy
- Internal: rewritten connection validation logic for workflows with full test coverage
- Internal: rewritten edge connection interactions
- Internal: revised field type format
💾 Installation and Updating
To install or update to v4.2.2, [download the installer](https://github.com/invoke-ai/InvokeAI/releases/download/v4.2.2/InvokeAI-installer-v4.2.2.zip) and follow the [installation instructions](https://invoke-ai.github.io/InvokeAI/installation/010_INSTALL_AUTOMATED/).
To update, select the same installation location. Your user data (images, models, etc) will be retained.
Missing models after updating from v3 to v4
See [this FAQ](https://invoke-ai.github.io/InvokeAI/help/FAQ/#missing-models-after-updating-to-v4).
What's Changed
* fix: Fix Outpaint not applying the expanded mask correctly by blessedcoolant in https://github.com/invoke-ai/InvokeAI/pull/6370
* feat(ui): graph builder by psychedelicious in https://github.com/invoke-ai/InvokeAI/pull/6361
* docs: fix install reqs link by psychedelicious in https://github.com/invoke-ai/InvokeAI/pull/6374
* feat(ui): SDXL clip skip by psychedelicious in https://github.com/invoke-ai/InvokeAI/pull/6378
* [Refactor] Update min and max values for LoRACard weight input by H0onnn in https://github.com/invoke-ai/InvokeAI/pull/6383
* feat(ui): workflows undo/redo by psychedelicious in https://github.com/invoke-ai/InvokeAI/pull/6379
* feat(ui): prevent connections to direct-only inputs by psychedelicious in https://github.com/invoke-ai/InvokeAI/pull/6387
* feat(ui): copy/paste input edges when copying node by psychedelicious in https://github.com/invoke-ai/InvokeAI/pull/6385
* fix(ui): allow image dims multiple of 32 with SDXL and T2I adapter by psychedelicious in https://github.com/invoke-ai/InvokeAI/pull/6366
* revert(ui): SDXL clip skip by psychedelicious in https://github.com/invoke-ai/InvokeAI/pull/6389
* fix(ui): field ordering & display by psychedelicious in https://github.com/invoke-ai/InvokeAI/pull/6390
* feat(ui): store workflow in generation tab images by psychedelicious in https://github.com/invoke-ai/InvokeAI/pull/6384
* feat(worker): add nullable user_id and project_id to invocation error events by maryhipp in https://github.com/invoke-ai/InvokeAI/pull/6388
* docs: fix link to. install reqs by hsm207 in https://github.com/invoke-ai/InvokeAI/pull/6392
* fix(ui): control adapter auto-process jank by psychedelicious in https://github.com/invoke-ai/InvokeAI/pull/6393
* feat(ui): connection validation rework by psychedelicious in https://github.com/invoke-ai/InvokeAI/pull/6386
* fix(ui): edge case resulting in no node templates when loading workfl… by psychedelicious in https://github.com/invoke-ai/InvokeAI/pull/6397
* feat: write-only canvas metadata by psychedelicious in https://github.com/invoke-ai/InvokeAI/pull/6404
* fix(ui): fix t2i adapter dimensions error message by psychedelicious in https://github.com/invoke-ai/InvokeAI/pull/6391
* feat(ui): better field types by psychedelicious in https://github.com/invoke-ai/InvokeAI/pull/6396
* fix(ui): workflow edges not saved by psychedelicious in https://github.com/invoke-ai/InvokeAI/pull/6403
* [6351] ui: retain denoise strength and opacity when changing image by steffy-lo in https://github.com/invoke-ai/InvokeAI/pull/6407
* chore: v4.2.2 by psychedelicious in https://github.com/invoke-ai/InvokeAI/pull/6410
New Contributors
* H0onnn made their first contribution in https://github.com/invoke-ai/InvokeAI/pull/6383
* hsm207 made their first contribution in https://github.com/invoke-ai/InvokeAI/pull/6392
* steffy-lo made their first contribution in https://github.com/invoke-ai/InvokeAI/pull/6407
**Full Changelog**: https://github.com/invoke-ai/InvokeAI/compare/v4.2.1...v4.2.2