Commit Graph

5420 Commits

Author SHA1 Message Date
Jennifer Player
32b8478974 added add all button to scan models 2024-03-01 10:42:33 +11:00
psychedelicious
d23f2de9d7 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-03-01 10:42:33 +11:00
psychedelicious
9abfb02bf0 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-03-01 10:42:33 +11:00
psychedelicious
7b4ef5926d fix(ui): CanvasPasteBack types 2024-03-01 10:42:33 +11:00
psychedelicious
6c5be9e89c tidy(ui): remove unused metadata schemas 2024-03-01 10:42:33 +11:00
psychedelicious
80697a71de feat(nodes): update LoRAMetadataItem model
LoRA model now at under `model` not `lora.
2024-03-01 10:42:33 +11:00
psychedelicious
a253047d8e tidy(ui): tidy model identifier logic
- Move some files around
- Use util to extract key and base from model config
2024-03-01 10:42:33 +11:00
psychedelicious
7176c5d9d6 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-03-01 10:42:33 +11:00
psychedelicious
0b54bfb7c5 fix(ui): fix lora metadata item type 2024-03-01 10:42:33 +11:00
psychedelicious
24daacecf2 fix(ui): fix node type 2024-03-01 10:42:33 +11:00
psychedelicious
7326c78ab5 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-03-01 10:42:33 +11:00
psychedelicious
04545e792c fix(ui): fix lora metadata rendering 2024-03-01 10:42:33 +11:00
psychedelicious
e6de915c34 fix(ui): fix type issues related to change in LoRA type 2024-03-01 10:42:33 +11:00
psychedelicious
71ceab9094 feat(ui): migrate all metadata recall logic to new system 2024-03-01 10:42:33 +11:00
psychedelicious
ff00ed8e80 fix(ui): use id for component key in control adapter components 2024-03-01 10:42:33 +11:00
psychedelicious
ce3f9037cd feat(ui): no JSX in metadata handlers 2024-03-01 10:42:33 +11:00
psychedelicious
d1f4cde8c7 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-03-01 10:42:33 +11:00
psychedelicious
90327cb521 build(ui): do not fail build on eslint error in dev mode 2024-03-01 10:42:33 +11:00
psychedelicious
4d5458648b chore(ui): typegen 2024-03-01 10:42:33 +11:00
psychedelicious
8d8f1abd50 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-03-01 10:42:33 +11:00
Mary Hipp
e20a506e40 undo 2024-03-01 10:42:33 +11:00
Mary Hipp
77b8eed51b fix literal strings in MM UI 2024-03-01 10:42:33 +11:00
Mary Hipp
c954cd4c8d fix TI appearing as key in prompt 2024-03-01 10:42:33 +11:00
Mary Hipp
630d3615ca fix base model grouping in combobox 2024-03-01 10:42:33 +11:00
psychedelicious
c80c0f0fb9 fix(mm): fix ModelCacheBase method name 2024-03-01 10:42:33 +11:00
psychedelicious
37d66488c5 chore: ruff 2024-03-01 10:42:33 +11:00
Lincoln Stein
371e3cc260 recover gracefuly from GPU out of memory errors (next version) 2024-03-01 10:42:33 +11:00
Lincoln Stein
d22738723d clear out VRAM when an OOM occurs 2024-03-01 10:42:33 +11:00
psychedelicious
fbd9ffdc5a feat(ui): bulk download click to download 2024-03-01 10:42:33 +11:00
psychedelicious
04c060a89d fix(ui): fix node types for canvas graphs 2024-03-01 10:42:33 +11:00
psychedelicious
6f591b324b chore(ui): typegen 2024-03-01 10:42:33 +11:00
psychedelicious
82249cc634 tidy(nodes): rename canvas paste back 2024-03-01 10:42:33 +11:00
blessedcoolant
cc82ce820a fix: outpaint result not getting pasted back correctly 2024-03-01 10:42:33 +11:00
blessedcoolant
8e1fbd6ed1 fix: lint errors 2024-03-01 10:42:33 +11:00
blessedcoolant
68d79c002d canvas: improve paste back (or try to) 2024-03-01 10:42:33 +11:00
blessedcoolant
8f6c2a8b92 wip(ui): Replace 2 Layer Coherence pass with Gradient Mask 2024-03-01 10:42:33 +11:00
psychedelicious
ea7b7bcf40 chore: ruff 2024-03-01 10:42:33 +11:00
psychedelicious
1456c997fb fix(ui): fix merge issue 2024-03-01 10:42:33 +11:00
psychedelicious
7fce234646 fix(ui): use new scan_folder response instead of hook to determine if models are installed already 2024-03-01 10:42:33 +11:00
psychedelicious
9e02384674 chore(ui): typegen 2024-03-01 10:42:33 +11:00
psychedelicious
531d6f40f4 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-03-01 10:42:33 +11:00
psychedelicious
98d60e7db5 chore(ui): lint 2024-03-01 10:42:33 +11:00
psychedelicious
1436a5f295 build(ui): restore i18n eslint rule 2024-03-01 10:42:33 +11:00
psychedelicious
e22c4987bf chore: ruff 2024-03-01 10:42:33 +11:00
psychedelicious
4420392241 fix(ui): fix metadata route 2024-03-01 10:42:33 +11:00
psychedelicious
1d410e6346 chore(ui): typegen 2024-03-01 10:42:33 +11:00
psychedelicious
c98668e7f5 feat(api): mm metadata route "meta" -> "metadata" 2024-03-01 10:42:33 +11:00
Mary Hipp
740dbc0c32 lint fix 2024-03-01 10:42:33 +11:00
Mary Hipp
97181d159f updated translations 2024-03-01 10:42:33 +11:00
maryhipp
65b0d3d436 fix convert endpoint logic 2024-03-01 10:42:33 +11:00
Mary Hipp
baf1194cae clean up old model manager components and endpoints 2024-03-01 10:42:33 +11:00
Mary Hipp
9b1f63379a add model convert to checkpoint main models 2024-03-01 10:42:33 +11:00
Mary Hipp
c3f4e87a6e fix logic to see if scanned models are already installed, style tweaks 2024-03-01 10:42:33 +11:00
maryhipp
26a209a00d add error_reason to ModelInstallJob 2024-03-01 10:42:33 +11:00
Mary Hipp
625c86ba9a add error_reason to UI if import fails 2024-03-01 10:42:33 +11:00
Mary Hipp
53f0090197 fix types for ImportQueue, add QuickAdd for scan models 2024-03-01 10:42:33 +11:00
Jennifer Player
5496699d6c refactored and fixed issues with advanced import form 2024-03-01 10:42:33 +11:00
psychedelicious
b5ce28e60b fix(ui): misc MM cleanup 2024-03-01 10:42:33 +11:00
psychedelicious
816fb53a14 chore(ui): temp disable eslint i18 rule 2024-03-01 10:42:33 +11:00
psychedelicious
793c7ec832 fix(ui): fix ImportMainModelResponse type 2024-03-01 10:42:33 +11:00
psychedelicious
62c67d7c4b fix(ui): simplify model install event listeners 2024-03-01 10:42:33 +11:00
psychedelicious
7c41b3439a fix(ui): fix model install event types 2024-03-01 10:42:33 +11:00
Jennifer Player
cdd2f18bbd added advanced import forms, not fully working yet 2024-03-01 10:42:33 +11:00
Mary Hipp
e7d7b37896 get positioning/scrolling working for scan results list 2024-03-01 10:42:33 +11:00
Mary Hipp
57a402053e basic scan working and renders results 2024-03-01 10:42:33 +11:00
Mary Hipp
9ae09e9a7c add scan model endpoint, break add model into tabs 2024-03-01 10:42:33 +11:00
Mary Hipp
5a12886dbb update metadata endpoint 2024-03-01 10:42:33 +11:00
maryhipp
5b7633f3c6 allow metadata-less models to be used for GET metadata endpoint 2024-03-01 10:42:33 +11:00
Jennifer Player
68f24d9f0d added status to import queue model 2024-03-01 10:42:33 +11:00
Jennifer Player
ea364bdf82 delete model imports and prune all finished, update state with socket messages 2024-03-01 10:42:33 +11:00
Mary Hipp
18904f79ef fix sync model endpoint 2024-03-01 10:42:33 +11:00
Mary Hipp
782d15af13 form error handling 2024-03-01 10:42:33 +11:00
Mary Hipp
86e2b39f0d finish model update 2024-03-01 10:42:33 +11:00
Jennifer Player
20576deae8 added socket listeners, added more info to ui 2024-03-01 10:42:33 +11:00
Mary Hipp
0a69779df9 edit view for model, depending on type and valid values 2024-03-01 10:42:33 +11:00
Mary Hipp
6b68971f38 hook up Add Model button 2024-03-01 10:42:33 +11:00
Mary Hipp
c46eb72d45 single model view 2024-03-01 10:42:33 +11:00
Jennifer Player
87ce74e05d added import model form and importqueue 2024-03-01 10:42:33 +11:00
Mary Hipp
c7d462b222 model list, filtering, searching 2024-03-01 10:42:33 +11:00
Mary Hipp
9068400433 workspace for mary and jenn 2024-03-01 10:42:33 +11:00
Mary Hipp
55f3c6e721 get old UI working somewhat with new endpoints 2024-03-01 10:42:33 +11:00
Brandon Rising
c778ab8db4 Allow passing in key on register 2024-03-01 10:42:33 +11:00
Brandon Rising
65b91356d0 Remove passing keys in on register 2024-03-01 10:42:33 +11:00
Brandon Rising
de9287a3e4 Run ruff 2024-03-01 10:42:33 +11:00
Brandon Rising
008716040b Allow users to run model manager without cuda 2024-03-01 10:42:33 +11:00
psychedelicious
abc569c2dd fix(ui): roll back utility-types
It's `Required` util does not distribute over unions as expected. Also we have `ts-toolbelt` already for some utils.
2024-03-01 10:42:33 +11:00
psychedelicious
3ed2963f43 feat(ui): refactor metadata handling
Refactor of metadata recall handling. This is in preparation for a backwards compatibility layer for models.

- Create helpers to fetch a model outside react (e.g. not in a hook)
- Created helpers to parse model metadata
- Renamed a lot of types that were confusing and/or had naming collisions
2024-03-01 10:42:33 +11:00
psychedelicious
79b16596b5 chore(ui): typegen 2024-03-01 10:42:33 +11:00
psychedelicious
239ecfaf79 fix(nodes): make fields on ModelConfigBase required
The setup of `ModelConfigBase` means autogenerated types have critical fields flagged as nullable (like `key` and `base`). Need to manually flag them as required.
2024-03-01 10:42:33 +11:00
psychedelicious
0d9fbe5e04 feat(ui): replace type-fest with utility-types
- The new package has more useful types
- Only used `JsonObject` from `type-fest`; added an implementation of that type
2024-03-01 10:42:33 +11:00
Lincoln Stein
cc41e8912c several small model install enhancements
- Support extended HF repoid syntax in TUI. This allows
  installation of subfolders and safetensors files, as in
  `XpucT/Deliberate::Deliberate_v5.safetensors`

- Add `error` and `error_traceback` properties to the install
  job objects.

- Rename the `heuristic_import` route to `heuristic_install`.

- Fix the example `config` input in the `heuristic_install` route.
2024-03-01 10:42:33 +11:00
Lincoln Stein
1cec0bb179 use official Deliberate download repo 2024-03-01 10:42:33 +11:00
Lincoln Stein
65dd4f4abc fix repo-id for the Deliberate v5 model
prevent lora and embedding file suffixes from being stripped during installation

apply psychedelicious patch to get compel to load proper TI embedding
2024-03-01 10:42:33 +11:00
Lincoln Stein
5bb3aeaccd remove startup dependency on legacy models.yaml file 2024-03-01 10:42:33 +11:00
dunkeroni
30a374a70f chore: typing 2024-03-01 10:42:33 +11:00
dunkeroni
07dde92664 chore: typing fix 2024-03-01 10:42:33 +11:00
dunkeroni
06cc57d82a feat(nodes): added gradient mask node 2024-03-01 10:42:33 +11:00
Brandon Rising
f7fc20459a Run ruff 2024-03-01 10:42:33 +11:00
Mary Hipp
9269bdd233 rename endpoint for scanning 2024-03-01 10:42:33 +11:00
Brandon Rising
97cfcd2eef Create /search endpoint, update model object structure in scan model page 2024-03-01 10:42:33 +11:00