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
psychedelicious
571a86a965
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-03-01 10:42:33 +11:00
psychedelicious
dbd929df05
tidy(ui): remove debugging stmt
2024-03-01 10:42:33 +11:00
psychedelicious
b59d23d608
fix(ui): handle new model format for metadata
2024-03-01 10:42:33 +11:00
psychedelicious
9d9b417432
fix(ui): use model names in badges
2024-03-01 10:42:33 +11:00
psychedelicious
34f3a39cc9
fix(nodes): fix TI loading
2024-03-01 10:42:33 +11:00
psychedelicious
e3c23baae9
fix(ui): fix package build
2024-03-01 10:42:33 +11:00
psychedelicious
6a923cce70
feat(ui): do not subscribe to bulk download sio room if baseUrl is set
2024-03-01 10:42:33 +11:00
psychedelicious
c0f0f2f39e
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-03-01 10:42:33 +11:00
psychedelicious
64908eda55
chore(ui): typegen
2024-03-01 10:42:33 +11:00
psychedelicious
a37b60db13
feat(bulk_download): update response model, messages
2024-03-01 10:42:33 +11:00
Stefan Tobler
9e296f6916
implementing download for bulk_download events
2024-03-01 10:42:33 +11:00
Stefan Tobler
ab94484c6c
setting up event listeners for bulk download socket
2024-03-01 10:42:33 +11:00
psychedelicious
cbb997e7d0
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-03-01 10:42:33 +11:00
psychedelicious
98441ad08d
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-03-01 10:42:33 +11:00
psychedelicious
80c67dd6e0
tidy(bulk_download): nit - use or
as a coalescing operator
...
Just a bit cleaner.
2024-03-01 10:42:33 +11:00
psychedelicious
38af234108
tidy(bulk_download): use single underscore for private attrs
...
Double underscores are used in the app but it doesn't actually do or convey anything that single underscores don't already do. Considered unpythonic except for actual dunder/magic methods.
2024-03-01 10:42:33 +11:00
psychedelicious
2291122c2b
tidy(bulk_download): remove class-level attr annotations
...
These can be misleading as they shadow actual assigned class attributes. This pattern is in the rest of the app but it shouldn't be.
2024-03-01 10:42:33 +11:00
psychedelicious
bf3b10cb1c
tidy(bulk_download): remove extraneous abstract methods
...
`start`, `stop` and `__init__` are not required in implementations of an ABC or service.
2024-03-01 10:42:33 +11:00
psychedelicious
7f8f182a00
tidy(bulk_download): clean up comments
2024-03-01 10:42:33 +11:00
Stefan Tobler
e51867756a
adding bulk_download_item_name to socket events
2024-03-01 10:42:33 +11:00
Stefan Tobler
a8d7cf4e97
refactoring handlers to do null check
2024-03-01 10:42:33 +11:00
Stefan Tobler
037cac8154
removing dependency on an output folder, embrace python temp folder for bulk download
2024-03-01 10:42:33 +11:00
Stefan Tobler
b5a9ed351d
moving the responsibility of cleaning up board names to the service not the route
2024-03-01 10:42:33 +11:00
Stefan Tobler
f15aa562c2
using temp directory for downloads
2024-03-01 10:42:33 +11:00
Stefan Tobler
d0f3571e59
returning the bulk_download_item_name on response for possible polling
2024-03-01 10:42:33 +11:00
Stefan Tobler
b5ca1643a6
narrowing bulk_download stop service scope
2024-03-01 10:42:33 +11:00
Stefan Tobler
79eb871683
cleaning up bulk download zip after the response is complete
2024-03-01 10:42:33 +11:00
Stefan Tobler
7d91426d8f
refactoring bulk_download to be better managed
2024-03-01 10:42:33 +11:00
Stefan Tobler
795fbf0e81
refactoring bulkdownload to consider image category
2024-03-01 10:42:33 +11:00
Stefan Tobler
7114d64b86
fixing issue where default board did not return images
2024-03-01 10:42:33 +11:00
Stefan Tobler
c43ea9f25c
using the board name to download boards
2024-03-01 10:42:33 +11:00
Stefan Tobler
52b0deb179
reworking some of the logic to use a default room, adding endpoint to download file on complete
2024-03-01 10:42:33 +11:00
Stefan Tobler
7ecc18938b
linted and styling
2024-03-01 10:42:33 +11:00
Stefan Tobler
56d2d220a8
implementation of bulkdownload background task
2024-03-01 10:42:33 +11:00
Stefan Tobler
f1967c3393
adding socket events for bulk download
2024-03-01 10:42:33 +11:00
Stefan Tobler
812e24cbd2
groundwork for the bulk_download_service
2024-03-01 10:42:33 +11:00
psychedelicious
8afe328af0
fix(ui): get workflow editor model selects working
2024-03-01 10:42:33 +11:00
psychedelicious
e771c5f467
fix(ui): get refiner model select working
2024-03-01 10:42:33 +11:00
psychedelicious
e7e3045a8a
fix(ui): get vae model select working
2024-03-01 10:42:33 +11:00
psychedelicious
f870f810d5
fix(ui): get embedding select working
2024-03-01 10:42:33 +11:00
psychedelicious
a793103d7a
fix(ui): get lora select working
2024-03-01 10:42:33 +11:00
psychedelicious
7e5a85496e
chore(ui): bump @invoke-ai/ui-library
2024-03-01 10:42:33 +11:00
psychedelicious
ca7e928710
fix(ui): fix low-hanging fruit types
2024-03-01 10:42:33 +11:00
psychedelicious
89fa36a818
chore(nodes): update TODO comment
2024-03-01 10:42:33 +11:00
psychedelicious
e3f9da29ba
tidy(nodes): clean up profiler/stats in processor, better comments
2024-03-01 10:42:33 +11:00
psychedelicious
763debdeeb
fix(nodes): fix typing on stats service context manager
2024-03-01 10:42:33 +11:00
psychedelicious
8bf9fd34ad
fix(nodes): fix model load events
...
was accessing incorrect properties in event data
2024-03-01 10:42:33 +11:00
psychedelicious
0b0cb0ccc6
feat(nodes): making invocation class var in processor
2024-03-01 10:42:33 +11:00
psychedelicious
fa39523b11
feat(nodes): improved error messages in processor
2024-03-01 10:42:33 +11:00
psychedelicious
16676feea8
feat(nodes): make processor thread limit and polling interval configurable
2024-03-01 10:42:33 +11:00
psychedelicious
d53a2a2d4e
chore(nodes): better comments for invocation context
2024-03-01 10:42:33 +11:00
psychedelicious
ccfe6b6bef
chore(nodes): "context_data" -> "data"
...
Changed within InvocationContext, for brevity.
2024-03-01 10:42:33 +11:00