Commit Graph

5407 Commits

Author SHA1 Message Date
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
psychedelicious
8b18c0d273 chore(ui): typegen 2024-02-29 13:28:22 -05:00
psychedelicious
35c9a29722 feat(api): mm metadata route "meta" -> "metadata" 2024-02-29 13:28:22 -05:00
Mary Hipp
8deca6c9e6 lint fix 2024-02-29 13:28:22 -05:00
Mary Hipp
5a8550d2dd updated translations 2024-02-29 13:28:22 -05:00
maryhipp
866ba7974b fix convert endpoint logic 2024-02-29 13:28:22 -05:00
Mary Hipp
7119a5b88f clean up old model manager components and endpoints 2024-02-29 13:28:22 -05:00
Mary Hipp
af9a62d224 add model convert to checkpoint main models 2024-02-29 13:28:22 -05:00
Mary Hipp
dd9b139e38 fix logic to see if scanned models are already installed, style tweaks 2024-02-29 13:28:22 -05:00
maryhipp
0c0da5480b add error_reason to ModelInstallJob 2024-02-29 13:28:22 -05:00
Mary Hipp
d802900abe add error_reason to UI if import fails 2024-02-29 13:28:22 -05:00
Mary Hipp
34b9ab3674 fix types for ImportQueue, add QuickAdd for scan models 2024-02-29 13:28:22 -05:00
Jennifer Player
7f56e84a8d refactored and fixed issues with advanced import form 2024-02-29 13:28:22 -05:00
psychedelicious
170d9bca98 fix(ui): misc MM cleanup 2024-02-29 13:28:22 -05:00
psychedelicious
84ddad4ea2 chore(ui): temp disable eslint i18 rule 2024-02-29 13:28:22 -05:00
psychedelicious
4854aa8dc2 fix(ui): fix ImportMainModelResponse type 2024-02-29 13:28:22 -05:00
psychedelicious
4afb6b8b0a fix(ui): simplify model install event listeners 2024-02-29 13:28:22 -05:00
psychedelicious
5baa79c903 fix(ui): fix model install event types 2024-02-29 13:28:22 -05:00
Jennifer Player
2db252af31 added advanced import forms, not fully working yet 2024-02-29 13:28:22 -05:00
Mary Hipp
ccdb89534a get positioning/scrolling working for scan results list 2024-02-29 13:28:22 -05:00
Mary Hipp
c23dcc3e77 basic scan working and renders results 2024-02-29 13:28:22 -05:00
Mary Hipp
a9b1f4b8c6 add scan model endpoint, break add model into tabs 2024-02-29 13:28:22 -05:00
Mary Hipp
0030606d99 update metadata endpoint 2024-02-29 13:28:22 -05:00
maryhipp
58ce98101b allow metadata-less models to be used for GET metadata endpoint 2024-02-29 13:28:22 -05:00
Jennifer Player
66df96e425 added status to import queue model 2024-02-29 13:28:22 -05:00
Jennifer Player
eec5f6fb44 delete model imports and prune all finished, update state with socket messages 2024-02-29 13:28:22 -05:00
Mary Hipp
913cfc9583 fix sync model endpoint 2024-02-29 13:28:22 -05:00
Mary Hipp
8185225937 form error handling 2024-02-29 13:28:22 -05:00
Mary Hipp
78365e2c61 finish model update 2024-02-29 13:28:22 -05:00
Jennifer Player
8aafa873ef added socket listeners, added more info to ui 2024-02-29 13:28:22 -05:00
Mary Hipp
52bbd3b5ec edit view for model, depending on type and valid values 2024-02-29 13:28:21 -05:00
Mary Hipp
da6c4bf493 hook up Add Model button 2024-02-29 13:28:21 -05:00
Mary Hipp
f1e21bc9a9 single model view 2024-02-29 13:28:21 -05:00
Jennifer Player
c99eaee6f3 added import model form and importqueue 2024-02-29 13:28:21 -05:00
Mary Hipp
c2fca07c8e model list, filtering, searching 2024-02-29 13:28:21 -05:00
Mary Hipp
49c68a16c2 workspace for mary and jenn 2024-02-29 13:28:21 -05:00
Mary Hipp
3d977def53 get old UI working somewhat with new endpoints 2024-02-29 13:28:21 -05:00
Brandon Rising
70570b7213 Allow passing in key on register 2024-02-29 13:28:21 -05:00
Brandon Rising
957ff8a17e Remove passing keys in on register 2024-02-29 13:28:21 -05:00
Brandon Rising
c32eb17d73 Run ruff 2024-02-29 13:28:21 -05:00
Brandon Rising
57b288e57b Allow users to run model manager without cuda 2024-02-29 13:28:21 -05:00
psychedelicious
4c06132fc6 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-02-29 13:28:21 -05:00
psychedelicious
9b23820717 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-02-29 13:28:21 -05:00
psychedelicious
c323179854 chore(ui): typegen 2024-02-29 13:28:21 -05:00
psychedelicious
a0a143f495 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-02-29 13:28:21 -05:00
psychedelicious
ae43e91caa 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-02-29 13:28:21 -05:00
Lincoln Stein
adab454c51 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-02-29 13:28:21 -05:00
Lincoln Stein
6f27a1ba8c use official Deliberate download repo 2024-02-29 13:28:21 -05:00
Lincoln Stein
dd7fc680bf 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-02-29 13:28:21 -05:00
Lincoln Stein
3312dcc58f remove startup dependency on legacy models.yaml file 2024-02-29 13:28:21 -05:00
dunkeroni
c60cfdb285 chore: typing 2024-02-29 13:28:21 -05:00
dunkeroni
83984b92db chore: typing fix 2024-02-29 13:28:21 -05:00
dunkeroni
dcca220885 feat(nodes): added gradient mask node 2024-02-29 13:28:21 -05:00
Brandon Rising
550f6cb437 Run ruff 2024-02-29 13:28:21 -05:00
Mary Hipp
e18763438b rename endpoint for scanning 2024-02-29 13:28:21 -05:00
Brandon Rising
e731645f0e Create /search endpoint, update model object structure in scan model page 2024-02-29 13:28:21 -05:00
psychedelicious
15ce8e35c7 chore(ui): bump deps
Notable updates:
- Minor version of RTK includes customizable selectors for RTK Query, so we can remove the patch that was added to ensure only the LRU memoize function was used for perf reasons. Updated to use the LRU memoize function.
- Major version of react-resizable-panels. No breaking changes, works great, and you can now resize all panels when dragging at the intersection point of panels. Cool!
- Minor (?) version of nanostores. `action` API is removed, we were using it in one spot. Fixed.
- @invoke-ai/eslint-config-react has all deps bumped and now has its dependent plugins/configs listed as normal dependencies (as opposed to peer deps). This means we can remove those packages from explicit dev deps.
2024-02-29 13:28:21 -05:00
psychedelicious
8d6d03bd04 tidy(ui): remove debugging stmt 2024-02-29 13:28:21 -05:00
psychedelicious
64c1ce895c fix(ui): handle new model format for metadata 2024-02-29 13:28:21 -05:00
psychedelicious
1ced80d492 fix(ui): use model names in badges 2024-02-29 13:28:21 -05:00
psychedelicious
6577250523 fix(nodes): fix TI loading 2024-02-29 13:28:21 -05:00
psychedelicious
068886a70c fix(ui): fix package build 2024-02-29 13:28:21 -05:00
psychedelicious
3a97f6e38e feat(ui): do not subscribe to bulk download sio room if baseUrl is set 2024-02-29 13:28:21 -05:00
psychedelicious
85dae6ad1e feat(ui): revise bulk download listeners
- Use a single listener for all of the to keep them in one spot
- Use the bulk download item name as a toast id so we can update the existing toasts
- Update handling to work with other environments
- Move all bulk download handling from components to listener
2024-02-29 13:28:21 -05:00
psychedelicious
ffef5c65bb chore(ui): typegen 2024-02-29 13:28:21 -05:00
psychedelicious
f74e352f96 feat(bulk_download): update response model, messages 2024-02-29 13:28:21 -05:00
Stefan Tobler
6a6958f19b implementing download for bulk_download events 2024-02-29 13:28:21 -05:00
Stefan Tobler
6828962c05 setting up event listeners for bulk download socket 2024-02-29 13:28:21 -05:00
psychedelicious
fff5d12648 tidy(bulk_download): don't store events service separately
Using the invoker object directly leaves no ambiguity as to what `_events_bus` actually is.
2024-02-29 13:28:21 -05:00