Commit Graph

5375 Commits

Author SHA1 Message Date
psychedelicious
b38080336d tidy(mm): remove ONNX from AnyModelConfig 2024-02-29 13:29:00 -05:00
psychedelicious
45546fdcea tidy(ui): clean up unused code 1
- Only export when necessary
- Remove totally usused functions, variables, state, etc
- Remove unused packages
2024-02-29 13:29:00 -05:00
psychedelicious
5e83fc8ac7 feat(ui): add knip + minimal config
https://knip.dev/

Replaces `unimported`
2024-02-29 13:29:00 -05:00
psychedelicious
04024fe479 fix(ui): fix missing component import 2024-02-29 13:29:00 -05:00
blessedcoolant
0722eb132d ui: split the canvas mask blur and edge size setting 2024-02-29 13:29:00 -05:00
Jennifer Player
120988b5f3 added add all button to scan models 2024-02-29 13:29:00 -05:00
psychedelicious
76e21fe607 feat(ui): create metadata types for control adapters
These are the same as the existing control adapter types, but the model field is non-nullable, simplifying handling of these objects.
2024-02-29 13:29:00 -05:00
psychedelicious
769ddc0024 fix(ui): model metadata handlers use model identifiers, not configs
Model metadata includes the main model, VAE and refiner model.

These used full model configs, as returned by the server, as their metadata type.

LoRA and control adapter metadata only use the metadata identifier.

This created a difference in handling. After parsing a model/vae/refiner, we have its name and can display it. But for LoRAs and control adapters, we only have the model key and must query for the full model config to get the name.

This change makes main model/vae/refiner metadata only have the model key, like LoRAs and control adapters.

The render function is now async so fetching can occur within it. All metadata fields with models now only contain the identifier, and fetch the model name to render their values.
2024-02-29 13:29:00 -05:00
psychedelicious
4833f9c736 fix(ui): CanvasPasteBack types 2024-02-29 13:29:00 -05:00
psychedelicious
68f9ce5e2d tidy(ui): remove unused metadata schemas 2024-02-29 13:29:00 -05:00
psychedelicious
ac200ab79d feat(nodes): update LoRAMetadataItem model
LoRA model now at under `model` not `lora.
2024-02-29 13:29:00 -05:00
psychedelicious
38cf809cb0 tidy(ui): tidy model identifier logic
- Move some files around
- Use util to extract key and base from model config
2024-02-29 13:29:00 -05:00
psychedelicious
d069f21d97 feat(ui): optimize model query caching
When we retrieve a list of models, upsert that data into the `getModelConfig` and `getModelConfigByAttrs` query caches.

With this change, calls to those two queries are almost always going to be free, because their caches will already have all models in them. The exception is queries for models that no longer exist.
2024-02-29 13:29:00 -05:00
psychedelicious
7d23120c2e fix(ui): fix lora metadata item type 2024-02-29 13:29:00 -05:00
psychedelicious
3b9b11e94b fix(ui): fix node type 2024-02-29 13:29:00 -05:00
psychedelicious
cd0699ada4 feat(ui): add transformation to width/height parameter schemas to round to multiple of 8
This allows image dimensions that are not multiples of 8 to still be recalled with best effort.
2024-02-29 13:29:00 -05:00
psychedelicious
8938765fb6 fix(ui): fix lora metadata rendering 2024-02-29 13:29:00 -05:00
psychedelicious
5b1fe4511e fix(ui): fix type issues related to change in LoRA type 2024-02-29 13:29:00 -05:00
psychedelicious
6a2ae5caa4 feat(ui): migrate all metadata recall logic to new system 2024-02-29 13:29:00 -05:00
psychedelicious
0cb2579109 fix(ui): use id for component key in control adapter components 2024-02-29 13:29:00 -05:00
psychedelicious
c6a95eb9ac feat(ui): no JSX in metadata handlers 2024-02-29 13:29:00 -05:00
psychedelicious
caa05864f8 feat(ui): refactor metadata handling (again)
Add concepts for metadata handlers. Handlers include parsers, recallers and validators for different metadata types:
- Parsers parse a raw metadata object of any shape to a structured object.
- Recallers load the parsed metadata into state. Recallers are optional, as some metadata types don't need to be loaded into state.
- Validators provide an additional layer of validation before recalling the metadata. This is needed because a metadata object may be valid, but not able to be recalled due to some other requirement, like base model compatibility. Validators are optional.

Sometimes metadata is not a single object but a list of items - like LoRAs. Metadata handlers may implement an optional set of "item" handlers which operate on individual items in the list.

Parsers and validators are async to allow fetching additional data, like a model config. Recallers are synchronous.

The these handlers are composed into a public API, exported as a `handlers` object. Besides the handlers functions, a metadata handler set includes:
- A function to get the label of the metadata type.
- An optional function to render the value of the metadata type.
- An optional function to render the _item_ value of the metadata type.
2024-02-29 13:29:00 -05:00
psychedelicious
f24b3c64d3 build(ui): do not fail build on eslint error in dev mode 2024-02-29 13:29:00 -05:00
psychedelicious
70d7b1c756 chore(ui): typegen 2024-02-29 13:29:00 -05:00
psychedelicious
92abcaedcf feat(api): add MM get_by_attrs route
Gets the first model that matches the given name, base and type. Raises 404 if there isn't one.

This will be used for backwards compatibility with old metadata.
2024-02-29 13:29:00 -05:00
Mary Hipp
2eb9d66ef0 undo 2024-02-29 13:29:00 -05:00
Mary Hipp
d893cb954a fix literal strings in MM UI 2024-02-29 13:29:00 -05:00
Mary Hipp
9a6c2089bf fix TI appearing as key in prompt 2024-02-29 13:29:00 -05:00
Mary Hipp
52d0f9c52f fix base model grouping in combobox 2024-02-29 13:29:00 -05:00
psychedelicious
638322e89f fix(mm): fix ModelCacheBase method name 2024-02-29 13:29:00 -05:00
psychedelicious
bc7572797c chore: ruff 2024-02-29 13:29:00 -05:00
Lincoln Stein
2463710497 recover gracefuly from GPU out of memory errors (next version) 2024-02-29 13:29:00 -05:00
Lincoln Stein
3be3bba007 clear out VRAM when an OOM occurs 2024-02-29 13:29:00 -05:00
psychedelicious
8dc33e60a7 feat(ui): bulk download click to download 2024-02-29 13:29:00 -05:00
psychedelicious
bde752bc02 fix(ui): fix node types for canvas graphs 2024-02-29 13:29:00 -05:00
psychedelicious
8f7b1f5068 chore(ui): typegen 2024-02-29 13:29:00 -05:00
psychedelicious
38afb918ad tidy(nodes): rename canvas paste back 2024-02-29 13:29:00 -05:00
blessedcoolant
5ca01bfad4 fix: outpaint result not getting pasted back correctly 2024-02-29 13:29:00 -05:00
blessedcoolant
c9f73c3340 fix: lint errors 2024-02-29 13:29:00 -05:00
blessedcoolant
6df606ac2a canvas: improve paste back (or try to) 2024-02-29 13:29:00 -05:00
blessedcoolant
ba3cf1d873 wip(ui): Replace 2 Layer Coherence pass with Gradient Mask 2024-02-29 13:28:58 -05:00
psychedelicious
1e52a1507b chore: ruff 2024-02-29 13:28:22 -05:00
psychedelicious
d52c956441 fix(ui): fix merge issue 2024-02-29 13:28:22 -05:00
psychedelicious
3130b3db64 fix(ui): use new scan_folder response instead of hook to determine if models are installed already 2024-02-29 13:28:22 -05:00
psychedelicious
8848443eff chore(ui): typegen 2024-02-29 13:28:22 -05:00
psychedelicious
acedc6d127 feat(mm): add logic to scan_folder route to check if a model is already installed
This was done in the frontend before but it's something the backend should handle.

The logic compares the found model paths to the path and source of all installed models. It excludes core models.
2024-02-29 13:28:22 -05:00
psychedelicious
6d78276049 chore(ui): lint 2024-02-29 13:28:22 -05:00
psychedelicious
858300030c build(ui): restore i18n eslint rule 2024-02-29 13:28:22 -05:00
psychedelicious
bcc02c5902 chore: ruff 2024-02-29 13:28:22 -05:00
psychedelicious
92f42dfb2a fix(ui): fix metadata route 2024-02-29 13:28:22 -05:00