Commit Graph

3140 Commits

Author SHA1 Message Date
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
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
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
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
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
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
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
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
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
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
3312dcc58f remove startup dependency on legacy models.yaml file 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
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
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
f81388508f fix(ui): get workflow editor model selects working 2024-02-29 13:28:21 -05:00
psychedelicious
abe2055bbb fix(ui): get refiner model select working 2024-02-29 13:28:21 -05:00
psychedelicious
7dab32138c fix(ui): get vae model select working 2024-02-29 13:28:21 -05:00
psychedelicious
d6c9360fa3 fix(ui): get embedding select working 2024-02-29 13:28:20 -05:00
psychedelicious
ff53d828ce fix(ui): get lora select working 2024-02-29 13:28:20 -05:00
psychedelicious
0212d4f4a2 chore(ui): bump @invoke-ai/ui-library 2024-02-29 13:28:20 -05:00
psychedelicious
8db5aa626f fix(ui): fix low-hanging fruit types 2024-02-29 13:28:20 -05:00
psychedelicious
d4a7f55c72 chore(ui): typegen 2024-02-29 13:28:20 -05:00
Lincoln Stein
75aa93fabb remove errant def that was crashing invokeai-configure 2024-02-29 13:28:20 -05:00
Lincoln Stein
ab46865e5b Tidy names and locations of modules
- Rename old "model_management" directory to "model_management_OLD" in order to catch
  dangling references to original model manager.
- Caught and fixed most dangling references (still checking)
- Rename lora, textual_inversion and model_patcher modules
- Introduce a RawModel base class to simplfy the Union returned by the
  model loaders.
- Tidy up the model manager 2-related tests. Add useful fixtures, and
  a finalizer to the queue and installer fixtures that will stop the
  services and release threads.
2024-02-29 13:28:20 -05:00
Lincoln Stein
3c1b0d01ac Fix issues identified during PR review by RyanjDick and brandonrising
- ModelMetadataStoreService is now injected into ModelRecordStoreService
  (these two services are really joined at the hip, and should someday be merged)
- ModelRecordStoreService is now injected into ModelManagerService
- Reduced timeout value for the various installer and download wait*() methods
- Introduced a Mock modelmanager for testing
- Removed bare print() statement with _logger in the install helper backend.
- Removed unused code from model loader init file
- Made `locker` a private variable in the `LoadedModel` object.
- Fixed up model merge frontend (will be deprecated anyway!)
2024-02-29 13:28:20 -05:00
psychedelicious
8a8e862a5f chore(ui): lint 2024-02-29 13:28:20 -05:00
psychedelicious
ed860ae851 feat(ui): fix main model & control adapter model selects 2024-02-29 13:28:18 -05:00
psychedelicious
eb27951b8c refactor(ui): url builders for each router
The MM2 router is at `api/v2/models`. URL builder utils make this a bit easier to manage.
2024-02-29 13:21:15 -05:00
psychedelicious
527f76250a feat(ui): update model identifier to be key (wip)
- Update most model identifiers to be `{key: string}` instead of name/base/type. Doesn't change the model select components yet.
- Update model _parameters_, stored in redux, to be `{key: string, base: BaseModel}` - we need to store the base model to be able to check model compatibility. May want to store the whole config? Not sure...
2024-02-29 13:16:37 -05:00
psychedelicious
2d953fe0cc fix(ui): update model types 2024-02-29 13:16:37 -05:00
psychedelicious
c6be4f5b9f tests(ui): add type tests 2024-02-29 13:16:37 -05:00
psychedelicious
ac1382abed tests(ui): enable vitest type testing
This is useful for the zod schemas and types we have created to match the backend.
2024-02-29 13:16:37 -05:00
psychedelicious
f0dcd70515 chore(ui): typegen 2024-02-29 13:16:37 -05:00
psychedelicious
87b0f7d04a feat(ui): export components type 2024-02-29 13:16:37 -05:00
psychedelicious
535350ebce fix(ui): fix type issues 2024-02-29 13:16:37 -05:00
psychedelicious
5873900410 chore: lint 2024-02-29 13:16:37 -05:00
Lincoln Stein
d56337f2d8 make model manager v2 ready for PR review
- Replace legacy model manager service with the v2 manager.

- Update invocations to use new load interface.

- Fixed many but not all type checking errors in the invocations. Most
  were unrelated to model manager

- Updated routes. All the new routes live under the route tag
  `model_manager_v2`. To avoid confusion with the old routes,
  they have the URL prefix `/api/v2/models`. The old routes
  have been de-registered.

- Added a pytest for the loader.

- Updated documentation in contributing/MODEL_MANAGER.md
2024-02-29 13:16:37 -05:00
Lincoln Stein
dbd2f8dc5f fix invokeai_configure script to work with new mm; rename CLIs 2024-02-29 13:16:37 -05:00
Lincoln Stein
49df4fa120 BREAKING CHANGES: invocations now require model key, not base/type/name
- Implement new model loader and modify invocations and embeddings

- Finish implementation loaders for all models currently supported by
  InvokeAI.

- Move lora, textual_inversion, and model patching support into
  backend/embeddings.

- Restore support for model cache statistics collection (a little ugly,
  needs work).

- Fixed up invocations that load and patch models.

- Move seamless and silencewarnings utils into better location
2024-02-29 13:16:37 -05:00
Lincoln Stein
92843d55eb Multiple refinements on loaders:
- Cache stat collection enabled.
- Implemented ONNX loading.
- Add ability to specify the repo version variant in installer CLI.
- If caller asks for a repo version that doesn't exist, will fall back
  to empty version rather than raising an error.
2024-02-29 13:16:37 -05:00
psychedelicious
55147fbb7e tests(ui): add parseFieldType.test.ts 2024-02-29 13:16:36 -05:00
psychedelicious
c99e264bde feat(ui): add more types of FieldParseError
Unfortunately you cannot test for both a specific type of error and match its message. Splitting the error classes makes it easier to test expected error conditions.
2024-02-29 13:16:36 -05:00
psychedelicious
62c3687a9a feat(ui): add vitest
- Add vitest.
- Consolidate vite configs into single file (easier to config everything based on env for testing)
2024-02-29 13:16:36 -05:00
psychedelicious
c7f1fad398 feat(ui): workflow schema v3 (WIP)
The changes aim to deduplicate data between workflows and node templates, decoupling workflows from internal implementation details. A good amount of data that was needlessly duplicated from the node template to the workflow is removed.

These changes substantially reduce the file size of workflows (and therefore the images with embedded workflows):

- Default T2I SD1.5 workflow JSON is reduced from 23.7kb (798 lines) to 10.9kb (407 lines).
- Default tiled upscale workflow JSON is reduced from 102.7kb (3341 lines) to 51.9kb (1774 lines).

The trade-off is that we need to reference node templates to get things like the field type and other things. In practice, this is a non-issue, because we need a node template to do anything with a node anyways.

- Field types are not included in the workflow. They are always pulled from the node templates.

The field type is now properly an internal implementation detail and we can change it as needed. Previously this would require a migration for the workflow itself. With the v3 schema, the structure of a field type is an internal implementation detail that we are free to change as we see fit.

- Workflow nodes no long have an `outputs` property and there is no longer such a thing as a `FieldOutputInstance`. These are only on the templates.

These were never referenced at a time when we didn't also have the templates available, and there'd be no reason to do so.

- Node width and height are no longer stored in the node.

These weren't used. Also, per https://reactflow.dev/api-reference/types/node, we shouldn't be programmatically changing these properties. A future enhancement can properly add node resizing.

- `nodeTemplates` slice is merged back into `nodesSlice` as `nodes.templates`. Turns out it's just a hassle having these separate in separate slices.

- Workflow migration logic updated to support the new schema. V1 workflows migrate all the way to v3 now.

- Changes throughout the nodes code to accommodate the above changes.
2024-02-29 13:16:36 -05:00
psychedelicious
0540e6fb0d chore(ui): regen types 2024-02-29 13:16:36 -05:00
psychedelicious
bb8c71f706 feat(ui): revise graphs to not use LinearUIOutputInvocation
See this comment for context: https://github.com/invoke-ai/InvokeAI/pull/5491#discussion_r1480760629

- Remove this now-unnecessary node from all graphs
- Update graphs' terminal image-outputting nodes' `is_intermediate` and `board` fields appropriately
- Add util function to prepare the `board` field, tidy the utils
- Update `socketInvocationComplete` listener to work correctly with this change

I've manually tested all graph permutations that were changed (I think this is all...) to ensure images go to the gallery as expected:
- ad-hoc upscaling
- t2i w/ sd1.5
- t2i w/ sd1.5 & hrf
- t2i w/ sdxl
- t2i w/ sdxl + refiner
- i2i w/ sd1.5
- i2i w/ sdxl
- i2i w/ sdxl + refiner
- canvas t2i w/ sd1.5
- canvas t2i w/ sdxl
- canvas t2i w/ sdxl + refiner
- canvas i2i w/ sd1.5
- canvas i2i w/ sdxl
- canvas i2i w/ sdxl + refiner
- canvas inpaint w/ sd1.5
- canvas inpaint w/ sdxl
- canvas inpaint w/ sdxl + refiner
- canvas outpaint w/ sd1.5
- canvas outpaint w/ sdxl
- canvas outpaint w/ sdxl + refiner
2024-02-29 13:16:36 -05:00
psychedelicious
c16f77bb23 chore(ui): regen types 2024-02-29 13:16:36 -05:00
psychedelicious
060038a8c0 fix(ui): remove original l2i node in HRF graph 2024-02-29 13:16:36 -05:00
Васянатор
63ab5ff5a2 translationBot(ui): update translation (Russian)
Currently translated at 98.3% (1398 of 1422 strings)

Co-authored-by: Васянатор <ilabulanov339@gmail.com>
Translate-URL: https://hosted.weblate.org/projects/invokeai/web-ui/ru/
Translation: InvokeAI/Web UI
2024-02-29 23:27:36 +11:00
Samantha Morello
9a8a9c5848 translationBot(ui): update translation (Italian)
Currently translated at 98.0% (1441 of 1470 strings)

Co-authored-by: Samantha Morello <tildsart@gmail.com>
Translate-URL: https://hosted.weblate.org/projects/invokeai/web-ui/it/
Translation: InvokeAI/Web UI
2024-02-29 23:27:36 +11:00
Alexander Eichhorn
1a3ffb6e94 translationBot(ui): update translation (German)
Currently translated at 80.4% (1183 of 1470 strings)

Co-authored-by: Alexander Eichhorn <pfannkuchensack@einfach-doof.de>
Translate-URL: https://hosted.weblate.org/projects/invokeai/web-ui/de/
Translation: InvokeAI/Web UI
2024-02-29 23:27:36 +11:00
Riccardo Giovanetti
2ec6b51d8b translationBot(ui): update translation (Italian)
Currently translated at 97.2% (1430 of 1470 strings)

Co-authored-by: Riccardo Giovanetti <riccardo.giovanetti@gmail.com>
Translate-URL: https://hosted.weblate.org/projects/invokeai/web-ui/it/
Translation: InvokeAI/Web UI
2024-02-26 17:41:00 +11:00
B N
34b0ea20dc translationBot(ui): update translation (German)
Currently translated at 80.3% (1181 of 1470 strings)

translationBot(ui): update translation (German)

Currently translated at 80.1% (1178 of 1470 strings)

Co-authored-by: B N <berndnieschalk@gmail.com>
Translate-URL: https://hosted.weblate.org/projects/invokeai/web-ui/de/
Translation: InvokeAI/Web UI
2024-02-26 17:41:00 +11:00
Alexander Eichhorn
9986fce1a6 translationBot(ui): update translation (German)
Currently translated at 80.0% (1176 of 1470 strings)

Co-authored-by: Alexander Eichhorn <pfannkuchensack@einfach-doof.de>
Translate-URL: https://hosted.weblate.org/projects/invokeai/web-ui/de/
Translation: InvokeAI/Web UI
2024-02-23 07:57:15 +11:00
Riccardo Giovanetti
228f1d7f62 translationBot(ui): update translation (Italian)
Currently translated at 95.6% (1406 of 1470 strings)

translationBot(ui): update translation (Italian)

Currently translated at 93.9% (1381 of 1470 strings)

Co-authored-by: Riccardo Giovanetti <riccardo.giovanetti@gmail.com>
Translate-URL: https://hosted.weblate.org/projects/invokeai/web-ui/it/
Translation: InvokeAI/Web UI
2024-02-23 07:57:15 +11:00
B N
01a6378dc1 translationBot(ui): update translation (German)
Currently translated at 78.8% (1159 of 1470 strings)

Co-authored-by: B N <berndnieschalk@gmail.com>
Translate-URL: https://hosted.weblate.org/projects/invokeai/web-ui/de/
Translation: InvokeAI/Web UI
2024-02-23 07:57:15 +11:00
Hosted Weblate
e01769294f translationBot(ui): update translation files
Updated by "Cleanup translation files" hook in Weblate.

Co-authored-by: Hosted Weblate <hosted@weblate.org>
Translate-URL: https://hosted.weblate.org/projects/invokeai/web-ui/
Translation: InvokeAI/Web UI
2024-02-20 22:33:03 +11:00
chainchompa
1dabf18d14
Merge branch 'main' into chainchompa/tooltip-popovers 2024-02-19 13:04:15 -05:00