We are pleased to announce a new beta release of InvokeAI 3.0 for user testing.
- What's New
- Getting Started with SDXL
- What's Missing
- Installation and Upgrading
- Getting Help
- Development Roadmap
- Detailed Change Log
Please use the 3.0.0 release discussion thread, InvokeAI Issues, or the InvokeAI Discord Server to report bugs and other issues.
Recent fixes
- Stable Diffusion XL (SDXL) 0.9 support in the node editor. See Getting Started with SDXL
- Stable Diffusion XL models added to the optional starter models presented by the model installer
- Memory and performance improvements for XL models (thanks to @StAlKeR7779)
- Image upscaling using the latest version of RealESRGAN (fixed thanks to @psychedelicious )
- VRAM optimizations to allow SDXL to run on 8 GB VRAM environments.
- Feature-complete Model Manager in the Web GUI to provide online model installation, configuration and deletion.
- Recommended LoRA and ControlNet models added to model installer.
- UI tweaks, including updated hotkeys.
- Translation and tooltip fixes
- Documentation fixes, including description of all options in
invokeai.yaml
- Improved support for half-precision generation on Macintoshes.
- Improved long prompt support.
- Fix "Package 'invokeai' requires a different Python:" error
Known bug in this beta If you are installing InvokeAI completely from scratch, on the very first image generation you may get a black screen. Just reload the web page and the problem will be resolved for this and subsequent generations.
What's New in v3.0.0
Quite a lot has changed, both internally and externally
Web User Interface:
- A ControlNet interface that gives you fine control over such things as the posture of figures in generated images by providing an image that illustrates the end result you wish to achieve.
- A Dynamic Prompts interface that lets you generate combinations of prompt elements.
- SDXL support
- A redesigned user interface which makes it easier to access frequently-used elements, such as the random seed generator.
- The ability to create multiple image galleries, allowing you to organize your generated images topically or chronologically.
- A graphical node editor that lets you design and execute complex image generation operations using a point-and-click interface (see below for more about nodes)
- Macintosh users can now load models at half-precision (float16) in order to reduce the amount of RAM used by each model by half.
- Advanced users can choose earlier CLIP layers during generation to produce a larger variety of images.
- Long prompt support (>77 tokens)
- Schedulers that did not work properly for Canvas inpainting have been fixed.
The WebUI can now be launched from the command line using either invokeai-web
(preferred new way) or invokeai --web
(deprecated old way).
Command Line Tool
- The previous command line tool has been removed and replaced with a new developer-oriented tool
invokeai-node-cli
that allows you to experiment with InvokeAI nodes.
Installer
The console-based model installer, invokeai-model-install
has been redesigned and now provides tabs for installing checkpoint models, diffusers models, ControlNet models, LoRAs, and Textual Inversion embeddings. You can install models stored locally on disk, or install them using their web URLs or Repo_IDs.
Internal
Internally the code base has been completely rewritten to be much easier to maintain and extend. Importantly, all image generation options are now represented as "nodes", which are small pieces of code that transform inputs into outputs and can be connected together into a graph of operations. Generation and image manipulation operations can now be easily extended by writing a new InvokeAI nodes.
Getting Started with SDXL
Stable Diffusion XL (SDXL) is the latest generation of StabilityAI's image generation models, capable of producing high quality 1024x1024 photorealistic images as well as many other visual styles. As of the current time (July 18, 2023) SDXL had not been officially released, but a pre-release 0.9 version is widely available. InvokeAI provides support for SDXL image generation via its Nodes Editor, a user interface that allows you to create and customize complex image generation pipelines using a drag-and-drop interface. Currently SDXL generation is not directly supported in the text2image, image2image, and canvas panels, but we expect to add this feature in the next few days.
SDXL comes with two models, a "base" model that generates the initial image, and a "refiner" model that takes the initial image and improves on it in an img2img manner. For best results, the initial image is handed off from the base to the refiner before all the denoising steps are complete. It is not clear whether SDXL 1.0, when it is released, will require the refiner.
To experiment with SDXL, you'll need the "base" and "refiner" models. Currently a beta version of SDXL, version 0.9, is available from HuggingFace for research purposes. To obtain access, you will need to register with HF at https://huggingface.co/join, obtain an access token at https://huggingface.co/settings/tokens, and add the access token to your environment. The easiest way to do the latter is to run the InvokeAI configure script, launcher option [6], and cut and paste the access token into the access token field. Save the changes.
Now navigate to https://huggingface.co/stabilityai/stable-diffusion-xl-base-0.9 and fill out the access request form for research use. You will be granted instant access to download. Next launch the InvokeAI console-based model installer by selecting launcher option [5] or by activating the virtual environment and giving the command invokeai-model-install
. In the STARTER MODELS section, select the checkboxes for stable-diffusion-xl-base-0-9
and stable-diffusion-xl-refiner-0-9
. Press Apply Changes to install the models and keep the installer running, or Apply Changes and Exit to install the models and exit back to the launcher menu.
Alternatively you can install these models from the Web UI Model Manager (cube at the bottom of the left-hand panel) and navigate to Import Models. In the field labeled Location type in the repo id of the base model, which is stabilityai/stable-diffusion-xl-base-0.9
. Press Add Model and wait for the model to download and install (the page will freeze while this is happening). After receiving confirmation that the model installed, repeat with stabilityai/stable-diffusion-xl-refiner-0.9
.
Note that these are large models (12 GB each) so be prepared to wait a while.
To use the installed models enter the Node Editor (inverted "Y" in the left-hand panel) and upload either the SDXL base-only or SDXL base+refiner invocation graphs. This will load and display a flow diagram showing the steps in generating an SDXL image.
Ensure that the SDXL Model Loader (leftmost column, bottom) is set to load the SDXL base model on your system, and that the SDXL Refiner Model Loader (third column, top) is set to load the SDXL refiner model on your system. Find the nodes that contain the example prompt and style ("bluebird in a sakura tree" and "chinese classical painting") and replace them with the prompt and style of your choice. Then press the Invoke button. If all goes well, an image will be generated and added to the image gallery.
Be aware that SDXL support is an experimental feature and is not 100% stable. When designing your own SDXL pipelines, be aware that there are certain settings that will have a disproportionate effect on image quality. In particular, the latents decode VAE step must be run at fp32
precision (using a slider at the bottom of the VAE node), and that images will change dramatically as the denoising threshold used by the refiner is adjusted.
Also be aware that SDXL requires at least 8 GB of VRAM in order to render 1024x1024 images. For best performance, we recommend the following settings in invokeai.yaml
:
precision: float16
max_cache_size: 12.0
max_vram_cache_size: 0.0
What's Missing in v3.0.0
Some features are missing or not quite working yet. These include:
- SDXL models can only be used in the node editor, and not in the text2img, img2img or unified canvas panels.
- A migration path to import 2.3-generated images into the 3.0 image gallery
- Diffusers-style LoRA files (with a HuggingFace repository ID) can be imported but do not run. There are very few of these models and they will not be supported at release time.
- Various minor glitches in image gallery behavior.
The following 2.3 features are not available:
- Variation generation (may be added in time for the final release)
- Perlin Noise (will likely not be added)
- Noise Threshold (available through Node Editor)
- Symmetry (will likely not be added)
- Seamless tiling (will likely not be added)
- Face restoration (no longer needed, will not be added)
Installation / Upgrading
Installing using the InvokeAI zip file installer
To install 3.0.0 please download the zip file at the bottom of the release notes (under "Assets"), unpack it, and then double-click to launch the script install.sh
(Macintosh, Linux) or install.bat
(Windows). Alternatively, you can open a command-line window and execute the installation script directly.
If you have an earlier version of InvokeAI installed, we strongly recommend that you install into a new directory, such as invokeai-3
instead of the previously-used invokeai
directory. We provide a script that will let you migrate your old models and settings into the new directory, described below.
InvokeAI-installer-v3.0.0+b9.zip
Upgrading in place
All users can upgrade from previous beta versions using the launcher's "upgrade" facility. If you are on a Linux or Macintosh, you may also upgrade a 2.3.2 or higher version of InvokeAI to 3.0 using this recipe, but upgrading from 2.3 will not work on Windows due to a 2.3.5 bug (see workaround below):
- Enter the 2.3 root directory you wish to upgrade
- Launch
invoke.sh
orinvoke.bat
- Select the
upgrade
menu option [9] - Select "Manually enter the tag name for the version you wish to update to" option [3]
- When prompted for the tag, enter
v3.0.0+b9
- When the upgrade is complete, the main menu will reappear. Choose "rerun the configure script to fix a broken install" option [7]
Windows users can instead follow this recipe:
- Enter the 2.3 root directory you wish to upgrade
- Launch
invoke.sh
orinvoke.bat
- Select the "Developer's console" option [8]
- Type the following command:
pip install "invokeai @ https://github.com/invoke-ai/InvokeAI/archive/refs/tags/v3.0.0+b9.zip" --use-pep517 --upgrade
(Replace v3.0.0+b9
with the current version number.
This will produce a working 3.0 directory. You may now launch the WebUI in the usual way, by selecting option [1] from the launcher script
After you have confirmed everything is working, you may remove the following backup directories and files:
- invokeai.init.orig
- models.orig
- configs/models.yaml.orig
- embeddings
- loras
To get back to a working 2.3 directory, rename all the '*.orig" files and directories to their original names (without the .orig), run the update script again, and select [1] "Update to the latest official release".
Migrating models and settings from a 2.3 InvokeAI root directory to a 3.0 directory
We provide a script, invokeai-migrate3
, which will copy your models and settings from a 2.3-format root directory to a new 3.0 directory. To run it, execute the launcher and select option [8] "Developer's console". This will take you to a new command line interface. On the command line, type:
invokeai-migrate3 --from <path to 2.3 directory> --to <path to 3.0 directory>
Provide the old and new directory names with the --from
and --to
arguments respectively. This will migrate your models as well as the settings inside invokeai.init
. You may provide the same --from
and --to
directories in order ot upgrade a 2.3 root directory in place. (The original models will configuration files will be backed up.)
Upgrading using pip
Once 3.0.0 is released (out of alpha and beta), developers and power users can upgrade to the current version by activating the InvokeAI environment and then using:
pip install --use-pep517 --upgrade InvokeAI
You may specify a particular version by adding the version number to the command, as in:
pip install --use-pep517 --upgrade InvokeAI==3.0.0+b8
To upgrade to an xformers
version if you are not currently using xformers
, use:
pip install --use-pep517 --upgrade InvokeAI[xformers]
You can see which versions are available by going to The PyPI InvokeAI Project Page
Getting Help
Please see the InvokeAI Issues Board or the InvokeAI Discord for assistance from the development team.
Getting a Stack Trace for Bug Reporting
If you are getting the message "Server Error" in the web interface, you can help us track down the bug by getting a stack trace from the failed operation. This involves several steps. Please see this Discord thread for a step-by-step guide to generating stack traces.
Development Roadmap
If you are looking for a stable version of InvokeAI, either use this release, install from the v2.3
source code branch, or use the pre-nodes
tag from the main
branch. Developers seeking to contribute to InvokeAI should use the head of the main
branch. Please be sure to check out the dev-chat channel of the InvokeAI Discord, and the architecture documentation located at Contributing to come up to speed.
Detailed Change Log
- adding support for ESRGAN denoising strength by @tjennings in #2598
- 2.3.0 Documentation Fixes by @lstein in #2609
- fix two bugs in conversion of inpaint models from ckpt to diffusers m… by @lstein in #2620
- Fix Incorrect Windows Environment Activation Location (Manual Installation Documentation) by @blhook in #2627
- small change to pull esrgan denoise strength through to the generate API. by @tjennings in #2623
- Huge Docker Update - better caching, don't use root user, include dockerhub and more.... by @mauwii in #2597
- add
merge_group
trigger to test-invoke-pip.yml by @mauwii in #2590 - Strategize slicing based on free [V]RAM by @JPPhoto in #2572
- Improve error messages from Textual Inversion and Merge scripts by @lstein in #2641
- Added arabic locale files by @ParisNeo in #2561
- Fix link to the installation documentation by @lstein in #2648
- Add thresholding for all diffusers types by @JPPhoto in #2479
- Fix typo and Hi-Res Bug by @hipsterusername in #2667
- Fix perlin noise generator for diffusers tensors by @JPPhoto in #2678
- [WebUI] Model Conversion by @blessedcoolant in #2616
- fix minor typos by @fat-tire in #2666
- Make install.bat.in point to correct configuration script by @zalo in #2680
- build: lint/format ignores stats.html by @psychedelicious in #2681
- [WebUI] Even off JSX string syntax by @dreglad in #2058
- design: smooth progress bar animations by @ryanccn in #2685
- skip huge workflows if not needed by @mauwii in #2688
- new OffloadingDevice loads one model at a time, on demand by @keturn in #2596
- Fix workflow path filters by @mauwii in #2689
- Update 050_INSTALLING_MODELS.md by @panicsteve in #2690
- [WebUI] They see me slidin .. they hatin... by @blessedcoolant in #2614
- Bugfix/convert v2 models by @lstein in #2630
- Bugfixes on the merge_model GUI by @lstein in #2697
- [WebUI] Model Merging by @blessedcoolant in #2699
- fix(xformers): shush about not having Triton available. by @keturn in #2701
- feat(ui): set up for weblate translation by @psychedelicious in #2702
- AttributeError: 'Namespace' object has no attribute 'log_tokenization' by @spezialspezial in #2698
- [WebUI] Localization Port Bug Fixes by @blessedcoolant in #2706
- Fixed grammar in "other options" feature tooltip by @ExperimentalCyborg in #2711
- fix(ui): fix translation files by @psychedelicious in #2708
- fix(diffusers_pipeline): ensure
cuda.get_mem_info
always gets a specific device index. by @keturn in #2700 - fix conversion of checkpoints into incompatible diffusers models by @lstein in #2714
- [ui] fix weblate merge conflict by @psychedelicious in #2716
- [WebUI] Implement a "Cancel after current iteration" Button by @blhook in #2642
- add ability to retrieve current list of embedding trigger strings by @lstein in #2650
- [WebUI] Model Manager Lag Fix by @blessedcoolant in #2720
- docs(ti): add using & troubleshooting sections by @psychedelicious in #2717
- ui: translations update from weblate by @weblate in #2727
- Fix behavior when encountering a bad embedding by @JPPhoto in #2721
- ui: update deps, fix husky script by @psychedelicious in #2726
- docs: add translation info to readme by @psychedelicious in #2725
- [WebUI] Bug Fixes by @blessedcoolant in #2728
- Add symmetry to generation by @JPPhoto in #2675
- Fix for issue #2707 by @AutoAwesome in #2710
- remove old swagger related files since security issues by @mauwii in #2730
- add @lstein and @blessedcoolant to all codeowner paths by @lstein in #2742
- [WebUI] Symmetry Settings by @blessedcoolant in #2741
- Correctly detect when an embedding is incompatible with the current model by @lstein in #2736
- Fix crash on calling diffusers' prepare_attention_mask by @JPPhoto in #2743
- fix crash in CLI when --save_intermediates called by @lstein in #2744
- [WebUI] Symmetry Fix by @blessedcoolant in #2745
- restore ability of textual inversion manager to read .pt files by @lstein in #2746
- During textual inversion training, skip over non-image files by @lstein in #2747
- Add 'update' action to launcher script by @lstein in #2636
- update installation docs for 2.3.1 installer screens by @lstein in #2749
- performance: low-memory option for calculating guidance sequentially by @keturn in #2732
- Fixed embiggening crash by @JPPhoto in #2756
- Fix crashing when using 2.1 model by @JPPhoto in #2757
- Fallback to using filename to trigger embeddings by @lstein in #2752
- fix crash in textual inversion with "num_samples=0" error by @lstein in #2762
- ui: fix use prompt when prompt has colon by @psychedelicious in #2760
- Refactor prompting code paths to use the
compel
library by @damian0815 in #2729 - Add new console frontend to initial model selection, and other model mgmt improvements by @lstein in #2644
- [WebUI] 2.3.1 Localization by @blessedcoolant in #2765
- docs: add TRANSLATION.md by @psychedelicious in #2769
- Bugfix/windows install by @lstein in #2770
- Add a sanity check to root directory finding algorithm by @lstein in #2772
- push to pypi from branch v2.3 by @lstein in #2778
- Update main with V2.3 fixes by @lstein in #2774
- Version 2.3.1-rc4 by @lstein in #2782
- fix python 3.9 compatibility by @mauwii in #2780
- fix ckpt_convert module to work with dreambooth v2 models by @lstein in #2776
- fix generate backend to generate "accurate" intermediate images by @lstein in #2787
- Run garbage collection to allow the CUDA cache to completely empty. by @JPPhoto in #2791
- Last PR needed for v2.3.1 by @lstein in #2788
- Sync main with v2.3.1 by @lstein in #2792
- ui: translations update from weblate by @weblate in #2804
- Add node-based invocation system by @Kyle0654 in #1650
- doc(invoke_ai_web_server): put docstrings inside their functions by @keturn in #2816
- perf(invoke_ai_web_server): encode intermediate result previews as jpeg by @keturn in #2817
- Split requirements / pyproject installation in Dockerfile by @mauwii in #2815
- add a workflow to close stale issues by @mauwii in #2808
- [nodes] Add better error handling to processor and CLI by @Kyle0654 in #2828
- fix newlines causing negative prompt to be parsed incorrectly by @damian0815 in #2837
- ui: translations update from weblate by @weblate in #2850
- Final phase of source tree restructure by @lstein in #2833
- Fix for txt2img2img.py by @mickr777 in #2856
- Protect invocations against black autoformatting by @lstein in #2854
- fix broken scripts by @lstein in #2857
- deps: upgrade to diffusers 0.14, safetensors 0.3, transformers 4.26, accelerate 0.16 by @keturn in #2865
- remove legacy ldm code by @keturn in #2866
- fix Dockerfile after restructure by @mauwii in #2863
- [ui]: migrate all styling to chakra-ui theme by @psychedelicious in #2814
- Migrate to new HF diffusers cache location by @lstein in #2867
- Bugfix/reenable ckpt conversion to ram by @lstein in #2868
- add .git-blame-ignore-revs file to maintain provenance by @lstein in #2855
- migrate to new diffusers model layout by @lstein in #2871
- support both epsilon and v-prediction v2 inference by @lstein in #2870
- feat(ui): migrate theming to chakra ui by @psychedelicious in #2873
- add missing package by @maryhipp in #2878
- Fixed startup issues with the web UI. by @JPPhoto in #2876
- [cli] Update CLI to define commands as Pydantic objects by @Kyle0654 in #2861
- ui: translations update from weblate by @weblate in #2882
- ui: update readme & scripts by @psychedelicious in #2884
- build: update actions by @psychedelicious in #2883
- Make img2img strength 1 behave the same as txt2img by @JPPhoto in #2895
- decouple default component from react root by @maryhipp in #2897
- [cli] Execute commands in-order with nodes by @Kyle0654 in #2901
- add back pytorch-lightning dependency by @lstein in #2899
- [ui] chore(Accessibility): various additions by @ElrikUnderlake in #2888
- Bypass the 77 token limit by @damian0815 in #2896
- Remove label from stale issues on comment event by @ebr in #2903
- Revert "Remove label from stale issues on comment event" by @lstein in #2912
- backend: more post-ldm-removal cleanup by @keturn in #2911
- Make sure command also works with Oh-my-zsh by @patrickvonplaten in #2905
- FIX bug that caused black images when converting ckpts to diffusers by @lstein in #2914
- Chore/accessibility add all aria labels to translation by @ElrikUnderlake in #2919
- ui: translations update from weblate by @weblate in #2922
- raise operations-per-run for issue workflow to 500 by @mauwii in #2925
- build: exclude ui from
test-invoke-pip
by @psychedelicious in #2892 - Remove image generation node dependencies on generate.py by @lstein in #2902
- [ui]: add resizable pinnable drawer component by @psychedelicious in #2874
- [fix] Get the model again if current model is empty by @Kyle0654 in #2938
- [nodes-api] Fix API generation to correctly reference outputs by @Kyle0654 in #2939
- [nodes] Fixes calls into image to image and inpaint from nodes by @Kyle0654 in #2940
- Fix bug #2931 by @JPPhoto in #2942
- chore(UI, accessibility): Icons. Header links & radio button by @ElrikUnderlake in #2935
- add additional build mode by @maryhipp in #2904
- fix --png_compression command line argument by @lstein in #2950
- Removed file-extension-based arbitrary code execution attack vector by @CodeZombie in #2946
- fix(inpaint): Seam painting being broken by @blessedcoolant in #2952
- Allow for dynamic header by @maryhipp in #2955
- [nodes] Add Edge data type by @Kyle0654 in #2958
- [deps] update compel to fix black output with weight=0; also use new downweighting algorithm by @damian0815 in #2961
- nodes: api fixes by @psychedelicious in #2959
- Fix some text and a link by @thinkyhead in #2910
- [WebUI] Quick Fixes by @blessedcoolant in #2974
- [nodes] Update fastapi packages to latest (except FastAPI, which has an annotation bug in the newest version) by @Kyle0654 in #3004
- Export more for header by @maryhipp in #2996
- load embeddings after a ckpt legacy model is converted to diffusers by @lstein in #3013
- make step_callback work again in generate() call by @lstein in #2957
- [deps] upgrade compel for better .swap defaults and a bugfix by @damian0815 in #3014
- Tidy up Tests and Provide Documentation by @mastercaster9000 in #2869
- Allow loading all types of dreambooth models - Fix issue #2932 by @mrwho in #2933
- ui: translations update from weblate by @weblate in #3021
- build: do not run python tests on ui build by @psychedelicious in #2987
- re-implement model scanning when loading legacy checkpoint files by @lstein in #3012
- doc(readme): fix incorrect install command by @darkcl in #3024
- add github API token to mkdocs workflow by @lstein in #3023
- Convert custom VAEs during legacy checkpoint loading by @lstein in #3010
- (fix)[docs] Fixed snippet/code formatting by @felixsanz in #2918
- fix issue with embeddings being loaded twice by @lstein in #3029
- Avoid invoke.sh infinite loop (main branch) by @lstein in #3017
- feat[web]: use the predicted denoised image for previews by @keturn in #2915
- nodes: add cancelation, updated progress callback, typing fixes by @psychedelicious in #3036
- fix(ui): fix viewer tooltip localisation strings by @psychedelicious in #3037
- Doc: updating ROCm version in documentation by @aeyno in #3041
- Downgrade FastAPI by @ebr in #3039
- Fix bugs in online ckpt conversion of 2.0 models by @lstein in #3057
- improve importation and conversion of legacy checkpoint files by @lstein in #3053
- I18n build mode by @maryhipp in #3051
- add basic autocomplete functionality to node cli by @lstein in #3035
- Add support for yet another TI embedding format (main version) by @lstein in #3050
- fix(nodes): commit changes to db by @psychedelicious in #3103
- [deps] bump compel version to fix crash on invalid (auto111) syntax by @damian0815 in #3107
- fix(nodes): fix typo in
list_sessions
handler by @psychedelicious in #3109 - Right link on pytorch installer for linux rocm by @creachec in #3084
- feat(nodes): save thumbnails by @psychedelicious in #3105
- fix build-container.yml by @mauwii in #3117
- Model API Merge Into Main by @hipsterusername in #3079
- [nodes] Add latent nodes, storage, and fix iteration bugs by @Kyle0654 in #3091
- Fix typo by @panicsteve in #3133
- Change where !replay looks for its infile by @teerl in #3129
- add a new method to model_manager that retrieves individual pipeline components by @lstein in #3120
- chore: configure stale bot by @psychedelicious in #3134
- remove vestiges of non-functional autoimport code for legacy checkpoints by @lstein in #3076
- Add python-multipart, which is needed by nodes by @cmsj in #3141
- fix(nodes): use correct torch device in NoiseInvocation by @psychedelicious in #3128
- fix typo by @c67e708d in #3147
- Add/Update and Delete Models by @hipsterusername in #3131
- feat(nodes): add list_images endpoint by @psychedelicious in #3126
- feat(nodes): mark ImageField properties required, add invocation README by @psychedelicious in #3108
- Increase chunk size when computing diffusers SHAs by @AbdBarho in #3159
- fix(nodes): add missing type to
ImageField
by @psychedelicious in #3170 - fix(nodes):
sampler_name
-->scheduler
by @psychedelicious in #3169 - feat(nodes): fix typo in PasteImageInvocation by @psychedelicious in #3155
- feat(nodes): add invocation schema customisation, add model selection by @psychedelicious in #3171
- Fixed a Typo. by @nicholaskoerfer in #3190
- [nodes] Add subgraph library, subgraph usage in CLI, and fix subgraph execution by @Kyle0654 in #3180
- feat(ui): Add "Hide Preview" Button to WebUI by @SammCheese in #3204
- Make InvocationQueueItem serializable by @ebr in #3187
- [bug] #3218 HuggingFace API off when --no-internet set by @TimCabbage in #3219
- Added CPU instruction for README by @EternalLeo in #3225
- Update NSFW.md by @AldeRoberge in #3231
- update CODEOWNERS for changed team composition by @lstein in #3234
- chore: add ".version" and ".last_model" to gitignore by @SammCheese in #3208
- Partial migration of UI to nodes API by @psychedelicious in #3195
- [Nodes UI] Invocation Component Updates by @blessedcoolant in #3247
- Responsive Mobile Layout by @SammCheese in #3207
- [Nodes UI] More Work by @blessedcoolant in #3248
- feat(ui): add support for shouldFetchImages if UI needs to re-fetch an image URL by @maryhipp in #3250
- feat(ui): add reload schema button by @psychedelicious in #3252
- ui: translations update from weblate by @weblate in #3259
- Event service will now sleep for 100ms between polls instead of 1ms, reducing CPU usage significantly by @cmsj in #3256
- update to diffusers 0.15 and fix code for name changes by @lstein in #3201
- [Bugfix] fixes and code cleanup to update and installation routines by @lstein in #3101
- [Bugfix] prevent cli crash by @lstein in #3132
- fix(ui): fix no progress images when gallery is empty by @psychedelicious in #3268
- [nodes] add delete image & delete images endpoint by @psychedelicious in #3245
- feat(ui): support disabledFeatures, add nicer loading by @psychedelicious in #3271
- feat(ui): wip img2img ui by @psychedelicious in #3258
- fix(ui): update UI to handle uploads with alternate URLs by @maryhipp in #3274
- docs: add note on README about migration by @psychedelicious in #3277
- feat(ui): add config slice, configuration default values by @psychedelicious in #3273
- fix(ui): add formatted neg prompt for linear nodes by @maryhipp in #3282
- feat(ui): remove connected/disconnected toasts bc we have status for that by @maryhipp in #3287
- fix(ui): update thumbnailReceived to match change in route params by @maryhipp in #3286
- fix(ui): update exported types by @maryhipp in #3283
- feat(nodes): add resize and scale latents nodes by @psychedelicious in #3261
- ui: set up more straightforward packaging of UI components by @psychedelicious in #3292
- ui: session persistence by @psychedelicious in #3280
- fix(ui): fix packaging import issue by @psychedelicious in #3294
- fix(ui): restore missing chakra-cli package by @psychedelicious in #3295
- feat(ui): logging by @psychedelicious in #3299
- ui: error handling, init image, cleanup, recall params by @psychedelicious in #3301
- ui, nodes: fix img2img fit param by @psychedelicious in #3308
- nodes-api: enforce single thread for the processor by @ebr in #3312
- feat(ui): use windowing for gallery by @psychedelicious in #3307
- feat(nodes): allow multiples of 8 for dimensions by @psychedelicious in #3260
- fix(nodes): fix
t2i
graph by @psychedelicious in #3318 - chore(ui): bump react-virtuoso by @psychedelicious in #3324
- feat(ui): do not persist gallery images by @psychedelicious in #3331
- [Enhancement] Regularize logging messages by @lstein in #3176
- Fix inpaint node by @aluhrs13 in #3284
- Add compel node and conditioning field type by @StAlKeR7779 in #3265
- Fix logger namespace clash in web server by @lstein in #3344
- add -y to the automated install instructions by @stevemar in #3349
- ui: support collect nodes by @psychedelicious in #3357
- Deploy documentation from v2.3 branch rather than main by @lstein in #3356
- Use websocket transport first for Socket.io by @ebr in #3369
- if backend throws a socket connection error, let user know via toast by @maryhipp in #3364
- surface error detail field to redux layer for 403 errors by @maryhipp in #3362
- Update dependencies to get deterministic image generation behavior (main branch) by @lstein in #3354
- fix(nodes): fix #3306 by @psychedelicious in #3377
- feat(nodes): add ui build static route by @psychedelicious in #3378
- fix some missing translations by @maryhipp in #3381
- ui: migrate canvas to nodes by @psychedelicious in #3323
- filter out websocket errors by @maryhipp in #3382
- fix(nodes): fix missing
context
arg in LatentsToLatents by @psychedelicious in #3387 - ui: miscellaneous fixes by @psychedelicious in #3386
- fix translations again by @maryhipp in #3395
- Add UniPC / Euler Karras / DPMPP_2 Karras / DEIS / DDPM Schedulers by @blessedcoolant in #3388
- fix(model manager): fix string formatting error on model checksum timer by @keturn in #3397
- docs(ui): update ui readme by @psychedelicious in #3396
- feat(ui): make core parameters layout consistent by @psychedelicious in #3394
- fix(nodes): remove Optionals on ImageOutputs by @psychedelicious in #3392
- feat(nodes): add w/h to latents outputs by @psychedelicious in #3389
- feat(nodes): add RandomIntInvocation by @psychedelicious in #3390
- feat(ui): expand config options by @psychedelicious in #3393
- ui: misc fixes by @psychedelicious in #3398
- Feat/ui/improve-language by @psychedelicious in #3399
- fix(nodes): temporarily disable librarygraphs by @psychedelicious in #3372
- Make InvocationProcessor more robust against exceptions by @ebr in #3376
- rehydrate selectedImage URL when results and uploads are fetched by @maryhipp in #3403
- Add Heun Karras Scheduler by @blessedcoolant in #3402
- ui: commercial fixes by @psychedelicious in #3409
- Logging Improvements by @blessedcoolant in #3401
- fix(ui): fix syntax error in the logo component flexbox by @ebr in #3410
- make conditioning.py work with compel 1.1.5 by @lstein in #3383
- ui: restore canvas and upload functionality by @psychedelicious in #3414
- ui: cleanup by @psychedelicious in #3418
- feat(nodes): add low and high to RandomIntInvocation by @psychedelicious in #3419
- tell user to refresh page on image load error by @maryhipp in #3425
- Add configuration system, remove legacy globals, args, generate and CLI by @lstein in #3340
- add some IDs by @maryhipp in #3432
- added optional middleware prop and new actions needed by @maryhipp in #3437
- add crossOrigin = anonymous attribute to konva image by @maryhipp in #3450
- fix(ui): send to canvas in currentimagebuttons not working by @psychedelicious in #3428
- build: fix test-invoke-pip.yml by @psychedelicious in #3451
- fix: attempt to fix actions by @psychedelicious in #3454
- fix(nodes): fix seam painting by @psychedelicious in #3449
- images refactor by @psychedelicious in #3443
- Update 020_INSTALL_MANUAL.md by @KernelGhost in #3439
- fix tests by @psychedelicious in #3458
- Use parameter fixes by @maryhipp in #3464
- Default Scheduler Update by @hipsterusername in #3457
- feat(nodes, ui): change how "intermediate" artefacts are handled by @psychedelicious in #3463
- (wip) Fix gallery jumpiness when image is fully generated by @maryhipp in #3465
- ui: error and event handling by @psychedelicious in #3467
- Update CODEOWNERS by @hipsterusername in #3468
- Feat/controlnet nodes by @GreggHelt2 in #3405
- image service fixes by @psychedelicious in #3473
- misc fixes by @psychedelicious in #3479
- Fixed problem with inpainting after controlnet support added to main. by @GreggHelt2 in #3483
- feat(ui): more misc fixes by @psychedelicious in #3482
- fix(ui): ensure download image opens in new tab by @psychedelicious in #3484
- fix(ui): fix width and height not working on txt2img tab by @psychedelicious in #3485
- ui: improve metadata handling by @psychedelicious in #3487
- ui: fix looping gallery fetch by @psychedelicious in #3488
- add optional config for settings modal by @maryhipp in #3490
- Make Invoke Button also the progress bar by @mickr777 in #3492
- Add logging configuration by @lstein in #3460
- feat(nodes): add separate scripts to launch cli and web by @psychedelicious in #3495
- ui: controlnet in linear ui by @psychedelicious in #3491
- Update web README.md by @psychedelicious in #3496
- Prompting: enable long prompts and compel's new
.and()
concatenating feature by @damian0815 in #3497 - ui: handle drag and drop to canvas by @psychedelicious in #3499
- feat(ui): fix image fit by @psychedelicious in #3501
- Fix potential race condition in config system by @lstein in #3466
- feat(ui): improve UI on smaller screens by @psychedelicious in #3505
- feat(ui): fix canvas saving by @psychedelicious in #3503
- ui: improve image url refresh, error and deletion handling by @psychedelicious in #3502
- feat(ui): update image urls on connect by @psychedelicious in #3507
- feat(ui): fix bugs with image deletion by @psychedelicious in #3506
- Graph overlay was expanding off the screen to the size of the prompt line by @mickr777 in #3510
- ui: controlnet tweaks by @psychedelicious in #3508
- docs(nodes): update INVOCATIONS.md by @psychedelicious in #3511
- fix(ui): default controlnet autoprocess to true by @psychedelicious in #3513
- Update installer support for main by @lstein in #3448
- create databases directory on startup by @lstein in #3518
- feat(ui): skip resize on img2img if not needed by @psychedelicious in #3520
- feat(ui): restore reset button for init image by @psychedelicious in #3521
- feat(nodes): depth-first execution by @psychedelicious in #3517
- feat(ui): decrease delay on dnd to 150ms by @psychedelicious in #3522
- feat(ui): enhance IAICustomSelect by @psychedelicious in #3523
- ui: misc fixes by @psychedelicious in #3525
- fix(ui): fix crash when using dropdown on certain device resolutions by @psychedelicious in #3526
- fix logger behavior so that it is initialized after command line parsed by @lstein in #3509
- Feat/easy param by @GreggHelt2 in #3504
- fix: git stash by @blessedcoolant in #3528
- Fix/UI/controlnet fixes by @psychedelicious in #3531
- Upgrade to Diffusers 0.17.0 by @blessedcoolant in #3514
- Add Mantine UI Support by @blessedcoolant in #3532
- remove
image_origin
from most places by @psychedelicious in #3537 - refactor(minor): Image & Latent File Storage by @blessedcoolant in #3538
- nodes: add dynamic prompt node by @psychedelicious in #3533
- Model Manager rewrite by @lstein in #3335
- Model manager fixes by @StAlKeR7779 in #3541
- Add lms and dpmpp2_s karras scheduler by @StAlKeR7779 in #3551
- feat: Port Schedulers to Mantine by @blessedcoolant in #3552
- Update index.md by @DrGunnarMallon in #3553
- Add dpmpp_sde and dpmpp_2m_sde schedulers(with karras) by @StAlKeR7779 in #3554
- Fix inpaint node to new manager by @StAlKeR7779 in #3550
- feat: Upgrade to Diffusers 0.17.1 by @blessedcoolant in #3545
- fix failing pytest for config module by @lstein in #3559
- image boards by @maryhipp in #3534
- Update UI To Use New Model Manager by @blessedcoolant in #3548
- fix(linux): installer script prints maximum python version usable by @skf-funzt in #3546
- Fix vae conversion by @StAlKeR7779 in #3555
- ui: api cleanup by @psychedelicious in #3572
- ui: fix initial image buttons, uploader functionality by @psychedelicious in #3576
- chore(ui): bump all packages by @psychedelicious in #3579
- Add control_mode parameter to ControlNet by @GreggHelt2 in #3535
- fix(ui): fix controlnet image size by @psychedelicious in #3585
- feat(ui): improved node parsing by @psychedelicious in #3584
- feat(ui): add dynamic prompts to t2i tab by @psychedelicious in #3588
- feat(ui): only show canvas image fallback on loading error by @psychedelicious in #3589
- Bypass failing tests by @ebr in #3593
- Configure and model install TUI tweaks by @lstein in #3519
- feat(ui): add type extraction helpers by @psychedelicious in #3597
- fix(nodes): use context for logger in param_easing by @psychedelicious in #3529
- feat(ui): use max prompts for combinatorial, iterations for non-combi… by @psychedelicious in #3600
- Feat/controlnet extras by @GreggHelt2 in #3596
- nodes: default to CPU noise by @psychedelicious in #3598
- Configuration and model installer for new model layout by @lstein in #3547
- Update 060_INSTALL_PATCHMATCH.md by @sammyf in #3591
- Apply lora by model patching by @StAlKeR7779 in #3583
- Set use-credentials on commercial deployment if authToken is set on c… by @brandonrising in #3606
- ui: fix ts perf by @psychedelicious in #3609
- Fix Typo in migrate_to_3.py by @mickr777 in #3610
- Fix duplicate model key addition when root directory is a relative path by @lstein in #3607
- Maryhipp/delete images on board by @maryhipp in #3604
- Add image board support to invokeai-node-cli by @lstein in #3594
- ui: support dark mode by @psychedelicious in #3592
- feat(ui): tweak light mode colors, buttons pop by @psychedelicious in #3612
- fix(ui): fix canvas crash by rolling back swagger-parser by @psychedelicious in #3611
- export new ColorModeButton component by @maryhipp in #3614
- fix incorrect VAE config file path during conversion of ckpts by @lstein in #3616
- feat(ui): minimum gallery size by @psychedelicious in #3617
- feat(ui): gallery minSize tweak by @psychedelicious in #3618
New Contributors
- @fat-tire made their first contribution in #2666
- @zalo made their first contribution in #2680
- @panicsteve made their first contribution in #2690
- @ExperimentalCyborg made their first contribution in #2711
- @weblate made their first contribution in #2727
- @AutoAwesome made their first contribution in #2710
- @ElrikUnderlake made their first contribution in #2888
- @patrickvonplaten made their first contribution in #2905
- @mastercaster9000 made their first contribution in #2869
- @mrwho made their first contribution in #2933
- @darkcl made their first contribution in #3024
- @felixsanz made their first contribution in #2918
- @aeyno made their first contribution in #3041
- @creachec made their first contribution in #3084
- @teerl made their first contribution in #3129
- @cmsj made their first contribution in #3141
- @c67e708d made their first contribution in #3147
- @AbdBarho made their first contribution in #3159
- @nicholaskoerfer made their first contribution in #3190
- @TimCabbage made their first contribution in #3219
- @EternalLeo made their first contribution in #3225
- @AldeRoberge made their first contribution in #3231
- @aluhrs13 made their first contribution in #3284
- @stevemar made their first contribution in #3349
- @KernelGhost made their first contribution in #3439
- @GreggHelt2 made their first contribution in #3405
- @DrGunnarMallon made their first contribution in #3553
- @skf-funzt made their first contribution in #3546
- @sammyf made their first contribution in #3591
- @brandonrising made their first contribution in #3606
Full Changelog: v2.3.0...v3.0.0+a3