Commit Graph

5391 Commits

Author SHA1 Message Date
psychedelicious
02f59a3831 fix(ui): use id for component key in control adapter components 2024-02-26 14:49:38 -05:00
psychedelicious
2555be3058 feat(ui): no JSX in metadata handlers 2024-02-26 14:49:38 -05:00
psychedelicious
e174ce038f 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-26 14:49:38 -05:00
psychedelicious
0f10faf0d4 build(ui): do not fail build on eslint error in dev mode 2024-02-26 14:49:38 -05:00
psychedelicious
393e32f8a7 chore(ui): typegen 2024-02-26 14:49:38 -05:00
psychedelicious
70412464c8 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-26 14:49:38 -05:00
Mary Hipp
30fdb9dbfd undo 2024-02-26 14:44:37 -05:00
Mary Hipp
66f6013436 fix literal strings in MM UI 2024-02-26 14:44:37 -05:00
Mary Hipp
49b04f7db8 fix TI appearing as key in prompt 2024-02-26 14:20:28 -05:00
Mary Hipp
253dc5d43d fix base model grouping in combobox 2024-02-26 14:20:28 -05:00
psychedelicious
3ccb4e6ff9 fix(mm): fix ModelCacheBase method name 2024-02-26 17:38:31 +11:00
psychedelicious
200a9d1801 chore: ruff 2024-02-26 17:38:31 +11:00
Lincoln Stein
b09a76ea0d recover gracefuly from GPU out of memory errors (next version) 2024-02-26 17:38:31 +11:00
Lincoln Stein
8a2030e78a clear out VRAM when an OOM occurs 2024-02-26 17:38:31 +11:00
psychedelicious
dfa5505ed8 feat(ui): bulk download click to download 2024-02-25 22:23:15 -05:00
psychedelicious
f8b731b900 fix(ui): fix node types for canvas graphs 2024-02-24 19:38:16 +11:00
psychedelicious
fd9ab0fb7d chore(ui): typegen 2024-02-24 19:38:16 +11:00
psychedelicious
f504a5c96e tidy(nodes): rename canvas paste back 2024-02-24 19:38:16 +11:00
blessedcoolant
afe6639b9c fix: outpaint result not getting pasted back correctly 2024-02-24 19:38:16 +11:00
blessedcoolant
1f1bf15099 fix: lint errors 2024-02-24 19:38:16 +11:00
blessedcoolant
8fa238f100 canvas: improve paste back (or try to) 2024-02-24 19:38:16 +11:00
blessedcoolant
30b6a0ee23 wip(ui): Replace 2 Layer Coherence pass with Gradient Mask 2024-02-24 19:38:16 +11:00
psychedelicious
784878c300 chore: ruff 2024-02-24 19:04:52 +11:00
psychedelicious
b51b163400 fix(ui): fix merge issue 2024-02-24 19:04:52 +11:00
psychedelicious
7e13224ec8 fix(ui): use new scan_folder response instead of hook to determine if models are installed already 2024-02-24 19:04:52 +11:00
psychedelicious
7bc454209c chore(ui): typegen 2024-02-24 19:04:52 +11:00
psychedelicious
cc7f6c7048 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-24 19:04:52 +11:00
psychedelicious
8b8d950137 chore(ui): lint 2024-02-24 19:04:52 +11:00
psychedelicious
24fd7f41ff build(ui): restore i18n eslint rule 2024-02-24 19:04:52 +11:00
psychedelicious
7c5e458372 chore: ruff 2024-02-24 19:04:52 +11:00
psychedelicious
a5dba4b0d9 fix(ui): fix metadata route 2024-02-24 19:04:52 +11:00
psychedelicious
72fb1cefff chore(ui): typegen 2024-02-24 19:04:52 +11:00
psychedelicious
a64f1c0b20 feat(api): mm metadata route "meta" -> "metadata" 2024-02-24 19:04:52 +11:00
Mary Hipp
974658107d lint fix 2024-02-24 19:04:52 +11:00
Mary Hipp
07fb5d5c19 updated translations 2024-02-24 19:04:52 +11:00
maryhipp
20c75e7a7e fix convert endpoint logic 2024-02-24 19:04:52 +11:00
Mary Hipp
cfcb68696c clean up old model manager components and endpoints 2024-02-24 19:04:52 +11:00
Mary Hipp
7b1b6d3235 add model convert to checkpoint main models 2024-02-24 19:04:52 +11:00
Mary Hipp
aefba52a0a fix logic to see if scanned models are already installed, style tweaks 2024-02-24 19:04:52 +11:00
maryhipp
6af46f9c5f add error_reason to ModelInstallJob 2024-02-24 19:04:52 +11:00
Mary Hipp
190702d011 add error_reason to UI if import fails 2024-02-24 19:04:52 +11:00
Mary Hipp
7785e8ff79 fix types for ImportQueue, add QuickAdd for scan models 2024-02-24 19:04:52 +11:00
Jennifer Player
b3beaefa04 refactored and fixed issues with advanced import form 2024-02-24 19:04:52 +11:00
psychedelicious
98be81354a fix(ui): misc MM cleanup 2024-02-24 19:04:52 +11:00
psychedelicious
2a2a5eb775 chore(ui): temp disable eslint i18 rule 2024-02-24 19:04:52 +11:00
psychedelicious
4a42b15b42 fix(ui): fix ImportMainModelResponse type 2024-02-24 19:04:52 +11:00
psychedelicious
f24d5e5e31 fix(ui): simplify model install event listeners 2024-02-24 19:04:52 +11:00
psychedelicious
4b106bc903 fix(ui): fix model install event types 2024-02-24 19:04:52 +11:00
Jennifer Player
135ef9066f added advanced import forms, not fully working yet 2024-02-24 19:04:52 +11:00
Mary Hipp
0567f98e4a get positioning/scrolling working for scan results list 2024-02-24 19:04:52 +11:00
Mary Hipp
5b66baa3ec basic scan working and renders results 2024-02-24 19:04:52 +11:00
Mary Hipp
a022aaf258 add scan model endpoint, break add model into tabs 2024-02-24 19:04:52 +11:00
Mary Hipp
94065b090a update metadata endpoint 2024-02-24 19:04:52 +11:00
maryhipp
091bf9220b allow metadata-less models to be used for GET metadata endpoint 2024-02-24 19:04:52 +11:00
Jennifer Player
8d243b1fca added status to import queue model 2024-02-24 19:04:52 +11:00
Jennifer Player
23c412e011 delete model imports and prune all finished, update state with socket messages 2024-02-24 19:04:52 +11:00
Mary Hipp
66692f02aa fix sync model endpoint 2024-02-24 19:04:52 +11:00
Mary Hipp
38af1c3a81 form error handling 2024-02-24 19:04:52 +11:00
Mary Hipp
7b4b7e3781 finish model update 2024-02-24 19:04:52 +11:00
Jennifer Player
02a3472505 added socket listeners, added more info to ui 2024-02-24 19:04:52 +11:00
Mary Hipp
909d354a38 edit view for model, depending on type and valid values 2024-02-24 19:04:52 +11:00
Mary Hipp
7801b8c42f hook up Add Model button 2024-02-24 19:04:52 +11:00
Mary Hipp
4fd259bb89 single model view 2024-02-24 19:04:52 +11:00
Jennifer Player
b8b3ef9725 added import model form and importqueue 2024-02-24 19:04:52 +11:00
Mary Hipp
3a8d5dc349 model list, filtering, searching 2024-02-24 19:04:52 +11:00
Mary Hipp
358cac9674 workspace for mary and jenn 2024-02-24 19:04:52 +11:00
Mary Hipp
bdc2b8069b get old UI working somewhat with new endpoints 2024-02-24 19:04:52 +11:00
Brandon Rising
09295ae43b Allow passing in key on register 2024-02-23 14:47:14 -05:00
Brandon Rising
80ad14d89f Remove passing keys in on register 2024-02-23 14:33:49 -05:00
Brandon Rising
c674eb3168 Run ruff 2024-02-23 14:33:49 -05:00
Brandon Rising
63138640a7 Allow users to run model manager without cuda 2024-02-23 14:33:49 -05:00
psychedelicious
d103ff0d6e 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-23 07:53:45 +11:00
psychedelicious
94931e8ac0 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-23 07:53:45 +11:00
psychedelicious
b409f3aaf9 chore(ui): typegen 2024-02-23 07:53:45 +11:00
psychedelicious
f96b7f2e11 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-23 07:53:45 +11:00
psychedelicious
de3be4bd30 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-23 07:53:45 +11:00
Lincoln Stein
cc12f57a5a 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-23 07:48:23 +11:00
Lincoln Stein
613f11a3ac use official Deliberate download repo 2024-02-23 07:48:04 +11:00
Lincoln Stein
a6e2d2c5e0 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-23 07:48:04 +11:00
Lincoln Stein
ae14df97d6 remove startup dependency on legacy models.yaml file 2024-02-23 07:47:39 +11:00
dunkeroni
a6e1ac6096 chore: typing 2024-02-22 10:04:33 -05:00
dunkeroni
8530635540 chore: typing fix 2024-02-22 10:04:33 -05:00
dunkeroni
b2b7aed030 feat(nodes): added gradient mask node 2024-02-22 10:04:33 -05:00
Brandon Rising
970d45f691 Run ruff 2024-02-22 09:50:02 -05:00
Mary Hipp
19b9a22d93 rename endpoint for scanning 2024-02-22 09:50:02 -05:00
Brandon Rising
c0d9990344 Create /search endpoint, update model object structure in scan model page 2024-02-22 09:50:02 -05:00
psychedelicious
4ac5e307c4 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-22 07:27:28 +11:00
psychedelicious
2815f737fe tidy(ui): remove debugging stmt 2024-02-22 07:26:47 +11:00
psychedelicious
63e96fd1ea fix(ui): handle new model format for metadata 2024-02-22 07:26:47 +11:00
psychedelicious
66ab56246a fix(ui): use model names in badges 2024-02-22 07:26:47 +11:00
psychedelicious
20a56bc757 fix(nodes): fix TI loading 2024-02-22 07:26:47 +11:00
psychedelicious
82925e1539 fix(ui): fix package build 2024-02-21 08:31:55 -05:00
psychedelicious
0137a0db7b feat(ui): do not subscribe to bulk download sio room if baseUrl is set 2024-02-21 00:00:25 +11:00
psychedelicious
b410793684 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-21 00:00:25 +11:00
psychedelicious
894e9f127b chore(ui): typegen 2024-02-21 00:00:25 +11:00
psychedelicious
dd9b1c8eec feat(bulk_download): update response model, messages 2024-02-21 00:00:25 +11:00
Stefan Tobler
8d9c566656 implementing download for bulk_download events 2024-02-21 00:00:25 +11:00
Stefan Tobler
9db7e073a3 setting up event listeners for bulk download socket 2024-02-21 00:00:25 +11:00
psychedelicious
7f75f6226b 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-20 23:39:30 +11:00
psychedelicious
6dc819fd47 tidy(bulk_download): do not rely on pagination API to get all images for board
We can get all images for the board as a list of image names, then pass that to `_image_handler` to get the DTOs, decoupling from the pagination API.
2024-02-20 23:39:30 +11:00