psychedelicious
8ebf2ddf15
fix(ui): fix t2i adapter dimensions error message
...
It now indicates the correct dimension of 64 (SD1.5) or 32 (SDXL) - before was hardcoded to 64.
2024-05-20 11:23:14 +10:00
psychedelicious
f4625c2671
feat(ui): add canvas objects to metadat a for all canvas graphs
2024-05-20 10:32:59 +10:00
psychedelicious
c94742bde6
feat(ui): add canvas objects to metadata when saving canvas to gallery
2024-05-20 10:32:59 +10:00
psychedelicious
a34faf0bd8
chore(ui): typegen
2024-05-20 10:32:59 +10:00
psychedelicious
ecfff6cb1e
feat(api): add metadata to upload route
...
Canvas images are saved by uploading a blob generated from the HTML canvas element. This means the existing metadata handling, inside the graph execution engine, is not available.
To save metadata to canvas images, we need to provide it when uploading that blob.
The upload route now has a `metadata` body param. If this is provided, we use it over any metadata embedded in the image.
2024-05-20 10:32:59 +10:00
psychedelicious
ba8bed6870
fix(ui): edge case resulting in no node templates when loading workflow, causing failure
...
Depending on the user behaviour and network conditions, it's possible that we could try to load a workflow before the invocation templates are available.
Fix is simple:
- Use the RTKQ query hook for openAPI schema in App.tsx
- Disable the load workflow buttons until w have templates parsed
2024-05-19 07:34:00 -07:00
psychedelicious
ca186bca61
fix(ui): missed node execution state for progress images
2024-05-19 20:14:01 +10:00
psychedelicious
e2f109807c
fix(ui): delete edges when their source or target no longer exists
2024-05-19 20:14:01 +10:00
psychedelicious
281bd31db2
feat(nodes): make ModelIdentifierInvocation a prototype
2024-05-19 20:14:01 +10:00
psychedelicious
cea1874e00
perf(ui): memoize WorkflowName selectors
2024-05-19 20:14:01 +10:00
psychedelicious
89b0e9e4de
feat(ui): use connection validationResults directly in components
2024-05-19 20:14:01 +10:00
psychedelicious
26d0d55d97
fix(ui): set nodeDragThreshold to prevent spurious position change events
2024-05-19 20:14:01 +10:00
psychedelicious
059c5586a4
perf(ui): ignore all no-op node and edge changes
2024-05-19 20:14:01 +10:00
psychedelicious
9ed5698aa8
fix(ui): do not remove exposed fields when updating workflows
2024-05-19 20:14:01 +10:00
psychedelicious
0b5696c5d4
feat(ui): remove nodeExclusivelySelected action
2024-05-19 20:14:01 +10:00
psychedelicious
a51142674a
tidy(ui): more succinct syntax for edge and node updates
2024-05-19 20:14:01 +10:00
psychedelicious
b8b671c0db
feat(ui): remove selectionDeleted action
2024-05-19 20:14:01 +10:00
psychedelicious
7cceafe0dd
feat(ui): remove selectionPasted action
2024-05-19 20:14:01 +10:00
psychedelicious
cbe32b647a
feat(ui): remove selectedAll action
2024-05-19 20:14:01 +10:00
psychedelicious
9a8e0842bb
feat(ui): remove nodeReplaced action
2024-05-19 20:14:01 +10:00
psychedelicious
1d7671298f
fix(ui): group edge selection actions
2024-05-19 20:14:01 +10:00
psychedelicious
e38d75c3dc
feat(ui): get rid of nodeAdded
2024-05-19 20:14:01 +10:00
psychedelicious
21fab9785a
feat(ui): tweak edge styling
2024-05-19 20:14:01 +10:00
psychedelicious
b3429553bb
fix(ui): collapsed edges selected state
2024-05-19 20:14:01 +10:00
psychedelicious
e480844042
fix(ui): edge styling
2024-05-19 20:14:01 +10:00
psychedelicious
26029108f7
feat(ui): rework node and edge mutation logic
...
Remove our DIY'd reducers, consolidating all node and edge mutations to use `edgesChanged` and `nodesChanged`, which are called by reactflow. This makes the API for manipulating nodes and edges less tangly and error-prone.
2024-05-19 20:14:01 +10:00
psychedelicious
504ac82077
fix(ui): duplicated edges when updating edge with lazy connect
2024-05-19 20:14:01 +10:00
psychedelicious
6b11740dda
chore(ui): knip
2024-05-19 20:14:01 +10:00
psychedelicious
a80e3448f5
feat(ui): rework pendingConnection
2024-05-19 20:14:01 +10:00
psychedelicious
4bda174eb9
tests(ui): coverage for getCollectItemType
2024-05-19 20:14:01 +10:00
psychedelicious
b1e28c2f2c
tests(ui): coverage for getFirstValidConnection
2024-05-19 20:14:01 +10:00
psychedelicious
83000a4190
feat(ui): rework getFirstValidConnection with new helpers
2024-05-19 20:14:01 +10:00
psychedelicious
c98205d0d7
tests(ui): candidate fields, getFirstValidConnection (wip)
2024-05-19 20:14:01 +10:00
psychedelicious
ce2ad5903c
feat(ui): extract logic for finding candidate fields to own function
2024-05-19 20:14:01 +10:00
psychedelicious
fe3980a369
tests(ui): add buildNode convenience wrapper for buildInvocationNode
2024-05-19 20:14:01 +10:00
psychedelicious
ea97ae5ae8
tidy(ui): extraneous vars in makeConnectionErrorSelector
2024-05-19 20:14:01 +10:00
psychedelicious
3605b6b1a3
fix(ui): handling for in-progress edge updates during conection validation
2024-05-19 20:14:01 +10:00
psychedelicious
fc31dddbf7
feat(ui): use new validateConnection
2024-05-19 20:14:01 +10:00
psychedelicious
6ad01d824d
feat(ui): add strict mode to validateConnection
2024-05-19 20:14:01 +10:00
psychedelicious
78f9f3ee95
feat(ui): better types for validateConnection
2024-05-19 20:14:01 +10:00
psychedelicious
972398d203
tests(ui): add iterate to test schema
2024-05-19 20:14:01 +10:00
psychedelicious
857889d1fa
tests(ui): coverage for getCollectItemType
2024-05-19 20:14:01 +10:00
psychedelicious
8074a802d6
tests(ui): coverage for validateConnectionTypes
2024-05-19 20:14:01 +10:00
psychedelicious
059d5a682c
tidy(ui): validateConnection code clarity
2024-05-19 20:14:01 +10:00
psychedelicious
00c2d8f95d
tidy(ui): areTypesEqual var names
2024-05-19 20:14:01 +10:00
psychedelicious
04a596179b
tests(ui): finish test cases for validateConnection
2024-05-19 20:14:01 +10:00
psychedelicious
3fcb2720d7
tests(ui): add tests for consolidated connection validation
2024-05-19 20:14:01 +10:00
psychedelicious
6f7160b9fd
fix(ui): call updateNodeInternals when making connections
2024-05-19 20:14:01 +10:00
psychedelicious
6b4e464d17
fix(ui): rework edge update logic
2024-05-19 20:14:01 +10:00
psychedelicious
9f7841a04b
tidy(ui): clean up addnodepopover hotkeys
2024-05-19 20:14:01 +10:00
psychedelicious
468644ab18
fix(ui): rebase conflict
2024-05-19 20:14:01 +10:00
psychedelicious
9d127fee6b
feat(ui): makeConnectionErrorSelector now creates a parameterized selector
2024-05-19 20:14:01 +10:00
psychedelicious
6658897210
tidy(ui): tidy connection validation functions and logic
2024-05-19 20:14:01 +10:00
psychedelicious
af7b194bec
chore(ui): lint
2024-05-19 20:14:01 +10:00
psychedelicious
de1ea50e6d
fix(ui): rebase resolution
2024-05-19 20:14:01 +10:00
psychedelicious
2680ef52c2
feat(nodes): add ModelIdentifierInvocation
...
This node allows a user to select _any_ model, outputting a `ModelIdentifierField` for that model.
2024-05-19 20:14:01 +10:00
psychedelicious
a012bb6e07
feat(ui): add ModelIdentifierField field type
...
This new field type accepts _any_ model. A field renderer lets the user select any available model.
2024-05-19 20:14:01 +10:00
psychedelicious
6a2c53f6c5
fix(ui): do not allow comparison between undefined original types
2024-05-19 20:14:01 +10:00
psychedelicious
2cbf7d9221
fix(ui): stupid ts
2024-05-19 20:14:01 +10:00
psychedelicious
fe7ed72c9c
feat(nodes): make all ModelIdentifierField
inputs accept connections
2024-05-19 20:14:01 +10:00
psychedelicious
85a5a7c47a
feat(ui): add originalType
to FieldType, improved connection validation
...
We now keep track of the original field type, derived from the python type annotation in addition to the override type provided by `ui_type`.
This makes `ui_type` work more like it sound like it should work - change the UI input component only.
Connection validation is extend to also check the original types. If there is any match between two fields' "final" or original types, we consider the connection valid.This change is backwards-compatible; there is no workflow migration needed.
2024-05-19 20:14:01 +10:00
psychedelicious
af3fd26d4e
fix(ui): bug when clearing processor
...
When clearing the processor config, we shouldn't re-process the image. This logic wasn't handled correctly, but coincidentally the bug didn't cause a user-facing issue.
Without a config, we had a runtime error when trying to build the node for the processor graph and the listener failed.
So while we didn't re-process the image, it was because there was an error, not because the logic was correct.
Fix this by bailing if there is no image or config.
2024-05-19 07:25:48 +10:00
psychedelicious
5127fd6320
fix(ui): control adapter autoprocess jank
...
If you change the control model and the new model has the same default processor, we would still re-process the image, even if there was no need to do so.
With this change, if the image and processor config are unchanged, we bail out.
2024-05-19 07:25:48 +10:00
Lincoln Stein
987ee704a1
Merge branch 'main' into lstein/feat/simple-mm2-api
2024-05-17 22:54:03 -04:00
Lincoln Stein
d968c6f379
refactor multifile download code
2024-05-17 22:29:19 -04:00
psychedelicious
17e1fc5254
chore(app): ruff
2024-05-18 09:21:45 +10:00
maryhipp
84e031edc2
add nulable project also
2024-05-18 09:21:45 +10:00
maryhipp
b6b7e737e0
ruff
2024-05-18 09:21:45 +10:00
maryhipp
5f3e7afd45
add nullable user to invocation error events
2024-05-18 09:21:45 +10:00
psychedelicious
b0cfca9d24
fix(app): pass image metadata as stringified json
2024-05-18 09:04:37 +10:00
psychedelicious
985ef89825
fix(app): type annotations in images service
2024-05-18 09:04:37 +10:00
psychedelicious
5928ade5fd
feat(app): simplified create image API
...
Graph, metadata and workflow all take stringified JSON only. This makes the API consistent and means we don't need to do a round-trip of pydantic parsing when handling this data.
It also prevents a failure mode where an uploaded image's metadata, workflow or graph are old and don't match the current schema.
As before, the frontend does strict validation and parsing when loading these values.
2024-05-18 09:04:37 +10:00
psychedelicious
93ebc175c6
fix(app): retain graph in metadata when uploading images
2024-05-18 09:04:37 +10:00
psychedelicious
386d552493
fix(ui): loading workflows from file
2024-05-18 09:04:37 +10:00
psychedelicious
799cf06d20
fix(ui): loading library workflows
2024-05-18 09:04:37 +10:00
psychedelicious
922716d2ab
feat(ui): store graph in image metadata
...
The previous super-minimal implementation had a major issue - the saved workflow didn't take into account batched field values. When generating with multiple iterations or dynamic prompts, the same workflow with the first prompt, seed, etc was stored in each image.
As a result, when the batch results in multiple queue items, only one of the images has the correct workflow - the others are mismatched.
To work around this, we can store the _graph_ in the image metadata (alongside the workflow, if generated via workflow editor). When loading a workflow from an image, we can choose to load the workflow or the graph, preferring the workflow.
Internally, we need to update images router image-saving services. The changes are minimal.
To avoid pydantic errors deserializing the graph, when we extract it from the image, we will leave it as stringified JSON and let the frontend's more sophisticated and flexible parsing handle it. The worklow is also changed to just return stringified JSON, so the API is consistent.
2024-05-18 09:04:37 +10:00
psychedelicious
66fc110b64
Revert "feat(ui): store workflow in generation tab images"
...
This reverts commit c9c4190fb45696088207b0ac3c69c2795d7f9694.
2024-05-18 09:04:37 +10:00
psychedelicious
822f1e1f06
feat(ui): store workflow in generation tab images
2024-05-18 09:04:37 +10:00
psychedelicious
5d60c3c8e1
fix(ui): jank when editing field title
2024-05-18 08:46:40 +10:00
psychedelicious
4e21d01c7f
feat(ui): dim field name when connected
2024-05-18 08:46:40 +10:00
psychedelicious
6b7b0b3777
fix(ui): do not rearrange fields when connection/disconnecting
2024-05-18 08:46:40 +10:00
psychedelicious
07feb5ba07
Revert "feat(ui): SDXL clip skip"
...
This reverts commit 40b4fa7238
.
2024-05-17 15:08:04 -07:00
psychedelicious
a18d7adad4
fix(ui): allow image dims multiple of 32 with SDXL and T2I adapter
...
See https://github.com/invoke-ai/InvokeAI/pull/6342#issuecomment-2109912452 for discussion.
2024-05-17 23:38:54 +10:00
psychedelicious
32dff2c4e3
feat(ui): copy/paste input edges when copying node
...
- Copy edges to selected nodes on copy
- If pasted with `ctrl/meta-shift-v`, also paste the input edges
2024-05-17 23:12:29 +10:00
psychedelicious
575ecb4028
feat(ui): prevent connections to direct-only inputs
2024-05-17 22:08:40 +10:00
psychedelicious
ad8778df6c
feat(ui): extract node execution state from nodesSlice
...
This state is ephemeral and not undoable.
2024-05-17 13:24:23 +10:00
psychedelicious
d2f5103f9f
fix(ui): ignore actions from other slices in nodesSlice history
2024-05-17 13:24:23 +10:00
psychedelicious
dd42a56084
tests(ui): fix parseSchema test fixture
...
The schema fixture wasn't formatted quite right - doesn't affect the test but still.
2024-05-17 13:24:23 +10:00
psychedelicious
23ac340a3f
tests(ui): add test for parseSchema
2024-05-17 13:24:23 +10:00
psychedelicious
6791b4eaa8
chore(ui): lint
2024-05-17 13:24:23 +10:00
psychedelicious
a8b042177d
feat(ui): connection validation for collection items types
2024-05-17 13:24:23 +10:00
psychedelicious
76825f4261
fix(ui): allow collect node inputs to connect to multiple fields when using lazy connect
2024-05-17 13:24:23 +10:00
psychedelicious
78cb4d75ad
fix(ui): use elevateEdgesOnSelect
so last-selected edge is the interactable one when updating edges
2024-05-17 13:24:23 +10:00
psychedelicious
a18bbac262
fix(ui): jank interaction between edge update and autoconnect
2024-05-17 13:24:23 +10:00
psychedelicious
9ff5596963
feat(ui): hide values for connected fields
2024-05-17 13:24:23 +10:00
psychedelicious
8ea596b1e9
fix(ui): janky editable field title
...
- Do not allow whitespace-only field titles
- Make only preview text trigger editable
- Tooltip over the preview, not the whole "row"
2024-05-17 13:24:23 +10:00
psychedelicious
e3a143eaed
fix(ui): fix jank w/ stale connections
2024-05-17 13:24:23 +10:00
psychedelicious
c359ab6d9b
fix(ui): fix dependency tracking for copy/paste hotkeys
2024-05-17 13:24:23 +10:00
psychedelicious
dbfaa07e03
feat(ui): add checks for undo/redo actions
2024-05-17 13:24:23 +10:00
psychedelicious
7f78fe7a36
feat(ui): move viewport state to nanostores
2024-05-17 13:24:23 +10:00
psychedelicious
6cf5b402c6
feat(ui): remove extraneous selectedEdges and selectedNodes state
2024-05-17 13:24:23 +10:00
psychedelicious
b0c7c7cb47
feat(ui): remove remaining extraneous state from nodes slice
2024-05-17 13:24:23 +10:00
psychedelicious
4d68cd8dbb
feat(ui): recreate edge auto-add-node logic
2024-05-17 13:24:23 +10:00
psychedelicious
2c1fa30639
feat(ui): recreate edge autoconnect logic
2024-05-17 13:24:23 +10:00
psychedelicious
708c68413d
tidy(ui): add type for templates
2024-05-17 13:24:23 +10:00
psychedelicious
1d884fb794
feat(ui): move invocation templates out of redux
...
Templates are stored in nanostores. All hooks, selectors, etc are reworked to reference the nanostore.
2024-05-17 13:24:23 +10:00
psychedelicious
f6a44681a8
feat(ui): move invocation templates out of redux (wip)
2024-05-17 13:24:23 +10:00
psychedelicious
d4df312300
feat(ui): move nodes copy/paste out of slice
2024-05-17 13:24:23 +10:00
psychedelicious
9c0d44b412
feat(ui): split workflow editor settings to separate slice
...
We need the undoable slice to be only undoable state - settings are not undoable.
2024-05-17 13:24:23 +10:00
psychedelicious
27826369f0
feat(ui): make nodesSlice undoable
2024-05-17 13:24:23 +10:00
Lincoln Stein
2dae5eb7ad
more refactoring; HF subfolders not working
2024-05-16 22:26:18 -04:00
H0onnn
31d8b50276
[Refactor] Update min and max values for LoRACard weight input
2024-05-17 10:38:26 +10:00
psychedelicious
40b4fa7238
feat(ui): SDXL clip skip
...
Uses the same CLIP Skip value for both CLIP1 and CLIP2.
Adjusted SDXL CLIP Skip min/max/markers to be within the valid range (0 to 11).
Closes #4583
2024-05-16 07:49:30 -04:00
Lincoln Stein
911a24479b
add tests for model install file size reporting
2024-05-16 07:18:33 -04:00
psychedelicious
f489c818f1
docs(ui): add comments to nsfw & watermarker helpers
2024-05-15 14:09:44 +10:00
psychedelicious
af477fa295
tidy(ui): remove unused modelLoader from refiner helper
2024-05-15 14:09:44 +10:00
psychedelicious
0ff0290735
tidy(ui): use Invocation<> helper type in canvas graph builders, elsewhere
2024-05-15 14:09:44 +10:00
psychedelicious
67dbe6d949
tidy(ui): use Invocation<> helper type in OG control adapters
2024-05-15 14:09:44 +10:00
psychedelicious
4c3c2297b9
tidy(ui): organise graph builder files
2024-05-15 14:09:44 +10:00
psychedelicious
cadea55521
tidy(ui): organise graph builder files
2024-05-15 14:09:44 +10:00
psychedelicious
c8f30b1392
tidy(ui): move testing-only types to test file
2024-05-15 14:09:44 +10:00
psychedelicious
3d14a98abf
tidy(ui): use Invocation<> type in control layers types
2024-05-15 14:09:44 +10:00
psychedelicious
77024bfca7
fix(ui): fix sdxl generation mode metadata
2024-05-15 14:09:44 +10:00
psychedelicious
4a1c3786a1
tidy(ui): organise CL graph builder
2024-05-15 14:09:44 +10:00
psychedelicious
b239891986
tidy(ui): clean up base model handling in graph builder
2024-05-15 14:09:44 +10:00
psychedelicious
9fb03d43ff
tests(ui): get coverage to 100% for graph builder
2024-05-15 14:09:44 +10:00
psychedelicious
bdc59786bd
tidy(ui): clean up graph builder helper functions
2024-05-15 14:09:44 +10:00
psychedelicious
fb6e926500
tidy(ui): remove extraneous graph validate calls
2024-05-15 14:09:44 +10:00
psychedelicious
48ccd63dba
feat(ui): use integrated metadata helper
2024-05-15 14:09:44 +10:00
psychedelicious
ee647a05dc
feat(ui): move metadata util to graph class
...
No good reason to have it be separate. A bit cleaner this way.
2024-05-15 14:09:44 +10:00
psychedelicious
154b52ca4d
docs(ui): update docstrings for Graph builder
2024-05-15 14:09:44 +10:00
psychedelicious
5dd460c3ce
chore(ui): knip
2024-05-15 14:09:44 +10:00
psychedelicious
4897ce2a13
tidy(ui): remove unused files
2024-05-15 14:09:44 +10:00
psychedelicious
5425526d50
feat(ui): use graph builder for generation tab sdxl
2024-05-15 14:09:44 +10:00
psychedelicious
5a4b050e66
feat(ui): use asserts in graph builder
2024-05-15 14:09:44 +10:00
psychedelicious
8d39520232
feat(ui): port NSFW and watermark nodes to graph builder
2024-05-15 14:09:44 +10:00
psychedelicious
04d12a1e98
feat(ui): add HRF graph builder helper
2024-05-15 14:09:44 +10:00
psychedelicious
39aa70963b
docs(ui): update docstrings for addGenerationTabSeamless
2024-05-15 14:09:44 +10:00
psychedelicious
5743254a41
fix(ui): use arrays for edge methods
2024-05-15 14:09:44 +10:00
psychedelicious
c538ffea26
tidy(ui): remove console.log
2024-05-15 14:09:44 +10:00
psychedelicious
e8d3a7c870
feat(ui): support multiple fields for getEdgesTo
, getEdgesFrom
, deleteEdgesTo
, deleteEdgesFrom
2024-05-15 14:09:44 +10:00
psychedelicious
2be66b1546
feat(ui): add deleteNode
and getEdges
to graph util
2024-05-15 14:09:44 +10:00
psychedelicious
76e181fd44
build(ui): add eslint no-console
rule
2024-05-15 14:09:44 +10:00
psychedelicious
b5d42fbc66
tidy(ui): remove unused graph helper
2024-05-15 14:09:44 +10:00
psychedelicious
b463cd763e
tidy(ui): remove extraneous is_intermediate
node fields
2024-05-15 14:09:44 +10:00
psychedelicious
eb320df41d
feat(ui): use new lora loaders, simplify VAE loader, seamless
2024-05-15 14:09:44 +10:00
psychedelicious
de1869773f
chore(ui): typegen
2024-05-15 14:09:44 +10:00
psychedelicious
ef89c7e537
feat(nodes): add LoRASelectorInvocation, LoRACollectionLoader, SDXLLoRACollectionLoader
...
These simplify loading multiple LoRAs. Instead of requiring chained lora loader nodes, configure each LoRA (model & weight) with a selector, collect them, then send the collection to the collection loader to apply all of the LoRAs to the UNet/CLIP models.
The collection loaders accept a single lora or collection of loras.
2024-05-15 14:09:44 +10:00
psychedelicious
008645d386
fix(ui): work through merge conflicts (wip)
2024-05-15 14:09:44 +10:00
psychedelicious
f8042ffb41
WIP, sd1.5 works
2024-05-15 14:09:44 +10:00
psychedelicious
dbe22be598
feat(ui): use graph utils in builders (wip)
2024-05-15 14:09:44 +10:00
psychedelicious
8f6078d007
feat(ui): refine graph building util
...
Simpler types and API surface.
2024-05-15 14:09:44 +10:00
psychedelicious
4020bf47e2
feat(ui): add MetadataUtil class
...
Provides methods for manipulating a graph's metadata.
2024-05-15 14:09:44 +10:00
psychedelicious
9d685da759
feat(ui): add stateful Graph class
...
This stateful class provides abstractions for building a graph. It exposes graph methods like adding and removing nodes and edges.
The methods are documented, tested, and strongly typed.
2024-05-15 14:09:44 +10:00
psychedelicious
e3289856c0
feat(ui): add and use type helpers for invocations and invocation outputs
2024-05-15 14:09:44 +10:00
psychedelicious
47b8153728
build(ui): enable TS strictPropertyInitialization
...
https://www.typescriptlang.org/tsconfig/#strictPropertyInitialization
2024-05-15 14:09:44 +10:00
psychedelicious
7901e4c082
chore(ui): typegen
2024-05-15 14:09:44 +10:00
psychedelicious
18b0977a31
feat(api): add InvocationOutputMap to OpenAPI schema
...
This dynamically generated schema object maps node types to their pydantic schemas. This makes it much simpler to infer node types in the UI.
2024-05-15 14:09:44 +10:00
psychedelicious
fc6b214470
tests(ui): set up vitest coverage
2024-05-15 14:09:44 +10:00
blessedcoolant
e22211dac0
fix: Fix Outpaint not applying the expanded mask correctly
...
In unscaled situations
2024-05-15 13:59:01 +10:00
Lincoln Stein
f29c406fed
refactor model_install to work with refactored download queue
2024-05-13 22:49:15 -04:00
Lincoln Stein
287c679f7b
clean up type checking for single file and multifile download job callbacks
2024-05-13 18:31:40 -04:00
psychedelicious
2a9cea6689
Update invokeai_version.py
...
Bump to v4.2.1
2024-05-14 07:37:02 +10:00
psychedelicious
93da75209c
feat(nodes): use new blur_if_nsfw
method
2024-05-14 07:23:38 +10:00
psychedelicious
9c819f0fd8
fix(nodes): fix nsfw checker model download
2024-05-14 07:23:38 +10:00
Васянатор
eef6fcf286
translationBot(ui): update translation (Russian)
...
Currently translated at 100.0% (1210 of 1210 strings)
Co-authored-by: Васянатор <ilabulanov339@gmail.com>
Translate-URL: https://hosted.weblate.org/projects/invokeai/web-ui/ru/
Translation: InvokeAI/Web UI
2024-05-14 07:15:12 +10:00
Riccardo Giovanetti
e375d9f787
translationBot(ui): update translation (Italian)
...
Currently translated at 98.5% (1192 of 1210 strings)
translationBot(ui): update translation (Italian)
Currently translated at 98.5% (1192 of 1210 strings)
translationBot(ui): update translation (Italian)
Currently translated at 98.5% (1192 of 1210 strings)
translationBot(ui): update translation (Italian)
Currently translated at 98.5% (1192 of 1210 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-05-14 07:15:12 +10:00
gallegonovato
ab18174774
translationBot(ui): update translation (Spanish)
...
Currently translated at 31.3% (379 of 1208 strings)
Co-authored-by: gallegonovato <fran-carro@hotmail.es>
Translate-URL: https://hosted.weblate.org/projects/invokeai/web-ui/es/
Translation: InvokeAI/Web UI
2024-05-14 07:15:12 +10:00
Hosted Weblate
9265841384
translationBot(ui): update translation files
...
Updated by "Cleanup translation files" hook in Weblate.
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-05-14 07:15:12 +10:00
Riccardo Giovanetti
c5fd08125d
translationBot(ui): update translation (Italian)
...
Currently translated at 98.5% (1192 of 1210 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-05-14 07:15:12 +10:00
Васянатор
11d88dae7f
translationBot(ui): update translation (Russian)
...
Currently translated at 100.0% (1210 of 1210 strings)
Co-authored-by: Васянатор <ilabulanov339@gmail.com>
Translate-URL: https://hosted.weblate.org/projects/invokeai/web-ui/ru/
Translation: InvokeAI/Web UI
2024-05-14 07:15:12 +10:00
Hosted Weblate
3b495659b0
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-05-14 07:15:12 +10:00
Riccardo Giovanetti
15c9a3a4b6
translationBot(ui): update translation (Italian)
...
Currently translated at 98.3% (1189 of 1209 strings)
translationBot(ui): update translation (Italian)
Currently translated at 98.3% (1189 of 1209 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-05-14 07:15:12 +10:00
flower_elf
60e77e4ed6
translationBot(ui): update translation (Chinese (Simplified))
...
Currently translated at 77.8% (922 of 1185 strings)
Co-authored-by: flower_elf <miaoju2005@gmail.com>
Translate-URL: https://hosted.weblate.org/projects/invokeai/web-ui/zh_Hans/
Translation: InvokeAI/Web UI
2024-05-14 07:15:12 +10:00
Васянатор
fa832a8ac6
translationBot(ui): update translation (Russian)
...
Currently translated at 100.0% (1209 of 1209 strings)
translationBot(ui): update translation (Russian)
Currently translated at 100.0% (1209 of 1209 strings)
translationBot(ui): update translation (Russian)
Currently translated at 100.0% (1188 of 1188 strings)
translationBot(ui): update translation (Russian)
Currently translated at 100.0% (1185 of 1185 strings)
Co-authored-by: Васянатор <ilabulanov339@gmail.com>
Translate-URL: https://hosted.weblate.org/projects/invokeai/web-ui/ru/
Translation: InvokeAI/Web UI
2024-05-14 07:15:12 +10:00
Hosted Weblate
f7834d7d59
translationBot(ui): update translation files
...
Updated by "Cleanup translation files" hook in Weblate.
translationBot(ui): update translation files
Updated by "Cleanup translation files" hook in Weblate.
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-05-14 07:15:12 +10:00
Alexander Eichhorn
63d7461510
translationBot(ui): update translation (German)
...
Currently translated at 71.9% (839 of 1166 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-05-14 07:15:12 +10:00
Васянатор
1de704160e
translationBot(ui): update translation (Russian)
...
Currently translated at 97.3% (1154 of 1185 strings)
translationBot(ui): update translation (Russian)
Currently translated at 100.0% (1174 of 1174 strings)
translationBot(ui): update translation (Russian)
Currently translated at 100.0% (1173 of 1173 strings)
translationBot(ui): update translation (Russian)
Currently translated at 100.0% (1166 of 1166 strings)
translationBot(ui): update translation (Russian)
Currently translated at 100.0% (1165 of 1165 strings)
translationBot(ui): update translation (Russian)
Currently translated at 100.0% (1149 of 1149 strings)
translationBot(ui): update translation (Russian)
Currently translated at 100.0% (1147 of 1147 strings)
Co-authored-by: Васянатор <ilabulanov339@gmail.com>
Translate-URL: https://hosted.weblate.org/projects/invokeai/web-ui/ru/
Translation: InvokeAI/Web UI
2024-05-14 07:15:12 +10:00
Riccardo Giovanetti
b118a2565c
translationBot(ui): update translation (Italian)
...
Currently translated at 96.0% (1138 of 1185 strings)
translationBot(ui): update translation (Italian)
Currently translated at 98.4% (1156 of 1174 strings)
translationBot(ui): update translation (Italian)
Currently translated at 98.3% (1155 of 1174 strings)
translationBot(ui): update translation (Italian)
Currently translated at 98.4% (1129 of 1147 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-05-14 07:15:12 +10:00
Lincoln Stein
0bf14c2830
add multifile_download() method to download service
2024-05-12 20:14:00 -06:00
psychedelicious
eb166baafe
fix(ui): invoke button shows loading while queueing
...
Make the Invoke button show a loading spinner while queueing.
The queue mutations need to be awaited else the `isLoading` state doesn't work as expected. I feel like I should understand why, but I don't...
2024-05-13 11:53:29 +10:00
psychedelicious
818d37f304
fix(api): retain cover image when converting model to diffusers
...
We need to retrieve and re-save the image, because a conversion to diffusers creates a new model record, with a new key.
See: https://old.reddit.com/r/StableDiffusion/comments/1cnx40d/invoke_42_control_layers_regional_guidance_w_text/l3bv152/
2024-05-13 08:46:07 +10:00
psychedelicious
9cdb801c1c
fix(api): add cover image to update model response
...
Fixes a bug where the image _appears_ to be reset when editing a model.
See: https://old.reddit.com/r/StableDiffusion/comments/1cnx40d/invoke_42_control_layers_regional_guidance_w_text/l3asdej/
2024-05-13 08:46:07 +10:00
blessedcoolant
6ec3dc0c0d
Merge branch 'main' into psyche/fix/ui/cl-listening-layers
2024-05-13 04:05:35 +05:30
blessedcoolant
93efeafe30
Merge branch 'main' into psyche/fix/ui/canvas-layer-translations
2024-05-13 04:02:23 +05:30
psychedelicious
124d49f35e
fix(ui): use translations for canvas layer select
2024-05-13 08:30:18 +10:00
blessedcoolant
52d8efa892
Merge branch 'main' into psyche/fix/ui/depth-anything-select
2024-05-13 04:00:07 +05:30
psychedelicious
4ea8416c68
fix(ui): use pluralization for invoke button tooltip
2024-05-13 08:29:31 +10:00
psychedelicious
8dd0bfb068
feat(ui): use new model type grouping for control adapters in control layers
2024-05-13 08:29:31 +10:00
psychedelicious
6ff1c7d541
feat(ui): add group by base & type to useGroupedModelCombobox hook
...
This allows comboboxes for models to have more granular groupings. For example, Control Adapter models can be grouped by base model & model type.
Before:
- `SD-1`
- `SDXL`
After:
- `SD-1 / ControlNet`
- `SD-1 / T2I Adapter`
- `SDXL / ControlNet`
- `SDXL / T2I Adapter`
2024-05-13 08:29:31 +10:00
psychedelicious
19f5a9c3a9
feat(ui): better invoke button checks
...
- Improved/more thorough checking before invoking for control layers
- Improved styling for the tooltip
2024-05-13 08:29:31 +10:00
psychedelicious
d9ce9c62ac
feat(ui): disable invoke button when t2i adapter used w/ image dims that are not multiples of 64
2024-05-13 08:29:31 +10:00
blessedcoolant
cdc468a38c
Merge branch 'main' into psyche/fix/ui/depth-anything-select
2024-05-13 03:57:47 +05:30
psychedelicious
2656f13a4a
fix(ui): CA processor cancellation
...
When a control adapter processor config is changed, if we were already processing an image, that batch is immediately canceled. This prevents the processed image from getting stuck in a weird state if you change or reset the processor at the right (err, wrong?) moment.
- Update internal state for control adapters to track processor batches, instead of just having a flag indicating if the image is processing. Add a slice migration to not break the user's existing app state.
- Update preprocessor listener with more sophisticated logic to handle canceling the batch and resetting the processed image when the config changes or is reset.
- Fixed error handling that erroneously showed "failed to queue graph" errors when an active listener instance is canceled, need to check the abort signal.
2024-05-13 08:23:02 +10:00
blessedcoolant
da61396b1c
cleanup: seamless unused older code cleanup
2024-05-13 08:11:08 +10:00
blessedcoolant
6c9fb617dc
fix: fix seamless
2024-05-13 08:11:08 +10:00
psychedelicious
5dd73fe53e
fix(ui): jank in depthanything model size select
2024-05-10 09:52:30 +10:00
psychedelicious
e6793be465
fix(ui): disable listening on CA and II layers
...
Closes #6331
2024-05-10 06:42:53 +10:00
psychedelicious
0848cb8ebd
Update invokeai_version.py
2024-05-09 08:01:40 -04:00
psychedelicious
1b777bb972
Revert "feat(ui): negative prompt boxes are italicized"
...
This reverts commit 49c4704379
.
2024-05-09 07:52:52 -04:00
psychedelicious
029ee90351
docs(ui): add comment & TODO for konva bug
2024-05-09 07:52:52 -04:00
psychedelicious
2f9a064d48
feat(ui): ip adapter layers are selectable
...
This is largely an internal change, and it should have been this way from the start - less tip-toeing around layer types. The user-facing change is when you click an IP Adapter layer, it is highlighted. That's it.
2024-05-09 07:52:52 -04:00
psychedelicious
b180666497
feat(ui): disable spellcheck on prompt boxes
...
These are almost guaranteed to have non-english words - disable the spellcheck to prevent red squigglies.
2024-05-09 07:52:52 -04:00
psychedelicious
4740cd4f64
feat(ui): add "global" to global prompt placeholders
2024-05-09 07:52:52 -04:00
psychedelicious
8b51298ba1
feat(ui): negative prompt boxes are italicized
2024-05-09 07:52:52 -04:00
psychedelicious
1533429e54
feat(ui): optimized empty mask logic
...
Turns out, it's more efficient to just use the bbox logic for empty mask calculations. We already track if if the bbox needs updating, so this calculation does minimal work.
The dedicated calculation wasn't able to use the bbox tracking so it ran far more often than the bbox calculation.
Removed the "fast" bbox calculation logic, bc the new logic means we are continually updating the bbox in the background - not only when the user switches to the move tool and/or selects a layer.
The bbox calculation logic is split out from the bbox rendering logic to support this.
Result - better perf overall, with the empty mask handling retained.
2024-05-09 07:52:52 -04:00
psychedelicious
fc000214a5
feat(ui): check for transparency and clear masks if no pixel data
...
Mask vector data includes additive (brush, rect) shapes and subtractive (eraser) shapes. A different composite operation is used to draw a shape, depending on whether it is additive or subtractive.
This means that a mask may have vector objects, but once rendered, is _visually_ empty (fully transparent). The only way determine if a mask is visually empty is to render it and check every pixel.
When we generate and save layer metadata, these fully erased masks are still used. Generating with an empty mask is a no-op in the backend, so we want to avoid this and not pollute graphs/metadata.
Previously, we did that pixel-based when calculating the bbox, which we only did when using the move tool, and only for the selected layer.
This change introduces a simpler function to check if a mask is transparent, and if so, deletes all its objects to reset it. This allows us skip these no-op layers entirely.
This check is debounced to 300 ms, trailing edge only.
2024-05-09 07:52:52 -04:00
psychedelicious
f631aea4ee
fix(ui): skip RG layers with no mask
...
These do not need to be added to the graph or metadata, as they are no-ops on the backend.
2024-05-09 07:52:52 -04:00
psychedelicious
32f4c1f966
fix(ui): memoize mouse event handlers
...
This prevents resetting the stage event handlers on every frame. Whoops!
2024-05-09 07:52:52 -04:00
psychedelicious
adebe639e3
tidy(ui): remove errant console.logs
2024-05-09 07:52:52 -04:00
psychedelicious
44280ed472
fix(ui): layer recall uses fresh ids
...
When layer metadata is stored, the layer IDs are included. When recalling the metadata, we need to assign fresh IDs, else we can end up with multiple layers with the same ID, which of course causes all sorts of issues.
2024-05-09 07:52:52 -04:00
psychedelicious
cec8840038
fix(ui): handle disabled RG layers
...
Was missing a check for `layer.isEnabled`.
2024-05-09 07:52:52 -04:00
Lincoln Stein
b48d4a049d
bad implementation of diffusers folder download
2024-05-08 21:21:01 -07:00
psychedelicious
fc7f484935
feat(ui): add data-testid
s to control layers components:
...
- Add Layer Menu Button: `control-layers-add-layer-menu-button`
- Delete All Layers Button: `control-layers-delete-all-layers-button`
- CL Layer List: `control-layers-layer-list`
- CL Canvas: `control-layers-canvas`
- Toggle Metadata Button: `toggle-show-metadata-button`
- Toggle Progress Button: `toggle-show-progress-button`
- Toggle Viewer Menu Button: `toggle-viewer-menu-button`
- Settings Tab Button: `generation-tab-settings-tab-button`
- Control Layers Tab Button: `generation-tab-control-layers-tab-button`
2024-05-09 07:03:13 +10:00
psychedelicious
1aa7cd57c2
feat(ui): add invert brush scroll checkbox to control layers settings
2024-05-09 07:03:13 +10:00
psychedelicious
722a91aedb
fix(ui): canvas toolbar centering
2024-05-09 07:03:13 +10:00
Mary Hipp
03c24ca9cb
lint fix
2024-05-08 15:49:37 -04:00
Mary Hipp
5820579237
switch to generation tab when someone sends to img2img
2024-05-08 15:49:37 -04:00
psychedelicious
6c768bfe7e
fix(ui): viewer toggle prevents progress toggle interaction
2024-05-08 08:39:18 -04:00
psychedelicious
5ca794b94f
feat(ui): show progress toggle on control layers toolbar
2024-05-08 08:39:18 -04:00
psychedelicious
d20695260d
feat(ui): open viewer on enqueue from generation tab
2024-05-08 08:39:18 -04:00
psychedelicious
d8557d573b
Revert "feat(ui): extend zod with a is
typeguard` method"
...
This reverts commit 0f45933791
.
2024-05-08 08:39:18 -04:00
psychedelicious
6c1fd584d2
feat(ui): pre-CL control adapter metadata recall
2024-05-08 08:39:18 -04:00
psychedelicious
e8e764be20
feat(ui): revise image viewer
...
- Viewer only exists on Generation tab
- Viewer defaults to open
- When clicking the Control Layers tab on the left panel, close the viewer (i.e. open the CL editor)
- Do not switch to editor when adding layers (this is handled by clicking the Control Layers tab)
- Do not open viewer when single-clicking images in gallery
- _Do_ open viewer when _double_-clicking images in gallery
- Do not change viewer state when switching between app tabs (this no longer makes sense; the viewer only exists on generation tab)
- Change the button to a drop down menu that states what you are currently doing, e.g. Viewing vs Editing
2024-05-08 08:39:18 -04:00
psychedelicious
e8023c44b0
chore(ui): lint
2024-05-08 08:39:18 -04:00
psychedelicious
a3a6449786
feat(ui): versioned control layers metadata
2024-05-08 08:39:18 -04:00
psychedelicious
e9d2ffe3d7
fix(ui): process control image on recall if no processed image
2024-05-08 08:39:18 -04:00
psychedelicious
23ad6fb730
feat(ui): handle missing images/models when recalling control layers
2024-05-08 08:39:18 -04:00
psychedelicious
00f36cb491
tidy(ui): clean up control layers graph builder
2024-05-08 08:39:18 -04:00
psychedelicious
3f489c92c8
feat(ui): handle initial image layers in control layers helper
2024-05-08 08:39:18 -04:00
psychedelicious
f147f99bef
feat(ui): better metadata labels for layers
2024-05-08 08:39:18 -04:00
psychedelicious
6107e3d281
fix(ui): fix zControlAdapterBase schema weight
2024-05-08 08:39:18 -04:00
psychedelicious
de33d6e647
fix(ui): metadata "Layers" -> "Layer"
2024-05-08 08:39:18 -04:00
psychedelicious
e36e5871a1
chore(ui): lint
2024-05-08 08:39:18 -04:00
psychedelicious
8b25c1a62e
tidy(ui): remove extraneous metadata handlers
2024-05-08 08:39:18 -04:00
psychedelicious
dfbd7eb1cf
feat(ui): individual layer recall
2024-05-08 08:39:18 -04:00
psychedelicious
b43b2714cc
feat(ui): add fracturedjsonjs
to pretty-serialize objects
...
In use on the metadata viewer - makes it sooo much easier on the eyes.
2024-05-08 08:39:18 -04:00
psychedelicious
e537de2f6d
feat(ui): layers recall
...
This still needs some finessing - needs logic depending on the tab...
2024-05-08 08:39:18 -04:00
psychedelicious
ccd399e277
feat(ui): add getIsVisible
to metadata handlers
2024-05-08 08:39:18 -04:00
psychedelicious
bfad814862
fix(ui): fix IPAdapterConfigV2 schema weight
2024-05-08 08:39:18 -04:00
psychedelicious
6e8b7f9421
feat(ui): write layers to metadata
2024-05-08 08:39:18 -04:00
psychedelicious
e47629cbe7
feat(ui): add zod schema for layers array
2024-05-08 08:39:18 -04:00
psychedelicious
e840de27ed
feat(ui): extend zod with a is
typeguard` method
...
Feels dangerous, but it's very handy.
2024-05-08 08:39:18 -04:00
psychedelicious
8342f32f2e
refactor(ui): rewrite all types as zod schemas
...
This change prepares for safe metadata recall.
2024-05-08 08:39:18 -04:00
psychedelicious
a7aa529b99
tidy(ui): "imageName" -> "name"
2024-05-08 08:39:18 -04:00
psychedelicious
4adc592657
feat(ui): move strength to init image layer
...
This further splits the control layers state into its own thing.
2024-05-07 11:02:16 +10:00
psychedelicious
e8d60e8d83
fix(ui): image metadata viewer stuck when spamming hotkey
2024-05-07 11:02:16 +10:00
psychedelicious
886f5c90a3
feat(ui): move img2img strength out of advanced on canvas
2024-05-07 11:02:16 +10:00
psychedelicious
5e684c11f1
Update invokeai_version.py
2024-05-07 09:09:10 +10:00
psychedelicious
72ce239592
revert(ui): remove floating viewer
...
There are unresolved platform-specific issues with this component, and its utility is debatable.
Should be easy to just revert this commit to add it back in the future if desired.
2024-05-06 19:00:07 -04:00
psychedelicious
a826f8f8c5
fix(ui): show total layer count in control layers tab
2024-05-06 19:00:07 -04:00
psychedelicious
b6c19a8e47
feat(ui): close viewer when adding a RG layer
2024-05-06 19:00:07 -04:00
psychedelicious
67d6cf19c6
fix(ui): switch to viewer if auto-switch is enabled
2024-05-06 19:00:07 -04:00
psychedelicious
a9bf651c69
chore(ui): bump all deps
2024-05-06 19:00:07 -04:00
psychedelicious
3bd5d9a8e4
fix(ui): memoize FloatingImageViewer
...
Maybe this will fix @JPPhoto's issue?
2024-05-06 19:00:07 -04:00
psychedelicious
6249982d82
fix(ui): stuck viewer when spamming toggle
...
There are a number of bugs with `framer-motion` that can result in sync issues with AnimatePresence and the conditionally rendered component.
You can see this if you rapidly click an accordion, occasionally it gets out of sync and is closed when it should be open.
This is a bigger problem with the viewer where the user may hold down the `z` key. It's trivial to get it to lock up.
For now, just remove the animation entirely.
Upstream issues for reference:
https://github.com/framer/motion/issues/2023
https://github.com/framer/motion/issues/2618
https://github.com/framer/motion/issues/2554
2024-05-06 19:00:07 -04:00
psychedelicious
6b98dba71d
chore(ui): lint
2024-05-06 08:55:32 -04:00
psychedelicious
c0065a65a0
feat(ui): floating viewer always shows progress, never shows metadata
2024-05-06 08:55:32 -04:00
psychedelicious
cce3144c74
feat(ui): add floating image viewer
2024-05-06 08:55:32 -04:00
psychedelicious
aab152a7e9
fix(ui): track mouse out flags correctly
2024-05-06 08:55:32 -04:00
psychedelicious
c5b948bc3f
feat(ui): fade layer selection color
2024-05-06 08:55:32 -04:00
psychedelicious
44ecddae2e
feat(ui): style Settings/Control Layers tabs like tabs
2024-05-06 08:55:32 -04:00
psychedelicious
26847895b9
fix(ui): update hotkeys for viewer
2024-05-06 08:55:32 -04:00
Lincoln Stein
f211c95dbc
move access token regex matching into download queue
2024-05-05 21:00:31 -04:00
Lincoln Stein
8e5e9b53d6
Merge branch 'main' into lstein/feat/simple-mm2-api
2024-05-04 17:01:15 -04:00
psychedelicious
e4a640f0a7
feat(ui): optimized rendering of selected layer
...
Instead of caching on every stroke, we can use a compositing rect when the layer is being drawn to improve performance.
2024-05-04 12:03:28 -04:00
psychedelicious
b5b6a96d94
feat(ui): dynamic brush spacing
...
Scaled to 10% of brush size, clamped between 5px and 15px. This makes drawing feel a bit smoother, but maintains reasonable performance.
2024-05-04 12:03:28 -04:00
psychedelicious
806a8f69c5
perf(ui): rerender of opacity sliders
2024-05-04 12:03:28 -04:00
psychedelicious
ac0b9ba290
tidy(ui): $cursorPosition
-> $lastCursorPos
2024-05-04 12:03:28 -04:00
psychedelicious
7ca613d41c
feat(ui): snap cursor pos when drawing rects
...
- Rects snap to stage edge when within a threshold (10 screen pixels)
- When mouse leaves stage, set last mousedown pos to null, preventing nonfunctional rect outlines
Partially addresses #6306 .
There's a technical challenge to fully address the issue - mouse event are not fired when the mouse is outside the stage. While we could draw the rect even if the mouse leaves, we cannot update the rect's dimensions on mouse move, or complete the drawing on mouse up.
To fully address the issue, we'd need to a way to forward window events back to the stage, or at least handle window events. We can explore this later.
2024-05-04 12:03:28 -04:00
psychedelicious
5cb1ff8679
fix(ui): open viewer on image click, not select
2024-05-04 12:03:28 -04:00
psychedelicious
8794b99d51
fix(ui): save upscaled images to gallery on canvas tab
2024-05-03 23:15:10 -04:00
psychedelicious
6bdded85da
fix(ui): do not auto-hide next/prev image buttons
2024-05-03 23:15:10 -04:00
psychedelicious
26613f10c7
feat(ui): close viewer when user switches tabs
2024-05-03 23:15:10 -04:00
psychedelicious
6d2fe3b691
tidy(ui): clean up layer reset logic
2024-05-03 23:15:10 -04:00
psychedelicious
2888845f7c
fix(ui): invalidate mask cache when moving layer
2024-05-03 23:15:10 -04:00
psychedelicious
4beccea6e7
fix(ui): do not run HRO if using an initial image
2024-05-03 23:15:10 -04:00
psychedelicious
68d1458c83
fix(ui): address feedback
2024-05-04 08:40:12 +10:00
blessedcoolant
f4dde883ca
feat: improve the switch states of the control layers / viewer area
2024-05-04 08:40:12 +10:00
Lincoln Stein
e9a20051bd
refactor DWOpenPose and add type hints
2024-05-03 18:08:53 -04:00
psychedelicious
be7eeb576b
fix(ui): fix viewer getting stuck when spamming toggle
2024-05-03 20:57:18 +10:00
psychedelicious
af9f0e0963
feat(ui): cache control layer mask images
...
When invoking with control layers, we were creating and uploading the mask images on every enqueue, even when the mask didn't change. The mask image can be cached to greatly reduce the number of uploads.
With this change, we are a bit smarter about the mask images:
- Check if there is an uploaded mask image name
- If so, attempt to retrieve its DTO. Typically it will be in the RTKQ cache, so there is no network request, but it will make a network request if not cached to confirm the image actually exists on the server.
- If we don't have an uploaded mask image name, or the request fails, we go ahead and upload the generated blob
- Update the layer's state with a reference to this uploaded image for next time
- Continue as before
Any time we modify the mask (drawing/erasing, resetting the layer), we invalidate that cached image name (set it to null).
We now only upload images when we need to and generation starts faster.
2024-05-03 20:57:18 +10:00
psychedelicious
0787c6c746
Update invokeai_version.py
2024-05-03 13:23:19 +10:00
psychedelicious
579d436934
fix(ui): floating param/gallery buttons
2024-05-02 23:09:26 -04:00
psychedelicious
36f01988e8
chore(ui): lint
2024-05-02 23:09:26 -04:00
psychedelicious
d9b92d19f9
feat(ui): clearer viewer/editor context switching
2024-05-02 23:09:26 -04:00
psychedelicious
fdfc379a84
fix(ui): layer counts
2024-05-02 23:09:26 -04:00
psychedelicious
2062cfe84a
fix(ui): cursor when no renderable layers added
2024-05-02 23:09:26 -04:00
psychedelicious
eb36e834b2
feat(ui): add fallback when no layers exist
2024-05-02 23:09:26 -04:00
psychedelicious
2baa33730a
fix(ui): fix control layer list layout
2024-05-02 23:09:26 -04:00
psychedelicious
c30df7ce79
feat(ui): style settings/control layers tabs
2024-05-02 23:09:26 -04:00
psychedelicious
f05ac5a7a5
chore(ui): bump @invoke-ai/ui-library
2024-05-02 23:09:26 -04:00
psychedelicious
85dd78b8df
fix(ui): handle deleting images in use in generation tab
2024-05-02 23:09:26 -04:00
psychedelicious
4c7be03702
tidy(ui): rename generation tab graph builders
2024-05-02 23:09:26 -04:00
psychedelicious
e354fee4f4
fix(ui): add img2img metadata to graphs
2024-05-02 23:09:26 -04:00
psychedelicious
20e628297c
fix(ui): smoother animations in current image preview
2024-05-02 23:09:26 -04:00
psychedelicious
98664fc46f
fix(ui): gallery prev/next buttons animations
2024-05-02 23:09:26 -04:00
psychedelicious
33617fc06a
feat(ui): rework image viewer
...
- Rework styling
- Replace "CurrentImageDisplay" entirely
- Add a super short fade to reduce jarring transition
- Make the viewer a singleton component, overlaid on everything else - reduces change when switching tabs
2024-05-02 23:09:26 -04:00
psychedelicious
c05e52ebae
fix(ui): do not delete all layers when using image as initial image
2024-05-02 23:09:26 -04:00
psychedelicious
5734a97c55
fix(ui): do not attempt drawing when invalid layer type selected
2024-05-02 23:09:26 -04:00
psychedelicious
94a73d5377
feat(ui): update mm-related translations
2024-05-02 23:09:26 -04:00
psychedelicious
0f7fdabe9b
feat(ui): rename tab identifiers
...
- "txt2img" -> "generation"
- "unifiedCanvas" -> "canvas"
- "modelManager" -> "models"
- "nodes" -> "workflows"
- Add UI slice migration setting the active tab to "generation"
2024-05-02 23:09:26 -04:00
psychedelicious
7c1f1076b4
feat(ui): rename tabs
...
- "Text to Image" -> "Generation"
- "Unified Canvas" -> "Canvas"
- "Model Manager" -> "Models"
2024-05-02 23:09:26 -04:00
psychedelicious
a6ac184211
tidy(ui): excise img2img tab
2024-05-02 23:09:26 -04:00
psychedelicious
7d58908e32
fix(ui): fix img2img graphs w/ control layers
2024-05-02 23:09:26 -04:00
psychedelicious
26d3ec3fce
fix(ui): destroy initial image layer after deleting
2024-05-02 23:09:26 -04:00
psychedelicious
dc81357152
feat(ui): add img2img via control layers to graph builders
2024-05-02 23:09:26 -04:00
psychedelicious
c9886796f6
feat(ui): add image viewer overlay
...
- Works on txt2img, canvas and workflows tabs, img2img has its own side-by-side view
- In workflow editor, the is closeable only if you are in edit mode, else it's always there
- Press `i` to open
- Press `esc` to close
- Selecting an image or changing image selection opens the viewer
- When generating, if auto-switch to new image is enabled, the viewer opens when an image comes in
To support this change, I organized and restructured some tab stuff.
2024-05-02 23:09:26 -04:00
psychedelicious
209ddc2037
fix(ui): do not toggle layers on double click of opacity popover
2024-05-02 23:09:26 -04:00
psychedelicious
8b6a283eab
feat(ui): add opacity to initial image layer
2024-05-02 23:09:26 -04:00
psychedelicious
75be6814bb
feat(ui): add renderer for initial image
2024-05-02 23:09:26 -04:00
psychedelicious
1d213067e8
feat(ui): add initial image layer to CL
2024-05-02 23:09:26 -04:00
psychedelicious
d67480d92c
feat(ui): add layerwrapper component
2024-05-02 23:09:26 -04:00
psychedelicious
d55ea318ec
tidy(ui): remove unused gallery hotkeys
2024-05-02 23:09:26 -04:00
psychedelicious
474eab6f8a
fix(ui): clamp incoming w/h to ensure always a multiple of 8
...
When recalling metadata and/or using control image dimensions, it was possible to set a width or height that was not a multiple of 8, resulting in generation failures.
Added a `clamp` option to the w/h actions to fix this. The option is used for all untrusted sources - everything except for the w/h number inputs, which clamp the values themselves.
2024-05-02 23:09:26 -04:00
psychedelicious
1b13fee256
fix(ui): firefox drawing lag
...
Firefox v125.0.3 and below has a bug where `mouseenter` events are fired continually during mouse moves. The issue isn't present on FF v126.0b6 Developer Edition. It's not clear if the issue is present on FF nightly, and we're not sure if it will actually be fixed in the stable v126 release.
The control layers drawing logic relied on on `mouseenter` events to create new lines, and `mousemove` to extend existing lines. On the affected version of FF, all line extensions are turned into new lines, resulting in very poor performance, noncontiguous lines, and way-too-big internal state.
To resolve this, the drawing handling was updated to not use `mouseenter` at all. As a bonus, resolving this issue has resulted in simpler logic for drawing on the canvas.
2024-05-02 23:09:26 -04:00
psychedelicious
6363095b29
feat(ui): control adapter recall for control layers
...
- Add set of metadata handlers for the control layers CAs
- Use these conditionally depending on the active tab - when recalling on txt2img, the CAs go to control layers, else they go to the old CA area.
2024-05-02 23:09:26 -04:00
psychedelicious
4cd78b9478
feat(ui): add getImageDTO imperative RTKQ helper
2024-05-02 23:09:26 -04:00
psychedelicious
2cde8a643e
tidy(ui): suffix a control adapter types/objects with V2
...
Prevent mixing the old and new implementations up
2024-05-02 23:09:26 -04:00
psychedelicious
f9555f03f5
tidy(ui): "CONTROLNET_PROCESSORS" -> "CA_PROCESSOR_DATA"
2024-05-02 23:09:26 -04:00
psychedelicious
b1d8f3a3f9
tidy(ui): revert changes to old CA implementation
...
These changes were left over from the previous attempt to handle control adapters in control layers with the same logic. Control Layers are now handled totally separately, so these changes may be reverted.
2024-05-02 23:09:26 -04:00
Lincoln Stein
38df6f3702
fix ruff error
2024-05-02 21:22:33 -04:00
Lincoln Stein
3b64e7a1fd
Merge branch 'main' into lstein/feat/simple-mm2-api
2024-05-02 21:20:35 -04:00
psychedelicious
33a9f9a4dc
fix(nodes): fix constraints in cnet processors
...
There were some invalid constraints with the processors - minimum of 0 for resolution or multiple of 64 for resolution.
Made minimum 1px and no multiple ofs.
2024-05-02 12:24:04 +10:00
psychedelicious
c35625eb44
feat(ui): processor layout changes
2024-05-01 21:48:47 -04:00
psychedelicious
6f572e1cce
fix(ui): convert t2i to cnet and vice-versa when model changes
2024-05-01 21:48:47 -04:00
psychedelicious
54acd3f2b1
ci(ui): restore error status for circular deps
2024-05-01 21:48:47 -04:00
psychedelicious
6e966909ab
chore(ui): lint
2024-05-01 21:48:47 -04:00
psychedelicious
311ba8c04b
fix(ui): ensure canvas size is correctly updated when model changed
...
Closes #6293
2024-05-01 21:48:47 -04:00
psychedelicious
1b617768cf
fix(ui): canvas infinite loop when setting bbox dims
...
When typing in a number into the w/h number inputs, if the number is less than the step, it appears the value of 0 is used. This is unexpected; it means Chakra isn't clamping the value correctly (or maybe our wrapper isn't clamping it).
Add checks to never bail if the width or height value from the number input component is 0.
2024-05-01 21:48:47 -04:00
psychedelicious
8ceb94497e
fix(ui): fix canvas rendering of control images
2024-05-01 21:48:47 -04:00
psychedelicious
efb571401c
feat(ui): tweak control adapter layout
2024-05-01 21:48:47 -04:00
psychedelicious
ffba4871d0
tidy(ui): "scribble" -> "Scribble"
2024-05-01 21:48:47 -04:00
psychedelicious
9437d701b2
fix(ui): disable clear processor when no processor selected
2024-05-01 21:48:47 -04:00
psychedelicious
6effa19626
fix(ui): edge cases in auto-process
2024-05-01 21:48:47 -04:00
psychedelicious
45c2ac41d5
feat(ui): processor layout/styling
2024-05-01 21:48:47 -04:00
psychedelicious
ca1c3c0873
fix(ui): do not re-process if processor config hasn't changed
2024-05-01 21:48:47 -04:00
psychedelicious
47ee08db91
fix(ui): processor select styling
2024-05-01 21:48:47 -04:00
psychedelicious
c96b98fc9e
feat(ui): auto-process for control layer CAs
2024-05-01 21:48:47 -04:00
psychedelicious
905baf2787
refactor(ui): continue wiring up CA logic across (wip)
...
It works!
2024-05-01 21:48:47 -04:00
psychedelicious
0e55488ff6
refactor(ui): wire up CA logic across (wip)
2024-05-01 21:48:47 -04:00
psychedelicious
424a27eeda
refactor(ui): add CA processor config components (wip)
2024-05-01 21:48:47 -04:00
psychedelicious
6007218a51
refactor(ui): add CA config components (wip)
2024-05-01 21:48:47 -04:00
psychedelicious
811e8a5a8b
refactor(ui): rename & export actions from CL slice
2024-05-01 21:48:47 -04:00
psychedelicious
121918352a
refactor(ui): add control layers separate control adapter implementation (wip)
...
- Revise control adapter config types
- Recreate all control adapter mutations in control layers slice
- Bit of renaming along the way - typing 'RegionalGuidanceLayer' over and over again was getting tedious
2024-05-01 21:48:47 -04:00
psychedelicious
3717321480
tidy(ui): organize layer components
2024-05-01 21:48:47 -04:00
blessedcoolant
dce8b88aaf
fix: change eta only for TCD Scheduler
2024-05-01 12:47:46 +05:30
blessedcoolant
1bdcbe3284
cleanup: use dict update to actually update the scheduler keyword args
2024-05-01 12:22:39 +05:30
Lincoln Stein
49c84cd423
Merge branch 'main' into lstein/feat/simple-mm2-api
2024-04-30 18:13:42 -04:00
Kent Keirsey
88ac3bc7f0
Merge branch 'main' into main
2024-04-30 16:51:44 -04:00
psychedelicious
abb3bb9f7e
Update invokeai_version.py
2024-05-01 06:30:28 +10:00
blessedcoolant
2ddb82200c
fix: Manually update eta(gamma) to 1.0 for TCDScheduler
...
seems to work best with invoke at 4 steps
2024-05-01 01:20:53 +05:30
blessedcoolant
38880cde5c
chore: update schema
2024-05-01 01:20:22 +05:30
blessedcoolant
39ab4dd83e
Merge branch 'main' into pr/6086
2024-05-01 00:37:06 +05:30
psychedelicious
631878b212
feat(ui): border radius on canvas
2024-04-30 08:10:59 -04:00
psychedelicious
7a5399e83c
feat(ui): display message when no layers are added
2024-04-30 08:10:59 -04:00
psychedelicious
e90775731d
fix(ui): layer layout orientation
2024-04-30 08:10:59 -04:00
psychedelicious
3f26880493
fix(ui): "Global Settings" -> "Settings"
2024-04-30 08:10:59 -04:00
psychedelicious
21cf1004db
fix(ui): layers default to expanded
2024-04-30 08:10:59 -04:00
psychedelicious
d74cd12aa6
feat(ui): collapsible layers
2024-04-30 08:10:59 -04:00
psychedelicious
cf1883585d
chore(ui): lint
2024-04-30 08:10:59 -04:00
psychedelicious
8a791d4f16
feat(ui): make control image opacity filter toggleable
2024-04-30 08:10:59 -04:00
psychedelicious
1212698059
tidy(ui): more renaming of components
2024-04-30 08:10:59 -04:00
psychedelicious
ba6db33b39
tidy(ui): more renaming of components
2024-04-30 08:10:59 -04:00
psychedelicious
b3dbfdaa02
tidy(ui): more renaming of components
2024-04-30 08:10:59 -04:00
psychedelicious
3441187c23
tidy(ui): "regional prompts" -> "control layers"
2024-04-30 08:10:59 -04:00
psychedelicious
8de56fd77c
tidy(ui): move regionalPrompts files to controlLayers
2024-04-30 08:10:59 -04:00
psychedelicious
22bd33b7c6
chore(ui): lint
2024-04-30 08:10:59 -04:00
psychedelicious
2af5c4be9f
fix(ui): ip adapter layers are not selectable
2024-04-30 08:10:59 -04:00
psychedelicious
415a41e21a
perf(ui): reset maskobjects when layer has no bbox (all objects erased)
2024-04-30 08:10:59 -04:00
psychedelicious
aa2ca03056
fix(ui): filter layers based on tab when disabling invoke button
2024-04-30 08:10:59 -04:00
psychedelicious
a20faca20f
feat(ui): layer layout tweaks
2024-04-30 08:10:59 -04:00
psychedelicious
9d042baf48
fix(ui): ip adapter layers always at bottom of list
2024-04-30 08:10:59 -04:00
psychedelicious
6195741814
feat(ui): move global mask opacity to settings popover
2024-04-30 08:10:59 -04:00
psychedelicious
c2f8adf93e
fix(ui): deselect other layers when new layer added
2024-04-30 08:10:59 -04:00
psychedelicious
ace3955760
fix(ui): tool preview/cursor when non-interactable layer selected
2024-04-30 08:10:59 -04:00
psychedelicious
720e16cea6
feat(ui): tweak layer list styling to better indicate selectablility
2024-04-30 08:10:59 -04:00
psychedelicious
a357a1ac9d
feat(ui): remove select layer on click in canvas
...
It's very easy to end up in a spot where you cannot select a layer at all to move it around. Too tricky to handle otherwise.
2024-04-30 08:10:59 -04:00
psychedelicious
22f160bfcc
fix(ui): unlink control adapter opaicty from global mask opacity
2024-04-30 08:10:59 -04:00
psychedelicious
fa637b5c59
fix(ui): add missed ca layer opacity logic
...
didn't stage the right changes a few commits back
2024-04-30 08:10:59 -04:00
psychedelicious
1f68a60752
feat(ui): hold shift to use control image size w/o model constraints
2024-04-30 08:10:59 -04:00
psychedelicious
048bd18e10
feat(ui): separate ca layer opacity
2024-04-30 08:10:59 -04:00
psychedelicious
e5ec529f0f
feat(ui): fix layer arranging
2024-04-30 08:10:59 -04:00
psychedelicious
d884c15d0c
feat(ui): update layer menus
2024-04-30 08:10:59 -04:00
psychedelicious
9ee7cad613
feat(ui): make control layer ui exclusive to txt2img tab
2024-04-30 08:10:59 -04:00
psychedelicious
629110784d
fix(ui): delete control layers correctly
2024-04-30 08:10:59 -04:00
psychedelicious
c1666a8b5a
fix(ui): select default control/ip adapter models in control layers
2024-04-30 08:10:59 -04:00
psychedelicious
d14b315bc6
fix(ui): use optimal size when using control image dims
2024-04-30 08:10:59 -04:00
psychedelicious
fe459295ea
fix(ui): exclude disabled control adapters on control layers
2024-04-30 08:10:59 -04:00
psychedelicious
9d67ec9efe
fix(ui): toggle control adapter layer vis
2024-04-30 08:10:59 -04:00
psychedelicious
5bf4d37949
perf(ui): reduce control image processing to when it is needed
...
Only should reprocess if the processor settings or the image has changed.
2024-04-30 08:10:59 -04:00
psychedelicious
387ab9cee7
feat(ui): reset controlnet model to null instead of disabling when base model changes
2024-04-30 08:10:59 -04:00
psychedelicious
56050f7887
fix(ui): fix canvas scaling when window is zoomed
...
Konva doesn't react to changes to window zoom/scale. If you open the tab at, say, 90%, then bump to 100%, the pixel ratio of the canvas doesn't change. This results in lower-quality renders on the canvas (generation is unaffected).
2024-04-30 08:10:59 -04:00
psychedelicious
c354470cd1
perf(ui): do not cache controlnet images unless required
2024-04-30 08:10:59 -04:00
psychedelicious
ded8267505
WIP control adapters in regional
2024-04-30 08:10:59 -04:00
psychedelicious
e822897b1c
feat(nodes): add prototype heuristic image resize node
...
Uses the fancy cnet resize that retains edges.
2024-04-30 08:10:59 -04:00
psychedelicious
2d7b8c2a1b
fix(backend): do not round image dims to 64 in controlnet processor resize
...
Rounding the dims results in control images that are subtly different than the input. We round to the nearest 8px later, there's no need to round now.
2024-04-30 08:10:59 -04:00
psychedelicious
ebeae41cb2
tidy(ui): minor ca component tidy
2024-04-30 08:10:59 -04:00
psychedelicious
6f5f3381f9
feat(ui): revise internal state for RCC
2024-04-30 08:10:59 -04:00
psychedelicious
2f6fec8c6c
chore(ui): lint
2024-04-30 08:10:59 -04:00
psychedelicious
cc4bef4859
refactor(ui): move size state to regional
2024-04-30 08:10:59 -04:00
psychedelicious
b6a45e53f1
refactor(ui): move positive2 and negative2 prompt to regional
2024-04-30 08:10:59 -04:00
psychedelicious
1cf1e53a6c
refactor(ui): move positive and negative prompt to regional
2024-04-30 08:10:59 -04:00
psychedelicious
c686625076
feat(ui): add 'control_layer' type
2024-04-30 08:10:59 -04:00
psychedelicious
d861bc690e
feat(mm): handle PC_PATH_MAX on external drives on macOS
...
`PC_PATH_MAX` doesn't exist for (some?) external drives on macOS. We need error handling when retrieving this value.
Also added error handling for `PC_NAME_MAX` just in case. This does work for me for external drives on macOS, though.
Closes #6277
2024-04-30 07:57:03 -04:00
psychedelicious
1fe90c357c
feat(backend): lift managed model loading out of depthanything class
2024-04-29 08:56:00 +10:00
psychedelicious
fcb071f30c
feat(backend): lift managed model loading out of lama class
2024-04-29 08:12:51 +10:00
Lincoln Stein
57c831442e
fix safe_filename() on windows
2024-04-28 14:42:40 -04:00
Lincoln Stein
f65c7e2bfd
Merge branch 'main' into lstein/feat/simple-mm2-api
2024-04-28 13:42:54 -04:00
Lincoln Stein
7c39929758
support VRAM caching of dict models that lack to()
2024-04-28 13:41:06 -04:00
dunkeroni
f262b9032d
fix: changed validation to not error on connection
2024-04-28 12:48:56 -04:00
dunkeroni
71c3197eab
fix: denoise latents accepts CFG lists as input
2024-04-28 12:48:56 -04:00
Lincoln Stein
a26667d3ca
make download and convert cache keys safe for filename length
2024-04-28 12:24:36 -04:00
Lincoln Stein
bb04f496e0
Merge branch 'main' into lstein/feat/simple-mm2-api
2024-04-28 11:33:26 -04:00
Lincoln Stein
70903ef057
refactor load_ckpt_from_url()
2024-04-28 11:33:23 -04:00
psychedelicious
241a1fdb57
feat(mm): support sdxl ckpt inpainting models
...
There are only a couple SDXL inpainting models, and my tests indicate they are not as good as SD1.5 inpainting, but at least we support them now.
- Add the config file. This matches what is used in A1111. The only difference from the non-inpainting SDXL config is the number of in-channels.
- Update the legacy config maps to use this config file.
2024-04-28 12:57:27 +10:00
Lincoln Stein
d72f272f16
Address change requests in first round of PR reviews.
...
Pending:
- Move model install calls into model manager and create passthrus in invocation_context.
- Consider splitting load_model_from_url() into a call to get the path and a call to load the path.
2024-04-24 23:53:30 -04:00
psychedelicious
398f37c0ed
tidy(backend): clean up controlnet_utils
...
- Use the our adaptation of the HWC3 function with better types
- Extraction some of the util functions, name them better, add comments
- Improve type annotations
- Remove unreachable codepaths
2024-04-25 13:20:09 +10:00
psychedelicious
6b0bf59682
feat(backend): update nms util to make blur/thresholding optional
2024-04-25 13:20:09 +10:00
psychedelicious
5b8f77f990
tidy(nodes): move cnet mode literals to utils
...
Now they can be used in type signatures without circular imports.
2024-04-25 13:20:09 +10:00
psychedelicious
3207822738
Update invokeai_version.py
2024-04-25 12:31:59 +10:00
psychedelicious
8d86fabf4b
chore(ui): lint
2024-04-24 20:09:52 +10:00
psychedelicious
af3e910ad3
fix(ui): fix layer arrangement
2024-04-24 20:09:52 +10:00
psychedelicious
af25d00964
tidy(ui): use const for brush spacing
2024-04-24 20:09:52 +10:00
psychedelicious
d4a30d08ef
feat(ui): create new line when mouse held down, leaves canvas and comes back over
2024-04-24 20:09:52 +10:00
psychedelicious
bd8a33e824
tidy(ui): clean up renderer functions
...
- Split logic to create layers/objects from the updating logic
- Organize and comment functions
2024-04-24 20:09:52 +10:00
psychedelicious
b425646b7b
chore(ui): lint
2024-04-24 20:09:52 +10:00
psychedelicious
293e11cfa6
feat(ui): hide add prompt buttons when user has a prompt
2024-04-24 20:09:52 +10:00
psychedelicious
c73aabdfbf
feat(ui): regional control defaults to having a positive prompt
2024-04-24 20:09:52 +10:00
psychedelicious
ca989c54b0
fix(ui): restore OG aspect ratio preview for non-t2i tabs
2024-04-24 20:09:52 +10:00
blessedcoolant
260e24733f
fix: update SDXL IP Adpater starter model to be ViT-H
2024-04-24 00:08:21 -04:00
blessedcoolant
6b394554e2
fix: update ip adapter starter models path
2024-04-24 08:48:25 +05:30
psychedelicious
ae1955a1a8
feat(ui): update canvas graphs to provide unet
2024-04-23 07:32:53 -04:00
psychedelicious
1bef13db37
feat(nodes): restore unet check on CreateGradientMaskInvocation
...
Special handling for inpainting models
2024-04-23 07:32:53 -04:00
psychedelicious
a461537087
chore: ruff
2024-04-23 07:32:53 -04:00
psychedelicious
99e28da19b
feat(ui): add variant to model edit
...
Also simplify the layouting for all model view/edit components.
2024-04-23 07:32:53 -04:00
psychedelicious
42a159beaa
chore(ui): typegen
2024-04-23 07:32:53 -04:00
psychedelicious
0aa5aadfe8
fix(mm): move variant
to MainConfigBase
...
shoulda been here all along
2024-04-23 07:32:53 -04:00
dunkeroni
bbf919a933
chore: frontend check error
2024-04-23 07:32:53 -04:00
dunkeroni
01897ec576
remove extra inputs
2024-04-23 07:32:53 -04:00
dunkeroni
bc12d6654e
chore: comments and ruff
2024-04-23 07:32:53 -04:00
dunkeroni
6d7c8d5f57
remove unet test
2024-04-23 07:32:53 -04:00
dunkeroni
38604aa408
update canvas graphs
2024-04-23 07:32:53 -04:00
dunkeroni
781de914f4
fix threshhold
2024-04-23 07:32:53 -04:00
dunkeroni
c094bad233
add unet check in gradient mask node
2024-04-23 07:32:53 -04:00
dunkeroni
0063014f2b
gradient mask node test for inpaint
2024-04-23 07:32:53 -04:00
psychedelicious
2cee436ecf
tidy(app): remove unused class
2024-04-23 17:12:14 +10:00
psychedelicious
e6386d969f
fix(app): only clear tempdirs if ephemeral and before creating tempdir
...
Also, this needs to happen in init, else it deletes the temp dir created in init
2024-04-23 17:12:14 +10:00
psychedelicious
4b2b983646
tidy(api): reverted unnecessary changes in dependencies.py
2024-04-23 17:12:14 +10:00
Lincoln Stein
53808149fb
moved cleanup routine into object_serializer_disk.py
2024-04-23 17:12:14 +10:00
Lincoln Stein
21ba55d0a6
add an initialization function that removes dangling tmpdirs from outputs/tensors
2024-04-23 17:12:14 +10:00
Josh Corbett
28c28b2fc0
fix: 🐛 handle trigger phrase form submits
2024-04-23 16:42:40 +10:00
psychedelicious
8b9c4c62a6
chore: v4.2.0a2
2024-04-23 13:08:26 +10:00
psychedelicious
cf637ecaa6
fix(ui): disabled ip adapters applied to regional control
2024-04-23 13:08:26 +10:00
psychedelicious
fca718bdd3
tidy(ui): remove extraneous cursor sync
2024-04-23 12:11:47 +10:00
psychedelicious
5196a2efec
fix(ui): minor canvas overflow
2024-04-23 12:11:47 +10:00
psychedelicious
385e93443a
feat(ui): rp hotkeys
...
- Shift+C: Reset selected layer mask (same as canvas)
- Shift+D: Delete selected layer (cannot be Del, that deletes an image in gallery)
- Shift+A: Add layer (cannot be Ctrl+Shift+N, that opens a new window)
- Ctrl/Cmd+Wheel: Brush size (same as canvas)
2024-04-23 12:11:47 +10:00
psychedelicious
604217313a
chore(ui): lint
2024-04-23 12:11:47 +10:00
psychedelicious
229423b370
tidy(ui): memo aspectratiopreview
2024-04-23 12:11:47 +10:00
psychedelicious
75a548e3eb
perf(ui): debounce render wait = 300ms
2024-04-23 12:11:47 +10:00
psychedelicious
24dbb65ebb
perf(ui): add brush spacing
...
Only add point to line if the next point is 10 or more px from the last point
2024-04-23 12:11:47 +10:00
psychedelicious
c915220965
feat(ui): aspect ratio preview is regional prompts canvas
2024-04-23 12:11:47 +10:00
psychedelicious
bb37e25ed0
feat(ui): rp ui layout
2024-04-23 12:11:47 +10:00
psychedelicious
dda1111f20
Make it alpha
2024-04-22 10:54:21 -04:00
psychedelicious
9d71b91b7f
chore: v4.2.0b1
2024-04-22 10:54:21 -04:00
psychedelicious
714126b832
build(ui): temp disable circular dependency check
...
I'll need to think about how to fix this properly. For now, disable the check as the UI can still build fine.
2024-04-22 23:09:39 +10:00
psychedelicious
a10c66797d
chore(ui): lint
2024-04-22 23:09:39 +10:00
psychedelicious
6dcaf75b5f
feat(ui): regional prompts spray n pray
...
Trying a lot of different things as I iterated, so this is smooshed into one big commit... too hard to split it now.
- Iterated on IP adapter handling and UI. Unfortunately there is an bug related to undo/redo. The IP adapter state is split across the `controlAdapters` slice and the `regionalPrompts` slice, but only the `regionalPrompts` slice supports undo/redo. If you delete the IP adapter and then undo/redo to a history state where it existed, you'll get an error. The fix is likely to merge the slices... Maybe there's a workaround.
- Iterated on UI. I think the layers are OK now.
- Removed ability to disable RP globally for now. It's enabled if you have enabled RP layers.
- Many minor tweaks and fixes.
2024-04-22 23:09:39 +10:00
psychedelicious
018845cda0
tidy(ui): regional prompts kind
-> type
2024-04-22 23:09:39 +10:00
psychedelicious
8c0a061fa0
fix(ui): hotkeys dependency array
2024-04-20 11:32:08 -04:00
psychedelicious
4895875ded
feat(ui): rects on regional prompt UI
2024-04-20 11:32:08 -04:00
psychedelicious
cfddbda578
tidy(ui): clean up action names
2024-04-20 11:32:08 -04:00
psychedelicious
58d3a9e7d4
refactor(ui): revise regional prompts state to support prompt-less mask layers
...
This structure is more adaptable to future features like IP-Adapter-only regions, controlnet layers, image masks, etc.
2024-04-20 11:32:08 -04:00
psychedelicious
a00e703144
feat(nodes): image mask to tensor invocation
...
Thanks @JPPhoto!
2024-04-20 11:32:08 -04:00
psychedelicious
e4024bdeb9
fix(ui): floor all pixel coords
...
This prevents rendering objects with sub-pixel positioning, which looks soft
2024-04-20 11:32:08 -04:00
psychedelicious
944690ac8e
feat(ui): remove drag distance on layers
2024-04-20 11:32:08 -04:00
psychedelicious
a7d69aa0a9
fix(ui): brush preview cursor jank
2024-04-20 11:32:08 -04:00
psychedelicious
15018fdbc0
fix(ui): brush preview not visible after hotkey
2024-04-20 11:32:08 -04:00
psychedelicious
31ace9aff8
feat(ui): tool hotkeys for rp
2024-04-20 11:32:08 -04:00
psychedelicious
3f4ea30113
fix(ui): fix missing bbox when a layer is empty
2024-04-20 11:32:08 -04:00
psychedelicious
7edcadb371
fix(ui): bbox rendered slightly too small
2024-04-20 11:32:08 -04:00
psychedelicious
d582203c62
chore(ui): lint
2024-04-20 14:54:49 +10:00
psychedelicious
148a6c08ca
fix(ui): fix bbox caching
2024-04-20 14:54:49 +10:00
psychedelicious
1e904d281a
feat(ui): hook up sd1.5 t2i graph to regional prompts
2024-04-20 14:54:49 +10:00
psychedelicious
03d9a75720
feat(ui): better rp colors
2024-04-20 14:54:49 +10:00
psychedelicious
5edce0a4de
perf(ui): caching efficiency
2024-04-20 14:54:49 +10:00
psychedelicious
604bf4e9ec
perf(ui): use efficient group caching instead of a compositing rect
...
Seems to be the same speed and it's less complex.
2024-04-20 14:54:49 +10:00
psychedelicious
39d036bb37
feat(ui): update move tool to show all bboxes, mouseover bbox strokes
2024-04-20 14:54:49 +10:00
psychedelicious
8a69fbd336
perf(ui): more bbox optimizations
...
- Keep track of whether the bbox needs to be recalculated (e.g. had lines/points added)
- Keep track of whether the bbox has eraser strokes - if yes, we need to do the full pixel-perfect bbox calculation, otherwise we can use the faster getClientRect
- Use comparison rather than Math.min/max in bbox calculation (slightly faster)
- Return `null` if no pixel data at all in bbox
2024-04-20 14:54:49 +10:00
psychedelicious
a71ed10b71
perf(ui): more efficient bbox method with smaller minimum offscreen canvas size
2024-04-20 14:54:49 +10:00
psychedelicious
9d3978edcf
fix(ui): give min dimensions to rp storybook
2024-04-20 14:54:49 +10:00
psychedelicious
18e1d74917
fix(ui): group layer color change history
2024-04-20 14:54:49 +10:00
psychedelicious
9276ecfd02
feat(ui): rp ui styling/layout
2024-04-19 09:32:56 -04:00
psychedelicious
ea527f5fe1
feat(nodes): add beta classification to mask tensor nodes
2024-04-19 09:32:56 -04:00
psychedelicious
d43f9732ab
feat(ui): rp ui styling
2024-04-19 09:32:56 -04:00
psychedelicious
c613839740
feat(ui): use translations for rp features
2024-04-19 09:32:56 -04:00
psychedelicious
bb371cfeca
feat(ui): minor styling rp
2024-04-19 09:32:56 -04:00
psychedelicious
6a5510146c
feat(ui): add default rp brush size
2024-04-19 09:32:56 -04:00
psychedelicious
9667f77c41
feat(ui): rp editor styling
2024-04-19 09:32:56 -04:00
psychedelicious
e93e0612af
tidy(ui): selectedLayer
-> selectedLayerId
2024-04-19 09:32:56 -04:00
psychedelicious
9528287d56
feat(ui): move ephemeral tool state out of redux
2024-04-19 09:32:56 -04:00
psychedelicious
14c722c265
tidy(ui): remove unused conditional
2024-04-19 09:32:56 -04:00
psychedelicious
4b2cd2da9f
feat(ui): remove special handling of main prompt
...
Until we have a good handle on what works best, leaving this to the user
2024-04-19 09:32:56 -04:00
psychedelicious
3c5b728bee
feat(ui): add enabled state for RP
2024-04-19 09:32:56 -04:00
psychedelicious
9b5c47748d
tidy(ui): isRegionalPromptLayer
-> isRPLayer
2024-04-19 09:32:56 -04:00
psychedelicious
eb781272f7
tidy(ui): organize rp layer components
2024-04-19 09:32:56 -04:00
psychedelicious
642a0de3dd
feat(ui): organize layer naming
...
prep for non-rp layer types
2024-04-19 09:32:56 -04:00
psychedelicious
f3b4cecf2e
feat(ui): invert tensor mask instead of loading mask image and converting to tensor second time
...
minor efficiency improvement
2024-04-19 09:32:56 -04:00
psychedelicious
499e7a7b74
chore(ui): typegen
2024-04-19 09:32:56 -04:00
psychedelicious
aace364677
feat(nodes): add InvertTensorMaskInvocation
2024-04-19 09:32:56 -04:00
psychedelicious
c195094e91
fix(ui): do not open panels when collapsed and window resize
2024-04-19 09:32:56 -04:00
psychedelicious
e6c57edf87
tidy(ui): shuffle graph builder logic
2024-04-19 09:32:56 -04:00
psychedelicious
c217e052a8
tidy(ui): remove unused action
2024-04-19 09:32:56 -04:00
psychedelicious
964e2236b9
feat(ui): do not add promptless conditioning nodes
2024-04-19 09:32:56 -04:00
psychedelicious
a6e64423d9
feat(ui): per-layer autonegative
2024-04-19 09:32:56 -04:00
psychedelicious
d3aa97ab99
feat(ui): add copy graph button to queue item detail view
2024-04-19 09:32:56 -04:00
psychedelicious
0d8edd67ab
fix(ui): group lines together in undo history
2024-04-19 09:32:56 -04:00
psychedelicious
d9dd00ea20
feat(ui): undo/redo in regional prompts
...
using the `redux-undo` library
2024-04-19 09:32:56 -04:00
psychedelicious
170763899a
tidy(ui): tidy regional prompts graph helper, add comments
2024-04-19 09:32:56 -04:00
psychedelicious
9e1a4a4a07
feat(ui): regional prompts default layer opacity
2024-04-19 09:32:56 -04:00
psychedelicious
dcb4a40741
fix(ui): regional prompts brush preview wonkiness
2024-04-19 09:32:56 -04:00
psychedelicious
f8bf985256
perf(ui): do not recreate map callback on every render
2024-04-19 09:32:56 -04:00
psychedelicious
81f29b9624
tidy(ui): remove errant console.log
2024-04-19 09:32:56 -04:00
psychedelicious
f2dde9a035
feat(ui): cleared selected layer styling
2024-04-19 09:32:56 -04:00
psychedelicious
85f4a066fb
feat(ui): use logger for stage renderer
2024-04-19 09:32:56 -04:00
psychedelicious
b9e6b7ba48
feat(ui): restore layer arrange functionality
2024-04-19 09:32:56 -04:00
psychedelicious
085f7bdbee
feat(ui): add invert negative mode
...
Adds an additional negative conditioning using the inverted mask of the positive conditioning and the positive prompt. May be useful for mutually exclusive regions.
2024-04-19 09:32:56 -04:00
psychedelicious
e4fcb6627a
feat(ui): style regional prompt boxes
2024-04-19 09:32:56 -04:00
psychedelicious
47aa6357d1
tidy(ui): organize regional prompts files
2024-04-19 09:32:56 -04:00
psychedelicious
b81030fe27
tidy(ui): remove unused exports
2024-04-19 09:32:56 -04:00
psychedelicious
a1a9f0da73
tidy(ui): remove more unused files
2024-04-19 09:32:56 -04:00
psychedelicious
8f4f3b773c
tidy(ui): remove unused files, code
2024-04-19 09:32:56 -04:00
psychedelicious
00737efc31
tidy(ui): tidy naming of regional prompt utils
2024-04-19 09:32:56 -04:00
psychedelicious
5924dc6ff6
feat(ui): transparency on regional prompts canvas
2024-04-19 09:32:56 -04:00
psychedelicious
246fabf2a0
feat(ui): scaling regional prompt canvas
2024-04-19 09:32:56 -04:00
psychedelicious
30e3e12513
feat(ui): layouting regional prompts
2024-04-19 09:32:56 -04:00
psychedelicious
a5bfe2dccb
feat(ui): support negative regional prompt
2024-04-19 09:32:56 -04:00
psychedelicious
aa6bfc8645
fix(ui): wip misc regional prompting ui
2024-04-19 09:32:56 -04:00
psychedelicious
20ccdb6c8f
fix(ui): remove extra type in nodestate
2024-04-19 09:32:56 -04:00
psychedelicious
8caa7bc2b1
feat(ui): abstract out bbox renderer
2024-04-19 09:32:56 -04:00
psychedelicious
ede8826757
feat(ui): remove dep on stage in mouse handlers
2024-04-19 09:32:56 -04:00
psychedelicious
ff7aa2558a
feat(ui): display prompt when debugging regions
2024-04-19 09:32:56 -04:00
psychedelicious
c9bf00b80b
feat(ui): restore invoke button (wip)
2024-04-19 09:32:56 -04:00
psychedelicious
1f8f429d55
feat(ui): abstract layer renderer
2024-04-19 09:32:56 -04:00
psychedelicious
d34e431002
feat(ui): abstract brush preview logic
2024-04-19 09:32:56 -04:00
psychedelicious
cdb481e836
feat(ui): use konva generics for types in selector functions
2024-04-19 09:32:56 -04:00
psychedelicious
525e6d697c
feat(ui): re-implement with imperative konva api (wip)
2024-04-19 09:32:56 -04:00
psychedelicious
bbbb5479e8
feat(ui): re-implement with imperative konva api (wip)
2024-04-19 09:32:56 -04:00
psychedelicious
ae7797f662
feat(ui): re-implement with imperative konva api (wip)
2024-04-19 09:32:56 -04:00
psychedelicious
05deeb68fa
feat(ui): draft of graph helper for regional prompts
2024-04-19 09:32:56 -04:00