InvokeAI Version 3.0.0
InvokeAI is a leading creative engine built to empower professionals and enthusiasts alike. Generate and create stunning visual media using the latest AI-driven technologies. InvokeAI offers an industry leading Web Interface, interactive Command Line Interface, and also serves as the foundation for multiple commercial products.
InvokeAI version 3.0.0 represents a major advance in functionality and ease compared with the last official release, 2.3.5.
- What's New
- Installation and Upgrading
- Getting Started with SDXL
- Recent Bug Fixes
- What's Missing
- Getting Help
- Contributing
- Detailed Change Log
Please use the 3.0.0 release discussion thread, for comments on this release candidate including feature requests, enhancement suggestions and other non-critical issues. Report bugs to InvokeAI Issues. For interactive support with the development team, contributors and user community, please join the InvokeAI Discord Server.
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.
- Preliminary support for Stable Diffusion XL the latest iteration of Stability AI's image generation models.
- 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 Nodes Editor that lets you design and execute complex image generation operations using a point-and-click interface.
- Macintosh users can now load models at half-precision (float16) in order to reduce the amount of RAM.
- Advanced users can choose earlier CLIP layers during generation to produce a larger variety of images.
- Long prompt support (>77 tokens).
- Memory and speed improvements.
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.
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.0rc1.zip
Upgrading in place
All users can upgrade from the 3.0 beta releases 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]
- Select option [1] to upgrade to the latest version.
- 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.0rc1.zip" --use-pep517 --upgrade
(Replace v3.0.0rc1
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 and configuration files will be backed up.)
Upgrading using pip
Once 3.0.0 is released, 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.0rc1
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 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 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 as soon as SDXL 1.0 is officially released.
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. To do this, run the InvokeAI launcher script, activate the InvokeAI virtual environment with option [8], and type the command huggingface-cli login
. Paste in your access token from HuggingFace and hit return (the token will not be echoed to the screen).
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 you will need to activate the Node Editor, an advanced feature of InvokeAI. Go to the Settings (gear) icon on the upper right of the Web interface, and activate "Enable Nodes Editor". After reloading the page, an inverted "Y" will appear on the left-hand panel. This is the Node Editor.
Enter the Node Editor and click the Upload button to upload either the SDXL base-only or SDXL base+refiner pipelines. This will load and display a flow diagram showing the (many complex) 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 eventually be generated and added to the image gallery. Unlike standard rendering, intermediate images are not (yet) displayed during rendering.
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 6-8 GB of VRAM in order to render 1024x1024 images and a minimum of 16 GB of RAM. For best performance, we recommend the following settings in invokeai.yaml
:
precision: float16
max_cache_size: 12.0
max_vram_cache_size: 0.0
Recent bug fixes
- The node editor has been made an advanced option, and can be made visible by activating it in the Settings dialogue.
- Upload to the unified canvas is working again.
- Crashes on platforms using CPU rendering due to mixed half and full-precision arithmetic have been fixed.
- 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
What's Missing in v3.0.0
Relative to version 2.3.5, 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.
- No easy migration path to import 2.3-generated images into the 3.0 image gallery; users will have to upload to the new gallery interface manually.
- 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.
- Only diffusers-style ControlNet files (with a HuggingFace repository ID) can be applied.
The following 2.3 features are not available:
- Variation generation (slated for addition in v3.1)
- Perlin Noise (not widely used; permanently removed)
- Noise Threshold (only available through the Node Editor, slated for addition in v3.1)
- Symmetry (not widely used; permanently removed)
- Seamless tiling (may be restored in v3.1)
- Face restoration (obsoleted by newer models; permanently removed)
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.
Contributing to InvokeAI
If you are looking for a stable version of InvokeAI, either use this release or install from the v2.3
source code 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.
Change Log
- 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
- loading state for gallery and model list by @maryhipp in #3615
- Fix Invoke Progress Bar by @mickr777 in #3626
- ui: batches by @psychedelicious in #3603
- feat(ui): hide batch ui pending logic implementation by @psychedelicious in #3629
- Add missing k-* legacy sampler names to init file migrate list by @lstein in #3625
- Make unit tests work again by @lstein in #3575
- Add runtime root path to relative vaes and other submodels by @lstein in #3631
- Quash memory leak when compel invocation called by @lstein in #3633
- (wip) Model Manager 3.0 UI by @blessedcoolant in #3586
- ui: loras by @psychedelicious in #3638
- ui: render perf fixes by @psychedelicious in #3642
- feat: Add Lora to Canvas by @blessedcoolant in #3643
- fix: Change Lora weight bounds to -1 to 2 by @blessedcoolant in #3645
- Expose max_cache_size in config by @ebr in #3640
- Fix model detection by @StAlKeR7779 in #3646
- feat(ui): improve accordion ux by @psychedelicious in #3647
- fix(ui): deleting image selects first image by @psychedelicious in #3648
- fix(ui): fix dnd on nodes by @psychedelicious in #3649
- Detect invalid model names when migrating 2.3->3.0 by @lstein in #3623
- Fix clip path in migrate script by @StAlKeR7779 in #3651
- fix(ui): fix prompt resize & style resizer by @psychedelicious in #3652
- Fix loading diffusers ti by @StAlKeR7779 in #3661
- Fix ckpt scanning on conversion by @StAlKeR7779 in #3653
- close modal when user clicks cancel by @maryhipp in #3656
- build: remove web ui dist from gitignore by @psychedelicious in #3650
- Remove hardcoded cuda device in model manager init by @lstein in #3624
- Put tokenizer and text encoder in same clip-vit-large-patch14 by @lstein in #3662
- feat: Add Embedding Picker to Linear UI by @blessedcoolant in #3654
- only show delete icon if big enough by @maryhipp in #3657
- LoRA model loading fixes by @lstein in #3663
- expose max_cache_size to invokeai-configure interface by @lstein in #3664
- Improved loading for UI by @maryhipp in #3667
- [Docs] ELI5 Tutorial For Invocations by @blessedcoolant in #3524
- Add REACT API routes for model manager by @lstein in #3639
- feat: Add Clip Skip by @StAlKeR7779 in #3666
- feat(ui): update
openapi-fetch
; fix upload issue by @psychedelicious in #3674 - fix: Adjust clip skip layer count based on model by @blessedcoolant in #3675
- UI model compatibiltiy by @maryhipp in #3672
- feat(ui): improve embed button styles by @psychedelicious in #3676
- add ability to disable lora, ti, dynamic prompts, vae selection by @maryhipp in #3677
- prop to hide toggle for advanced settings by @maryhipp in #3681
- Branch for 3.0alpha release installation tweaks and bug fixes by @lstein in #3608
- Make the update script work on Windows by @lstein in #3622
- fixes ImportError described in #3658. by @Zadagu in #3668
- Mac MPS FP16 fixes by @gogurtenjoyer in #3641
- get uploads working again by @maryhipp in #3679
- Revert "get uploads working again" by @lstein in #3686
- ui: add cpu noise by @psychedelicious in #3688
- fix(ui): fix readonly inputs by @psychedelicious in #3689
- fix(ui): do not diable show progress toggle while generating by @psychedelicious in #3690
- fix(ui): fix inconsistent shift modifier capture by @psychedelicious in #3691
- gallery tweaks by @maryhipp in #3682
- feat: Add App Version to UI by @blessedcoolant in #3692
- fix(ui): fix tab translations by @psychedelicious in #3698
- fix(ui): fix selection on dropdowns by @psychedelicious in #3697
- Version of _find_root() that works in conda environment by @lstein in #3696
- feat: Upgrade Diffusers to 0.18.1 by @blessedcoolant in #3699
- fix: Rearrange Model Select to take full width by @blessedcoolant in #3701
- add load more images to the right arrow by @mickr777 in #3694
- fix(ui): escape on embedding popup closes it by @psychedelicious in #3703
- feat(ui): add progress image node by @psychedelicious in #3704
- fix(api): fix for borked windows mimetypes registry by @psychedelicious in #3705
- Add Cancel Button button to nodes tab by @mickr777 in #3706
- Updating Docs by @hipsterusername in #3456
- ui, db: rand fixes by @psychedelicious in #3715
- feat: Add Aspect Ratio by @blessedcoolant in #3709
- Maryhipp/disable multiselect by @maryhipp in #3722
- disable hotkey for lightbox if lightbox is disabled by @maryhipp in #3725
- always enable these things on txt2img tab by @maryhipp in #3726
- Branch for invokeai 3.0-beta bugfixes by @lstein in #3683
- Fix the test of the config system by @lstein in #3730
- Node Editor: QoL Fixes by @blessedcoolant in #3734
- installer installs torchimetrics 0.11.4 by @lstein in #3733
- Less naive model detection by @StAlKeR7779 in #3685
- disable features that are not supported yet or no longer supported by @maryhipp in #3739
- Container build fixes + docker-compose by @ebr in #3587
- feat: Save and Loads Nodes From Disk by @blessedcoolant in #3724
- feat: Add Aspect Ratio To Canvas Bounding Box by @blessedcoolant in #3717
- output stringified error for session and invocation errors by @maryhipp in #3741
- feat: core metadata & graph in viewer by @psychedelicious in #3728
- Add Clear nodes Button by @mickr777 in #3747
- fix(ui): fix inpaint invalid model error by @psychedelicious in #3750
- fix(ui): check for metadata accumulator before connecting to it by @psychedelicious in #3751
- fix(ui): fix lora name disappearing by @psychedelicious in #3753
- fix(ui): fix node parsing failing by @psychedelicious in #3754
- fix(ui): fix nodes crash when adding model loader by @psychedelicious in #3755
- Fix clear nodes with psychedelicious Requests by @mickr777 in #3749
- Fix Inpainting Issues by @blessedcoolant in #3744
- Fix wrong conditioning used by @StAlKeR7779 in #3595
- detect patchmatch by @maryhipp in #3740
- fix: model_name reference in Model Manager by @blessedcoolant in #3756
- ui: gallery enhancements by @psychedelicious in #3752
- ui: model-related fixes by @psychedelicious in #3761
- fix(nodes): make ResizeLatents w/h optional by @psychedelicious in #3762
- feat(api): set max-age for images by @psychedelicious in #3711
- Model Manager 3.0 UI by @blessedcoolant in #3735
- Allow ImageResizeInvocation w/h to take inputs from other nodes by @JPPhoto in #3765
- Create NODES.md by @ymgenesis in #3729
- Pad conditionings using zeros and encoder_attention_mask by @StAlKeR7779 in #3772
- fix(ui): fix mouse interactions by @psychedelicious in #3764
- fix(ui): fix crash on LoRA remove / weight change by @psychedelicious in #3774
- restore scrollbar by @maryhipp in #3767
- Model manager route enhancements by @lstein in #3768
- Rewrite controlnet to new model manager by @StAlKeR7779 in #3665
- fix: Minor UI tweak to Control Net enable button by @blessedcoolant in #3783
- Nodes + Backend Owners by @hipsterusername in #3782
- add fp16 support to controlnet models by @lstein in #3785
- migrate script now initializes destination root if needed by @lstein in #3784
- add documentation on the configuration system by @lstein in #3787
- Setup textual inversion training with new model manager by @brandonrising in #3775
- Update NODES.md by @psychedelicious in #3788
- add renaming capabilities to model update API route by @lstein in #3793
- Updating installation instructions to include Node.JS by @lillekemiker in #3795
- Add defaults for controlnet/textual inversion/realesrgan by @lstein in #3773
- Fix error with long prompts when controlnet used by @StAlKeR7779 in #3792
- Added class PromptsFromFileInvocation to prompt.py. by @skunkworxdark in #3781
- Allow bin extension to detect diffusers-ti provided as file by @StAlKeR7779 in #3796
- Create pull request template for the project by @Millu in #3798
- ui: improve context menu by @psychedelicious in #3799
- model installer -- Prevent crashes on malformed models by @lstein in #3619
- Fix/long prompts by @StAlKeR7779 in #3806
- docs: add vscode setup instructions by @psychedelicious in #3807
- Hide legend button Option 2 by @mickr777 in #3797
- feat: model events by @psychedelicious in #3786
- Model Manager UI 3.0 by @blessedcoolant in #3778
- Update LOCAL_DEVELOPMENT.md by @psychedelicious in #3808
- fix: Model Manager scan Auto Add not detecting checkpoint correctly by @blessedcoolant in #3810
- Support SDXL models by @lstein in #3714
- Add Toggle for Minimap and Tooltips by @mickr777 in #3809
- feat(ui): hide sdxl from linear UI by @psychedelicious in #3815
- 3.0 Pre-Release Polish -- Bug Fixes / Style Fixes / Misc by @blessedcoolant in #3812
- Release - invokeai 3 0 beta by @lstein in #3814
- fix(nodes): fix inpaint cond logic for new compel version by @psychedelicious in #3816
- VRAM Optimizations, sdxl on 8gb by @StAlKeR7779 in #3818
- feat: String Param Node + titles and tags for all Nodes by @blessedcoolant in #3819
- Rename clip1 to clip by @StAlKeR7779 in #3822
- Avoid crash if unable to modify the model config file by @ebr in #3824
- Cleanup vram after models offloading by @StAlKeR7779 in #3826
- add option to hide version on logo by @maryhipp in #3825
- install, nodes, ui: restore ad-hoc upscaling by @psychedelicious in #3800
- Release/invokeai 3 0 beta - mkdocs fix by @lstein in #3821
- Missing def choose_torch_device by @mickr777 in #3834
- Tweaks to Image Progress Node by @mickr777 in #3833
- [WIP] Load text_model.embeddings.position_ids outsude state_dict by @StAlKeR7779 in #3829
- Maryhipp/clear intermediates by @maryhipp in #3820
- clear canvas alongside intermediates by @maryhipp in #3837
- feat(ui): another go at gallery by @psychedelicious in #3791
- add toggle for isNodesEnabled in settings by @maryhipp in #3839
- Changing ImageToLatentsInvocation node to default to detected precision by @lillekemiker in #3838
- Beta branch containing documentation enhancements, minor bug fix by @lstein in #3831
New Contributors
- @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
- @Zadagu made their first contribution in #3668
- @ymgenesis made their first contribution in #3729
- @lillekemiker made their first contribution in #3795
- @skunkworxdark made their first contribution in #3781
- @Millu made their first contribution in #3798
Full Changelog: v2.3.5.post2...v3.0.0rc1