* fix: check all checkpoint dirs instead of only the first one for models
* fix: use get_file_from_folder_list instead of manually iterating over lists
* refactor: code cleanup
* feat: add checkbox and config to disable updating selected styles when describing an image
* i18n: add translation for checkbox label
* feat: change describe content type from Radio to CheckboxGroup, add config
* fix: cast set to list when styles contains elements
* feat: sort styles after describe
* feat: add checkbox, config and handling for saving only the final enhanced image
* feat: sort output of enhance feature
(cherry picked from commit 9d45c0e6ca)
* docs: update attributes and add add inline prompt features section to readme
* docs: update attributes to better show corresponding mutually exclusive groups
* fix: add try_parse_bool for env var strings to enable config overrides of boolean values
* fix: fallback to given value if not parseable
* feat: extend eval to all valid types
* fix: remove return type
* fix: prevent strange type conversions by providing expected type
* feat: add tests
* feat: make textboxes (incl. positive prompt) resizable again
* wip: auto-resize positive prompt on new line
dirty approach as container is hidden and 1px padding is applied for border shadow to actually work
* feat: set row height to 84, exactly matching 3 lines for positive prompt
eliminate need for JS to resize positive prompt onUiLoaded
disable intermediate results for all performacnes with restricted features
make disable_intermediate_results interactive again even if performance has restricted features
users who want to disable this option should be able to do so, even if performance will be impacted
* feat: add remove_performance_lora method
* feat: use class PerformanceLoRA instead of strings in config
* refactor: cleanup flags, use __member__ to check if enums contains key
* feat: only filter lora of selected performance instead of all performance LoRAs
* fix: disable intermediate results for all restricted performances
too fast for Gradio, which becomes a bottleneck
* refactor: rename parse_json to to_json, rename parse_string to to_string
* feat: use speed steps as default instead of hardcoded 30
* feat: add method to_steps to Performance
* refactor: remove method ordinal_suffix, not needed anymore
* feat: only filter lora of selected performance instead of all performance LoRAs
both metadata and history log
* feat: do not filter LoRAs in metadata parser but rather in metadata load action
* feat: build docker image on push to main branch
* feat: add tag "edge" for main when building the docker image
* feat: update name of build container workflow
Workaround as tool color-sketch applies changes directly to the image canvas and not the mask canvas.
Color picker is not correctly implemented in Gradio 3.41.2 => does always get displayed as separate containers and not merged with other elements
* feat: add performance loras to the end of the loras array
* fix: resolve circular dependency for unit tests
* feat: allow multiple matches for each token, optimize and extract method cleanup_prompt
* fix: update unit tests
* feat: ignore custom wildcards
* add nsfw image censoring
activatable via config, uses CompVis/stable-diffusion-safety-checker
* fix progressbar call for nsfw output
* use config to set cache dir for safety checker
* add checkbox black_out_nsfw
makes both enabling via config and checkbox possible, where config overrides the checkbox value
* fix: add missing diffusers package
* feat: extract safety checker, remove dependency to diffusers
* feat: make code compatible again after merge with main
* feat: move censor to extras, optimize safety checker file handling
* refactor: rename folder safety_checker_models to safety_checker
* feat: automatically describe image on uov image upload if prompt is empty
* feat: add argument to disable automatic uov image description
* feat: rename argument, disable by default
this prevents computers with low hardware specifications from being unnecessary blocked
* feat: update anime from animaPencilXL_v100 to animaPencilXL_v200
* feat: update animaPencilXL from 2.0.0 to 2.6.0
* feat: update animaPencilXL from 2.6.0 to 3.1.0
* feat: reduce cfg as suggested by vendor from 3.0.0
https://civitai.com/models/261336?modelVersionId=435001
"recommend to decrease CFG scale." + all examples are in CFG 6
* Revert "fix: use LF as line breaks for Docker entrypoint.sh (#2843)" (#2865)
False alarm, worked as intended before. Sorry for the fuzz.
This reverts commit d16a54edd6.
* feat: add VAE select
* feat: use different default label, add translation
* fix: do not reload model when VAE stays the same
* refactor: code cleanup
* feat: add metadata handling
* add preset selection
uses meta parsing to set presets in user session (UI elements only)
* add LoRA handling
* use default config as fallback value
* add preset refresh on "Refresh All Files" click
* add special handling for default_styles and default_aspect_ratio
* sort styles after preset change
* code cleanup
* download missing models from preset
* set default refiner to "None" in preset realistic
* use state_is_generating for preset selection change
* DRY output parameter handling
* feat: add argument --disable-preset-selection
useful for cloud provisioning to prevent model switches and keep models loaded
* feat: keep prompt when not set in preset, use more robust syntax
* fix: add default return values when preset download is disabled
https://github.com/mashb1t/Fooocus/issues/20
* feat: add translation for preset label
* refactor: unify preset loading methods in config
* refactor: code cleanup
WARNING[XFORMERS]: xFormers can't load C++/CUDA extensions. xFormers was built for:
PyTorch 2.0.1+cu118 with CUDA 1108 (you have 2.1.0+cu121)
Python 3.10.11 (you have 3.10.9)
* fix: parse width and height as int when applying metadata (#2452)
fixes an issue with A1111 metadata scheme where width and height are strings after splitting resolution
* feat: use jpeg instead of jpg, use enums instead of strings
* feat: add metadata hint to history log
* feat: add actual metadata_scheme to log instead of only boolean
* feat: add steps to log if they were overridden
* fix: pass copy of metadata
prevents LoRA file extension removal in history log caused by passing reference to meta_parser fooocus scheme
* feat: add metadata logging for images
inspired by https://github.com/MoonRide303/Fooocus-MRE
* feat: add config and checkbox for save_metadata_to_images
* feat: add argument disable_metadata
* feat: add support for A1111 metadata schema
https://github.com/AUTOMATIC1111/stable-diffusion-webui/blob/cf2772fab0af5573da775e7437e6acdca424f26e/modules/processing.py#L672
* feat: add model hash support for a1111
* feat: use resolved prompts with included expansion and styles for a1111 metadata
* fix: code cleanup and resolved prompt fixes
* feat: add config metadata_created_by
* fix: use stting isntead of quote wrap for A1111 created_by
* fix: correctlyy hide/show metadata schema on app start
* fix: do not generate hashes when arg --disable-metadata is used
* refactor: rename metadata_schema to metadata_scheme
* fix: use pnginfo "parameters" insteadf of "Comments"
see https://github.com/RupertAvery/DiffusionToolkit/issues/202 and https://github.com/AUTOMATIC1111/stable-diffusion-webui/blob/cf2772fab0af5573da775e7437e6acdca424f26e/modules/processing.py#L939
* feat: add resolved prompts to metadata
* fix: use correct default value in metadata check for created_by
* wip: add metadata mapping, reading and writing
applying data after reading currently not functional for A1111
* feat: rename metadata tab and import button label
* feat: map basic information for scheme A1111
* wip: optimize handling for metadata in Gradio calls
* feat: add enums for Performance, Steps and StepsUOV
also move MetadataSchema enum to prevent circular dependency
* fix: correctly map resolution, use empty styles for A1111
* chore: code cleanup
* feat: add A1111 prompt style detection
only detects one style as Fooocus doesn't wrap {prompt} with the whole style, but has a separate prompt string for each style
* wip: add prompt style extraction for A1111 scheme
* feat: sort styles after metadata import
* refactor: use central flag for LoRA count
* refactor: use central flag for ControlNet image count
* fix: use correct LoRA mapping, add fallback for backwards compatibility
* feat: add created_by again
* feat: add prefix "Fooocus" to version
* wip: code cleanup, update todos
* fix: use correct order to read LoRA in meta parser
* wip: code cleanup, update todos
* feat: make sha256 with length 10 default
* feat: add lora handling to A1111 scheme
* feat: override existing LoRA values when importing, would cause images to differ
* fix: correctly extract prompt style when only prompt expansion is selected
* feat: allow model / LoRA loading from subfolders
* feat: code cleanup, do not queue metadata preview on image upload
* refactor: add flag for refiner_swap_method
* feat: add metadata handling for all non-img2img parameters
* refactor: code cleanup
* chore: use str as return type in calculate_sha256
* feat: add hash cache to metadata
* chore: code cleanup
* feat: add method get_scheme to Metadata
* fix: align handling for scheme Fooocus by removing lcm lora from json parsing
* refactor: add step before parsing to set data in parser
- add constructor for MetadataSchema class
- remove showable and copyable from log output
- add functional hash cache (model hashing takes about 5 seconds, only required once per model, using hash lazy loading)
* feat: sort metadata attributes before writing to image
* feat: add translations and hint for image prompt parameters
* chore: check and remove ToDo's
* refactor: merge metadata.py into meta_parser.py
* fix: add missing refiner in A1111 parse_json
* wip: add TODO for ultiline prompt style resolution
* fix: remove sorting for A1111, change performance key position
fixes https://github.com/lllyasviel/Fooocus/pull/1940#issuecomment-1924444633
* fix: add workaround for multiline prompts
* feat: add sampler mapping
* feat: prevent config reset by renaming metadata_scheme to match config options
* chore: remove remaining todos after analysis
refiner is added when set
restoring multiline prompts has been resolved by using separate parameters "raw_prompt" and "raw_negative_prompt"
* chore: specify too broad exception types
* feat: add mapping for _gpu samplers to cpu samplers
gpu samplers are less deterministic than cpu but in general similar, see https://www.reddit.com/r/comfyui/comments/15hayzo/comment/juqcpep/
* feat: add better handling for image import with empty metadata
* fix: parse adaptive_cfg as float instead of string
* chore: loosen strict type for parse_json, fix indent
* chore: make steps enums more strict
* feat: only override steps if metadata value is not in steps enum or in steps enum and performance is not the same
* fix: handle empty strings in metadata
e.g. raw negative prompt when none is set