Kevin Turner
3039f92e69
doc(development): small updates to backend development intro
2023-08-21 16:38:47 -07:00
Kevin Turner
88963dbe6e
Merge remote-tracking branch 'origin/main' into feat/dev_reload
...
# Conflicts:
# invokeai/app/api_app.py
# invokeai/app/services/config.py
2023-08-21 09:04:31 -07:00
blessedcoolant
7b2079cf83
feat: Add hotkey for Add Nodes (Shift+A)
...
Standard with other tools like Blender
2023-08-22 03:31:29 +12:00
psychedelicious
535eb1db16
Merge branch 'main' into fix/stats/handle-exceptions
2023-08-21 19:19:32 +10:00
psychedelicious
01738deb23
feat(ui): add eslint rules
...
- `curly` requires conditionals to use curly braces
- `react/jsx-curly-brace-presence` requires string props to *not* have curly braces
2023-08-21 19:17:36 +10:00
psychedelicious
fbff22c94b
feat(ui): memoize all components
2023-08-21 19:17:36 +10:00
psychedelicious
5c305b1eeb
feat(ui): add app error boundary
...
Should catch all app crashes
2023-08-21 19:17:36 +10:00
psychedelicious
990b6b5f6a
feat(ui): useful tooltips on invoke button
2023-08-21 19:17:36 +10:00
psychedelicious
2dfcba8654
fix(ui): fix graphs using old field names
2023-08-21 19:17:36 +10:00
psychedelicious
d95773f50f
Revert "feat(nodes): make fields that accept connection input optional in OpenAPI schema"
...
This reverts commit 7325cbdd250153f347e3782265dd42783f7f1d00.
2023-08-21 19:17:36 +10:00
psychedelicious
6d111aac90
fix(ui): fix node opacity slider hitbox
2023-08-21 19:17:36 +10:00
psychedelicious
f9fc89b3c5
feat(ui): nodes scheduler type default value -> "euler"
2023-08-21 19:17:36 +10:00
psychedelicious
ab76d54c10
feat(ui): update node schema parsing
...
simplified logic thanks to backend changes
2023-08-21 19:17:36 +10:00
psychedelicious
56245a7406
chore(ui): regen types
2023-08-21 19:17:36 +10:00
psychedelicious
bf04e913c2
feat(nodes): make primitive outputs not optional, fix primitive invocation defaults
2023-08-21 19:17:36 +10:00
psychedelicious
cdc49456e8
feat(api): add additional class
attribute to invocations and outputs in OpenAPI schema
...
It is `"invocation"` for invocations and `"output"` for outputs. Clients may use this to confidently and positively identify if an OpenAPI schema object is an invocation or output, instead of using a potentially fragile heuristic.
2023-08-21 19:17:36 +10:00
psychedelicious
37dc2d9d4d
feat(nodes): update vae node tags
2023-08-21 19:17:36 +10:00
psychedelicious
6e1ddb671e
feat(nodes): make fields that accept connection input optional in OpenAPI schema
...
Doing this via `BaseInvocation`'s `Config.schema_extra()` means all clients get an accurate OpenAPI schema.
Shifts the responsibility of correct types to the backend, where previously it was on the client.
2023-08-21 19:17:36 +10:00
psychedelicious
496a2db15c
feat(nodes): make id
, type
required in BaseInvocation, BaseInvocationOutput
...
Doing this via these classes' `Config.schema_extra()` method makes it unintrusive and clients will get the correct types for these properties.
Shifts the responsibility of correct types to the backend, where previously it was on the client.
2023-08-21 19:17:36 +10:00
psychedelicious
5292eda0e4
feat(nodes): remove "Loader" from model nodes
...
They are not loaders, they are selectors - remove this to reduce confusion.
2023-08-21 19:17:36 +10:00
psychedelicious
4ac41bc4b1
feat(ui): adding node selects new node exclusively
2023-08-21 19:17:36 +10:00
psychedelicious
4be4fc6731
feat(ui): rework add node select
...
- `space` and `/` open floating add node select
- improved filter logic (partial word matches)
2023-08-21 19:17:36 +10:00
psychedelicious
a9fdc77edd
feat(ui): rename node editor to workflow editor
2023-08-21 19:17:36 +10:00
psychedelicious
385765faec
fix(ui): fix missing tags on template parse
2023-08-21 19:17:36 +10:00
psychedelicious
adb05cde5b
feat(ui): simple partial search for nodes
2023-08-21 19:17:36 +10:00
psychedelicious
211e8203f8
feat(ui): organise nodes files
...
- also remove old `.gitignore` of `inputs/` which wasn't used and was ignoring a frontend folder
2023-08-21 19:17:36 +10:00
psychedelicious
0b9ae74192
fix(stats): RuntimeError: dictionary changed size during iteration
2023-08-21 19:17:36 +10:00
psychedelicious
165c57c001
feat(ui): add select all to workflow editor
2023-08-21 19:17:36 +10:00
psychedelicious
2514af79a0
feat(ui): crude node outputs display
...
Resets on invoke. Nothing fancy for the UI yet, just simple text (for numbers and strings) or image. For other output types, the output in JSON.
2023-08-21 19:17:36 +10:00
psychedelicious
f952f8f685
feat(ui): add typegen customisation for invocation outputs
...
The `type` property is required on all of them, but because this is defined in pydantic as a Literal, it is not required in the OpenAPI schema. Easier to fix this by changing the generated types than fiddling around with pydantic.
2023-08-21 19:17:36 +10:00
psychedelicious
484b572023
feat(nodes): primitives have value
instead of a
as field names
2023-08-21 19:17:36 +10:00
psychedelicious
cd9baf8092
fix(stats): fix InvocationStatsService
types
...
- move docstrings to ABC
- `start_time: int` -> `start_time: float`
- remove class attribute assignments in `StatsContext`
- add `update_mem_stats()` to ABC
- add class attributes to ABC, because they are referenced in instances of the class. if they should not be on the ABC, then maybe there needs to be some restructuring
2023-08-21 19:17:36 +10:00
psychedelicious
81385d7d35
fix(stats): fix fail case when previous graph is invalid
...
When retrieving a graph, it is parsed through pydantic. It is possible that this graph is invalid, and an error is thrown.
Handle this by deleting the failed graph from the stats if this occurs.
2023-08-21 19:17:36 +10:00
psychedelicious
519bcb38c1
feat(ui): node delete, copy, paste
2023-08-21 19:17:36 +10:00
psychedelicious
567d46b646
feat(ui): delete key works on workflow editor
2023-08-21 19:17:36 +10:00
psychedelicious
030802295b
feat(ui): reset only specific nodes/cnet that use images
...
Previously if an image was used in nodes and you deleted it, it would reset all of node editor. Same for controlnet.
Now it only resets the specific nodes or controlnets that used that image.
2023-08-21 19:17:36 +10:00
psychedelicious
a495c8c156
feat(ui): misc cleanups
2023-08-21 19:17:36 +10:00
psychedelicious
ae6db67068
feat(ui): add width to mantine selects
2023-08-21 19:17:36 +10:00
psychedelicious
3d84e7756a
fix(nodes): fix field names
2023-08-21 19:17:36 +10:00
psychedelicious
98431b3de4
feat: add Scheduler
as field type
...
- update node schemas
- add `UIType.Scheduler`
- add field type to schema parser, input components
2023-08-21 19:17:36 +10:00
psychedelicious
210a3f9aa7
feat(ui): make mantine single selects *exactly* the same size as chakra ones
2023-08-21 19:17:36 +10:00
psychedelicious
9332ce639c
fix(ui): fix node mouse interactions
...
Add "nodrag", "nowheel" and "nopan" class names in interactable elements, as neeeded. This fixes the mouse interactions and also makes the node draggable from anywhere without needing shift.
Also fixes ctrl/cmd multi-select to support deselecting.
2023-08-21 19:17:36 +10:00
psychedelicious
84cf8bdc08
feat(ui): field context menu, add/remove from linear ui
2023-08-21 19:17:36 +10:00
psychedelicious
64a6aa0293
fix(ui): move BoardContextMenu
to use IAIContextMenu
2023-08-21 19:17:36 +10:00
psychedelicious
5ae14bffba
fix(ui): clear exposedFields when resetting graph
2023-08-21 19:17:36 +10:00
psychedelicious
0909812c84
chore: black
2023-08-21 19:17:15 +10:00
psychedelicious
66c0aea9e7
fix(nodes): removed duplicate node
2023-08-21 19:17:15 +10:00
Damian Stewart
2bcded78e1
add BlendInvocation
2023-08-21 19:17:15 +10:00
Sergey Borisov
beb3e5aeb7
Report correctly to compel if we want get pooled in future(affects blend computation)
2023-08-21 19:05:40 +10:00
Lincoln Stein
5b6069b916
blackify (again)
2023-08-20 16:06:01 -04:00