psychedelicious
0ff0290735
tidy(ui): use Invocation<> helper type in canvas graph builders, elsewhere
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
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
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
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
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
blessedcoolant
e22211dac0
fix: Fix Outpaint not applying the expanded mask correctly
...
In unscaled situations
2024-05-15 13:59:01 +10: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
adebe639e3
tidy(ui): remove errant console.logs
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
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
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
6e8b7f9421
feat(ui): write layers to metadata
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
8794b99d51
fix(ui): save upscaled images to gallery on canvas tab
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
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
d9b92d19f9
feat(ui): clearer viewer/editor context switching
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