chainchompa
e97fd85904
added selectedStylePreset to preload presets when app loads
2024-08-27 15:33:24 -04:00
Brandon Rising
0a263fa5b1
chore: bump version to v4.2.9rc1
2024-08-27 12:09:27 -04:00
Mary Hipp
fae3836a8d
fix CLIP
2024-08-27 10:29:10 -04:00
Mary Hipp
b3d2eb4178
add translations for new model types in MM, remove clip vision from filter since its not displayed in list
2024-08-27 10:29:10 -04:00
Ryan Dick
50085b40bb
Update starter model size estimates.
2024-08-26 20:17:50 -04:00
Mary Hipp
cff382715a
default workflow: add steps to exposed fields, add more notes
2024-08-26 20:17:50 -04:00
Brandon Rising
54d54d1bf2
Run ruff
2024-08-26 20:17:50 -04:00
Mary Hipp
e84ea68282
remove prompt
2024-08-26 20:17:50 -04:00
Mary Hipp
160dd36782
update default workflow for flux
2024-08-26 20:17:50 -04:00
Brandon Rising
65bb46bcca
Rename params for flux and flux vae, add comments explaining use of the config_path in model config
2024-08-26 20:17:50 -04:00
Brandon Rising
2d185fb766
Run ruff
2024-08-26 20:17:50 -04:00
Brandon Rising
2ba9b02932
Fix type error in tsc
2024-08-26 20:17:50 -04:00
Brandon Rising
849da67cc7
Remove no longer used code in the flux denoise function
2024-08-26 20:17:50 -04:00
Brandon Rising
3ea6c9666e
Remove in progress images until we're able to make the valuable
2024-08-26 20:17:50 -04:00
Brandon Rising
cf633e4ef2
Only install starter models if not already installed
2024-08-26 20:17:50 -04:00
Ryan Dick
bbf934d980
Remove outdated TODO.
2024-08-26 20:17:50 -04:00
Ryan Dick
620f733110
ruff format
2024-08-26 20:17:50 -04:00
Ryan Dick
635d2f480d
ruff
2024-08-26 20:17:50 -04:00
Brandon Rising
70c278c810
Remove dependency on flux config files
2024-08-26 20:17:50 -04:00
Brandon Rising
56b9906e2e
Setup scaffolding for in progress images and add ability to cancel the flux node
2024-08-26 20:17:50 -04:00
Ryan Dick
a808ce81fd
Replace swish() with torch.nn.functional.silu(h). They are functionally equivalent, but in my test VAE deconding was ~8% faster after the change.
2024-08-26 20:17:50 -04:00
Ryan Dick
83f82c5ddf
Switch the CLIP-L start model to use our hosted version - which is much smaller.
2024-08-26 20:17:50 -04:00
Brandon Rising
101de8c25d
Update t5 encoder formats to accurately reflect the quantization strategy and data type
2024-08-26 20:17:50 -04:00
Ryan Dick
3339a4baf0
Downgrade revert torch version after removing optimum-qanto, and other minor version-related fixes.
2024-08-26 20:17:50 -04:00
Ryan Dick
dff4a88baa
Move quantization scripts to a scripts/ subdir.
2024-08-26 20:17:50 -04:00
Ryan Dick
a21f6c4964
Update docs for T5 quantization script.
2024-08-26 20:17:50 -04:00
Ryan Dick
97562504b7
Remove all references to optimum-quanto and downgrade diffusers.
2024-08-26 20:17:50 -04:00
Ryan Dick
75d8ac378c
Update the T5 8-bit quantized starter model to use the BnB LLM.int8() variant.
2024-08-26 20:17:50 -04:00
Ryan Dick
b9dd354e2b
Fixes to the T5XXL quantization script.
2024-08-26 20:17:50 -04:00
Ryan Dick
33c2fbd201
Add script for quantizing a T5 model.
2024-08-26 20:17:50 -04:00
Brandon Rising
5063be92bf
Switch flux to using its own conditioning field
2024-08-26 20:17:50 -04:00
Brandon Rising
1047584b3e
Only import bnb quantize file if bitsandbytes is installed
2024-08-26 20:17:50 -04:00
Brandon Rising
6764dcfdaa
Load and unload clip/t5 encoders and run inference separately in text encoding
2024-08-26 20:17:50 -04:00
Ryan Dick
a0bf20bcee
Run FLUX VAE decoding in the user's preferred dtype rather than float32. Tested, and seems to work well at float16.
2024-08-26 20:17:50 -04:00
Ryan Dick
14ab339b33
Move prepare_latent_image_patches(...) to sampling.py with all of the related FLUX inference code.
2024-08-26 20:17:50 -04:00
Ryan Dick
25c91efbb6
Rename field positive_prompt -> prompt.
2024-08-26 20:17:50 -04:00
Ryan Dick
1c1f2c6664
Add comment about incorrect T5 Tokenizer size calculation.
2024-08-26 20:17:50 -04:00
Ryan Dick
d7c22b3bf7
Tidy is_schnell detection logic.
2024-08-26 20:17:50 -04:00
Ryan Dick
185f2a395f
Make FLUX get_noise(...) consistent across devices/dtypes.
2024-08-26 20:17:50 -04:00
Ryan Dick
0c5649491e
Mark FLUX nodes as prototypes.
2024-08-26 20:17:50 -04:00
Brandon Rising
94aba5892a
Attribute black-forest-labs/flux for much of the flux code
2024-08-26 20:17:50 -04:00
maryhipp
34451e5f27
added FLUX dev to starter models
2024-08-26 20:17:50 -04:00
Brandon Rising
1f9bdd1a9a
Undo changes to the v2 dir of frontend types
2024-08-26 20:17:50 -04:00
Brandon Rising
c27d59baf7
Run ruff
2024-08-26 20:17:50 -04:00
Brandon Rising
f130ddec7c
Remove automatic install of models during flux model loader, remove no longer used import function on context
2024-08-26 20:17:50 -04:00
Ryan Dick
a0a259eef1
Fix max_seq_len field description.
2024-08-26 20:17:50 -04:00
Ryan Dick
b66f19d4d1
Add docs to the quantization scripts.
2024-08-26 20:17:50 -04:00
Ryan Dick
4105a78b83
Update load_flux_model_bnb_llm_int8.py to work with a single-file FLUX transformer checkpoint.
2024-08-26 20:17:50 -04:00
Ryan Dick
19a68afb3a
Fix bug in InvokeInt8Params that was causing it to use double the necessary VRAM.
2024-08-26 20:17:50 -04:00
maryhipp
fd68a2475b
add better workflow name
2024-08-26 20:17:50 -04:00
maryhipp
28ff7ba830
add better workflow description
2024-08-26 20:17:50 -04:00
maryhipp
5d0b248fdb
fix(worker) fix T5 type
2024-08-26 20:17:50 -04:00
maryhipp
01a4e0f6ef
update default workflow
2024-08-26 20:17:50 -04:00
Mary Hipp
91e0731506
fix schema
2024-08-26 20:17:50 -04:00
Mary Hipp
d1f904d41f
tsc and lint fix
2024-08-26 20:17:50 -04:00
Mary Hipp
269388c9f4
feat(ui): create new field for t5 encoder models in nodes
2024-08-26 20:17:50 -04:00
Mary Hipp
b8486379ce
fix(ui): pass base/type when installing models, add flux formats to MM badges
2024-08-26 20:17:50 -04:00
Mary Hipp
400eb94d3b
fix(ui): only exclude flux main models from linear UI dropdown, not model manager list
2024-08-26 20:17:50 -04:00
maryhipp
e210c96485
add FLUX schnell starter models and submodels as dependenices or adhoc download options
2024-08-26 20:17:50 -04:00
maryhipp
5f567f41f4
add case for clip embed models in probe
2024-08-26 20:17:50 -04:00
maryhipp
5fed573a29
update flux_model_loader node to take a T5 encoder from node field instead of hardcoded list, assume all models have been downloaded
2024-08-26 20:17:50 -04:00
Ryan Dick
cfac7c8189
Move requantize.py to the quatnization/ dir.
2024-08-26 20:17:50 -04:00
Ryan Dick
1787de6836
Add docs to the requantize(...) function explaining why it was copied from optimum-quanto.
2024-08-26 20:17:50 -04:00
Ryan Dick
ac96f187bd
Remove duplicate log_time(...) function.
2024-08-26 20:17:50 -04:00
Brandon Rising
72398350b4
More flux loader cleanup
2024-08-26 20:17:50 -04:00
Brandon Rising
df9445c351
Various styling and exception type updates
2024-08-26 20:17:50 -04:00
Brandon Rising
87b7a2e39b
Switch inheritance class of flux model loaders
2024-08-26 20:17:50 -04:00
Brandon Rising
f7e46622a1
Update doc string for import_local_model and remove access_token since it's only usable for local file paths
2024-08-26 20:17:50 -04:00
Ryan Dick
71f18353a9
Address minor review comments.
2024-08-26 20:17:50 -04:00
Ryan Dick
4228de707b
Rename t5Encoder -> t5_encoder.
2024-08-26 20:17:50 -04:00
Mary Hipp
b6a05629ef
add default workflow for flux t2i
2024-08-26 20:17:50 -04:00
Mary Hipp
fbaa820643
exclude flux models from main model dropdown
2024-08-26 20:17:50 -04:00
Brandon Rising
db2a2d5e38
Some cleanup of the tags and description of flux nodes
2024-08-26 20:17:50 -04:00
Brandon Rising
8ba6e6b1f8
Add t5 encoders and clip embeds to the model manager
2024-08-26 20:17:50 -04:00
Brandon Rising
57168d719b
Fix styling/lint
2024-08-26 20:17:50 -04:00
Brandon Rising
dee6d2c98e
Fix support for 8b quantized t5 encoders, update exception messages in flux loaders
2024-08-26 20:17:50 -04:00
Ryan Dick
e49105ece5
Add tqdm progress bar to FLUX denoising.
2024-08-26 20:17:50 -04:00
Ryan Dick
0c5e11f521
Fix FLUX output image clamping. And a few other minor fixes to make inference work with the full bfloat16 FLUX transformer model.
2024-08-26 20:17:50 -04:00
Brandon Rising
a63f842a13
Select dev/schnell based on state dict, use correct max seq len based on dev/schnell, and shift in inference, separate vae flux params into separate config
2024-08-26 20:17:50 -04:00
Brandon Rising
4bd7fda694
Install sub directories with folders correctly, ensure consistent dtype of tensors in flux pipeline and vae
2024-08-26 20:17:50 -04:00
Brandon Rising
81f0886d6f
Working inference node with quantized bnb nf4 checkpoint
2024-08-26 20:17:50 -04:00
Brandon Rising
2eb87f3306
Remove unused param on _run_vae_decoding in flux text to image
2024-08-26 20:17:50 -04:00
Brandon Rising
723f3ab0a9
Add nf4 bnb quantized format
2024-08-26 20:17:50 -04:00
Brandon Rising
1bd90e0fd4
Run ruff, setup initial text to image node
2024-08-26 20:17:50 -04:00
Brandon Rising
436f18ff55
Add backend functions and classes for Flux implementation, Update the way flux encoders/tokenizers are loaded for prompt encoding, Update way flux vae is loaded
2024-08-26 20:17:50 -04:00
Brandon Rising
cde9696214
Some UI cleanup, regenerate schema
2024-08-26 20:17:50 -04:00
Brandon Rising
2d9042fb93
Run Ruff
2024-08-26 20:17:50 -04:00
Brandon Rising
9ed53af520
Run Ruff
2024-08-26 20:17:50 -04:00
Brandon Rising
56fda669fd
Manage quantization of models within the loader
2024-08-26 20:17:50 -04:00
Brandon Rising
1d8545a76c
Remove changes to v1 workflow
2024-08-26 20:17:50 -04:00
Brandon Rising
5f59a828f9
Setup flux model loading in the UI
2024-08-26 20:17:50 -04:00
Ryan Dick
1fa6bddc89
WIP on moving from diffusers to FLUX
2024-08-26 20:17:50 -04:00
Ryan Dick
d3a5ca5247
More improvements for LLM.int8() - not fully tested.
2024-08-26 20:17:50 -04:00
Ryan Dick
f01f56a98e
LLM.int8() quantization is working, but still some rough edges to solve.
2024-08-26 20:17:50 -04:00
Ryan Dick
99b0f79784
Clean up NF4 implementation.
2024-08-26 20:17:50 -04:00
Ryan Dick
e1eb104345
NF4 inference working
2024-08-26 20:17:50 -04:00
Ryan Dick
5c2f95ef50
NF4 loading working... I think.
2024-08-26 20:17:50 -04:00
Ryan Dick
b63df9bab9
wip
2024-08-26 20:17:50 -04:00
Ryan Dick
a52c899c6d
Split a FluxTextEncoderInvocation out from the FluxTextToImageInvocation. This has the advantage that we benfit from automatic caching when the prompt isn't changed.
2024-08-26 20:17:50 -04:00
Ryan Dick
eeabb7ebe5
Make quantized loading fast for both T5XXL and FLUX transformer.
2024-08-26 20:17:50 -04:00
Ryan Dick
8b1cef978c
Make quantized loading fast.
2024-08-26 20:17:50 -04:00
Ryan Dick
152da482cd
WIP - experimentation
2024-08-26 20:17:50 -04:00
Ryan Dick
3cf0365a35
Make float16 inference work with FLUX on 24GB GPU.
2024-08-26 20:17:50 -04:00
Ryan Dick
5870742bb9
Add support for 8-bit quantizatino of the FLUX T5XXL text encoder.
2024-08-26 20:17:50 -04:00
Ryan Dick
01d8c62c57
Make 8-bit quantization save/reload work for the FLUX transformer. Reload is still very slow with the current optimum.quanto implementation.
2024-08-26 20:17:50 -04:00
Ryan Dick
55a242b2d6
Minor improvements to FLUX workflow.
2024-08-26 20:17:50 -04:00
Ryan Dick
45263b339f
Got FLUX schnell working with 8-bit quantization. Still lots of rough edges to clean up.
2024-08-26 20:17:50 -04:00
Ryan Dick
3319491861
Use the FluxPipeline.encode_prompt() api rather than trying to run the two text encoders separately.
2024-08-26 20:17:50 -04:00
Ryan Dick
b39031ea53
First draft of FluxTextToImageInvocation.
2024-08-26 20:17:50 -04:00
Ryan Dick
0b77511271
Update HF download logic to work for black-forest-labs/FLUX.1-schnell.
2024-08-26 20:17:50 -04:00
Ryan Dick
c99cd989c1
Update imports for compatibility with bumped diffusers version.
2024-08-26 20:17:50 -04:00
Mary Hipp
4e294f9e3e
disable export button if no non-default presets
2024-08-26 09:23:15 -04:00
Jonathan
526e0f30a0
Added support for bounding boxes in the Invocation API
...
Adding built-in bounding boxes as a core type would help developers of nodes that include bounding box support.
2024-08-26 08:03:30 +10:00
psychedelicious
231e5ec94a
chore: bump version v4.2.8post1
2024-08-23 06:55:30 +10:00
Mary Hipp
e5bb6f9693
lint fix
2024-08-23 06:46:19 +10:00
Mary Hipp
da7dee44c6
fix(ui): use empty string fallback if unable to parse prompts when creating style preset from existing image
2024-08-23 06:46:19 +10:00
psychedelicious
c451f52ea3
chore(ui): lint
2024-08-22 21:00:09 +10:00
psychedelicious
8a2c78f2e1
fix(ui): dynamic prompts not recalculating when deleting or updating a style preset
...
The root cause was the active style preset not being reset when it was deleted, or no longer present in the list of style presets.
- Add extra reducer to `stylePresetSlice` to reset the active preset if it is deleted or otherwise unavailable
- Update the dynamic prompts listener to trigger on delete/update/list of style presets
2024-08-22 21:00:09 +10:00
psychedelicious
bcc78bde9b
chore: bump version to v4.2.8
2024-08-22 21:00:09 +10:00
Васянатор
054bb6fe0a
translationBot(ui): update translation (Russian)
...
Currently translated at 100.0% (1367 of 1367 strings)
Co-authored-by: Васянатор <ilabulanov339@gmail.com>
Translate-URL: https://hosted.weblate.org/projects/invokeai/web-ui/ru/
Translation: InvokeAI/Web UI
2024-08-22 13:09:56 +10:00
Riccardo Giovanetti
4f4aa6d92e
translationBot(ui): update translation (Italian)
...
Currently translated at 98.4% (1346 of 1367 strings)
translationBot(ui): update translation (Italian)
Currently translated at 98.4% (1346 of 1367 strings)
Co-authored-by: Riccardo Giovanetti <riccardo.giovanetti@gmail.com>
Translate-URL: https://hosted.weblate.org/projects/invokeai/web-ui/it/
Translation: InvokeAI/Web UI
2024-08-22 13:09:56 +10:00
Hosted Weblate
eac51ac6f5
translationBot(ui): update translation files
...
Updated by "Cleanup translation files" hook in Weblate.
Co-authored-by: Hosted Weblate <hosted@weblate.org>
Translate-URL: https://hosted.weblate.org/projects/invokeai/web-ui/
Translation: InvokeAI/Web UI
2024-08-22 13:09:56 +10:00
psychedelicious
9f349a7c0a
fix(ui): do not constrain width of hide/show boards button
...
lets translations display fully
2024-08-22 11:36:07 +10:00
psychedelicious
918afa5b15
fix(ui): show more of current board name
2024-08-22 11:36:07 +10:00
psychedelicious
eb1113f95c
feat(ui): add translation string for "Upscale"
2024-08-22 11:36:07 +10:00
psychedelicious
4f4ba7b462
tidy(ui): clean up ActiveStylePreset markup
2024-08-21 09:06:41 +10:00
Mary Hipp
2298be0e6b
fix(ui): error handling if unable to convert image URL to blob
2024-08-21 09:06:41 +10:00
Mary Hipp
63494dfca7
remove extra slash in exports path
2024-08-21 09:06:41 +10:00
Mary Hipp
36a1d39454
fix(ui): handle badge styling when template name is long
2024-08-21 09:06:41 +10:00
Mary Hipp
a6f6d5c400
fix(ui): add loading state to button when creating or updating a style preset
2024-08-21 09:06:41 +10:00
Mary Hipp
e85f221aca
fix(ui): clear prompt template when prompts are recalled
2024-08-21 09:04:35 +10:00
Mary Hipp
d4797e37dc
fix(ui): properly unwrap delete style preset API request so that error is caught
2024-08-19 16:12:39 -04:00
Mary Hipp
3e7923d072
fix(api): allow updating of type for style preset
2024-08-19 16:12:39 -04:00
psychedelicious
a85d69ce3d
tidy(ui): getViewModeChunks.tsx -> .ts
2024-08-19 08:25:39 +10:00
psychedelicious
96db006c99
fix(ui): edge case with getViewModeChunks
2024-08-19 08:25:39 +10:00
psychedelicious
8ca57d03d8
tests(ui): add tests for getViewModeChunks
2024-08-19 08:25:39 +10:00
psychedelicious
6c404ce5f8
fix(ui): prompt template preset preview out of order
2024-08-19 08:25:39 +10:00
psychedelicious
584e07182b
fix(ui): use translations for style preset strings
2024-08-17 21:27:53 +10:00
psychedelicious
f787e9acf6
chore: bump version v4.2.8rc2
2024-08-16 21:47:06 +10:00
psychedelicious
5a24b89e54
fix(app): include style preset defaults in build
2024-08-16 21:47:06 +10:00
psychedelicious
9b482e2a4f
chore: bump version to v4.2.8rc1
2024-08-16 10:53:19 +10:00
psychedelicious
182571df4b
Merge branch 'main' into maryhipp/export-presets
2024-08-16 10:17:07 +10:00
psychedelicious
3fb4e3050c
feat(ui): focus in textarea after inserting placeholder
2024-08-16 10:14:25 +10:00
psychedelicious
39c7ec3cd9
feat(ui): per type fallbacks for templates
2024-08-16 10:11:43 +10:00
psychedelicious
26bfbdec7f
feat(ui): use buttons instead of menu for preset import/export
2024-08-16 09:58:19 +10:00
psychedelicious
7a3eaa8da9
feat(api): save file as prompt_templates.csv
2024-08-16 09:51:46 +10:00
Mary Hipp
599db7296f
export only user style presets
2024-08-15 16:07:32 -04:00
Riccardo Giovanetti
042aab4295
translationBot(ui): update translation (Italian)
...
Currently translated at 98.6% (1340 of 1359 strings)
Co-authored-by: Riccardo Giovanetti <riccardo.giovanetti@gmail.com>
Translate-URL: https://hosted.weblate.org/projects/invokeai/web-ui/it/
Translation: InvokeAI/Web UI
2024-08-15 20:44:02 +02:00
Mary Hipp
24f298283f
clean up, add context menu to import/download templates
2024-08-15 12:39:55 -04:00
Mary Hipp
68dac6349d
Merge remote-tracking branch 'origin/main' into maryhipp/export-presets
2024-08-15 11:21:56 -04:00
chainchompa
659019cfd6
Merge branch 'main' into chainchompa/preselect-workflows
2024-08-15 10:40:44 -04:00
Mary Hipp
810be3e1d4
update import directions to include JSON
2024-08-15 09:47:49 -04:00
psychedelicious
60d754d1df
feat(api): tidy style presets import logic
...
- Extract parsing into utility function
- Log import errors
- Forbid extra properties on the imported data
2024-08-15 09:47:49 -04:00
psychedelicious
bd07c86db9
feat(ui): make style preset menu trigger look like button
2024-08-15 09:47:49 -04:00
psychedelicious
bcbf8b6bd8
feat(ui): revert to using {prompt}
for prompt template placeholder
2024-08-15 09:47:49 -04:00
psychedelicious
356661459b
feat(api): support JSON for preset imports
...
This allows us to support Fooocus format presets.
2024-08-15 09:47:49 -04:00
psychedelicious
deb917825e
feat(api): use pydantic validation during style preset import
...
- Enforce name is present and not an empty string
- Provide empty string as default for positive and negative prompt
- Add `positive_prompt` as validation alias for `prompt` field
- Strip whitespace automatically
- Create `TypeAdapter` to validate the whole list in one go
2024-08-15 09:47:49 -04:00
psychedelicious
15415c6d85
feat(ui): use dropzone for style preset upload
...
Easier to accept multiple file types and supper drag and drop in the future.
2024-08-15 09:47:49 -04:00
Mary Hipp
76b0380b5f
feat(ui): create component to upload CSV of style presets to import
2024-08-15 09:47:49 -04:00
Mary Hipp
2d58754789
feat(api): add endpoint to take a CSV, parse it, validate it, and create many style preset entries
2024-08-15 09:47:49 -04:00
chainchompa
9cdf1f599c
Merge branch 'main' into chainchompa/preselect-workflows
2024-08-15 09:25:19 -04:00
chainchompa
268be97ba0
remove ref, make options optional for useGetLoadWorkflow
2024-08-15 09:18:41 -04:00
Mary Hipp
a9014673a0
wip export
2024-08-15 09:00:11 -04:00
Phrixus2023
54a5c4e482
translationBot(ui): update translation (Chinese (Simplified))
...
Currently translated at 98.1% (1296 of 1320 strings)
Co-authored-by: Phrixus2023 <920414016@qq.com>
Translate-URL: https://hosted.weblate.org/projects/invokeai/web-ui/zh_Hans/
Translation: InvokeAI/Web UI
2024-08-15 00:46:01 +02:00
Riccardo Giovanetti
5e09a244e3
translationBot(ui): update translation (Italian)
...
Currently translated at 98.5% (1336 of 1355 strings)
translationBot(ui): update translation (Italian)
Currently translated at 98.5% (1302 of 1321 strings)
translationBot(ui): update translation (Italian)
Currently translated at 98.6% (1302 of 1320 strings)
Co-authored-by: Riccardo Giovanetti <riccardo.giovanetti@gmail.com>
Translate-URL: https://hosted.weblate.org/projects/invokeai/web-ui/it/
Translation: InvokeAI/Web UI
2024-08-15 00:46:01 +02:00
chainchompa
88648dca1a
change selectedWorkflow to selectedWorkflowId
2024-08-14 11:22:37 -04:00
chainchompa
8840df2b00
Merge branch 'main' into chainchompa/preselect-workflows
2024-08-14 09:02:12 -04:00
chainchompa
af159acbdf
cleanup
2024-08-14 08:58:38 -04:00
chainchompa
471719bbbe
add base prop for selectedWorkflow to allow loading a workflow on launch
2024-08-14 08:47:02 -04:00
psychedelicious
9938f12ef0
Merge branch 'main' into maryhipp/style-presets
2024-08-14 12:33:30 +10:00
psychedelicious
982c266073
tidy: remove extra characters in prompt templates
2024-08-14 12:31:57 +10:00
psychedelicious
5c37391883
fix(ui): do not show [prompt]
in preset preview
2024-08-14 12:29:05 +10:00
psychedelicious
ddeafc6833
fix(ui): minimize layout shift when overlaying preset prompt preview
2024-08-14 12:24:57 +10:00
psychedelicious
41b2d5d013
fix(ui): prompt preview not working preset starts with [prompt]
2024-08-14 12:21:38 +10:00
psychedelicious
29d6f48901
fix(ui): prompt shows thru prompt label text
2024-08-14 12:01:49 +10:00
psychedelicious
d5c9f4e47f
chore(ui): revert framer-motion upgrade
...
`framer-motion` 11 breaks a lot of stuff in profoundly unintuitive ways, holy crap. UI lib rolled back its dep, pulling in latest version of that
2024-08-14 06:12:00 +10:00
psychedelicious
24d73387d8
build(ui): fix chakra deps
...
We had multiple versions of @emotion/react, stemming from an extraneous dependency on @chakra-ui/react. Removed the extraneosu dep
2024-08-14 06:12:00 +10:00
Mary Hipp
e0d3927265
feat: add flag for allowPrivateStylePresets that shows a type field when creating a style preset
2024-08-13 14:08:54 -04:00
Mary Hipp
e5f7c2a9b7
add type safety / validation to form data payloads and allow type to be passed through api
2024-08-13 13:00:31 -04:00
Mary Hipp
b0760710d5
add the rest of default style presets, update image service to return default images correctly by name, add tooltip popover to images in UI
2024-08-13 11:33:15 -04:00
Mary Hipp
764accc921
update config docstring
2024-08-12 15:17:40 -04:00
Mary Hipp
6a01fce9c1
fix payloads for stringified data
2024-08-12 15:16:22 -04:00
Mary Hipp
9c732ac3b1
Merge remote-tracking branch 'origin/main' into maryhipp/style-presets
2024-08-12 14:53:45 -04:00
Mary Hipp
b70891c661
update descriptoin of placeholder in modal
2024-08-12 13:37:04 -04:00
Mary Hipp
4dbf851741
ui: add labels to prompt boxes
2024-08-12 13:33:39 -04:00
Mary Hipp
6c927a9fd4
move mdoal state into nanostore
2024-08-12 12:46:02 -04:00
Mary Hipp
096f001634
ui: add ability to copy template
2024-08-12 12:32:31 -04:00
Mary Hipp
4837e578b2
api: update dir path for style preset images, update payload for create/update formdata
2024-08-12 12:00:14 -04:00
Mary Hipp
1e547ef912
UI more pr feedback
2024-08-12 11:59:25 -04:00
psychedelicious
f6b8970bd1
fix(app): create reference to events task to prevent accidental GC
...
This wasn't a problem, but it's advised in the official docs so I've done it.
2024-08-12 07:49:58 +10:00
psychedelicious
29325a7214
fix(app): use asyncio queue and existing event loop for events
...
Around the time we (I) implemented pydantic events, I noticed a short pause between progress images every 4 or 5 steps when generating with SDXL. It didn't happen with SD1.5, but I did notice that with SD1.5, we'd get 4 or 5 progress events simultaneously. I'd expect one event every ~25ms, matching my it/s with SD1.5. Mysterious!
Digging in, I found an issue is related to our use of a synchronous queue for events. When the event queue is empty, we must call `asyncio.sleep` before checking again. We were sleeping for 100ms.
Said another way, every time we clear the event queue, we have to wait 100ms before another event can be dispatched, even if it is put on the queue immediately after we start waiting. In practice, this means our events get buffered into batches, dispatched once every 100ms.
This explains why I was getting batches of 4 or 5 SD1.5 progress events at once, but not the intermittent SDXL delay.
But this 100ms wait has another effect when the events are put on the queue in intervals that don't perfectly line up with the 100ms wait. This is most noticeable when the time between events is >100ms, and can add up to 100ms delay before the event is dispatched.
For example, say the queue is empty and we start a 100ms wait. Then, immediately after - like 0.01ms later - we push an event on to the queue. We still need to wait another 99.9ms before that event will be dispatched. That's the SDXL delay.
The easy fix is to reduce the sleep to something like 0.01 seconds, but this feels kinda dirty. Can't we just wait on the queue and dispatch every event immediately? Not with the normal synchronous queue - but we can with `asyncio.Queue`.
I switched the events queue to use `asyncio.Queue` (as seen in this commit), which lets us asynchronous wait on the queue in a loop.
Unfortunately, I ran into another issue - events now felt like their timing was inconsistent, but in a different way than with the 100ms sleep. The time between pushing events on the queue and dispatching them was not consistently ~0ms as I'd expect - it was highly variable from ~0ms up to ~100ms.
This is resolved by passing the asyncio loop directly into the events service and using its methods to create the task and interact with the queue. I don't fully understand why this resolved the issue, because either way we are interacting with the same event loop (as shown by `asyncio.get_running_loop()`). I suppose there's some scheduling magic happening.
2024-08-12 07:49:58 +10:00
psychedelicious
8ecf72838d
fix(api): image downloads with correct filename
...
Closes #6730
2024-08-10 09:53:56 -04:00
psychedelicious
c3ab8a6aa8
chore(ui): bump rest of deps
2024-08-10 07:45:23 -04:00
psychedelicious
1931aa3e70
chore(ui): typegen
2024-08-10 07:45:23 -04:00
psychedelicious
d3d8055055
feat(ui): update typegen script
2024-08-10 07:45:23 -04:00
psychedelicious
476b0a0403
chore(ui): bump openapi-typescript
2024-08-10 07:45:23 -04:00
psychedelicious
f66584713c
fix(api): sort OpenAPI schema properties for InvocationOutputMap
...
This makes the schema output deterministic!
2024-08-10 07:45:23 -04:00
psychedelicious
33624fc2fa
fix(api): duplicate operation id for get_image_full
...
There's a FastAPI bug that results in the OpenAPI spec outputting the same operation id for each operation when specifying multiple HTTP methods.
- Discussion: https://github.com/tiangolo/fastapi/discussions/8449
- Pending PR to fix: https://github.com/tiangolo/fastapi/pull/10694
In our case, we have a `get_image_full` endpoint that handles GET and HEAD.
This results in an invalid OpenAPI schema. A workaround is to use two route decorators for the operation handler. This works as expected - HEAD requests get the header, and GET requests get the resource. And the OpenAPI schema is valid.
2024-08-10 07:45:23 -04:00
Mary Hipp
97553a7de2
API/DB updates per PR feedback
2024-08-09 16:27:37 -04:00
Mary Hipp
12ba15bfa9
UI updates per PR feedback
2024-08-09 16:00:13 -04:00