psychedelicious
b8106a4613
fix(ui): bail on drawing when mouse not down
2024-10-23 16:01:15 +11:00
psychedelicious
ce51e9582a
feat(ui): add CanvasRectTool
2024-10-23 16:01:15 +11:00
psychedelicious
00848eb631
feat(ui): let color picker tool handle its events
2024-10-23 16:01:15 +11:00
psychedelicious
b48430a892
feat(ui): let eraser tool handle its events
2024-10-23 16:01:15 +11:00
psychedelicious
f94a218561
tidy(ui): remove extraneous checks from CanvasToolBrush
2024-10-23 16:01:15 +11:00
psychedelicious
9b6ed40875
fix(ui): edge case where pressure could be added erroneously to points
2024-10-23 16:01:15 +11:00
psychedelicious
26553dbb0e
tidy(ui): CanvasToolModule
2024-10-23 16:01:15 +11:00
psychedelicious
9eb695d0b4
docs(ui): update CanvasToolModule
2024-10-23 16:01:15 +11:00
psychedelicious
babab17e1d
feat(ui): let brush tool handle its events
...
Move brush tool event logic to its class.
2024-10-23 16:01:15 +11:00
psychedelicious
d0a80f3347
feat(ui): create zCoordinateWithPressure & export type from canvas types
2024-10-23 16:01:15 +11:00
psychedelicious
9b30363177
tidy(ui): CanvasToolModule structure
2024-10-23 16:01:15 +11:00
psychedelicious
89bde36b0c
feat(ui): support draggable SAM points
2024-10-23 16:01:15 +11:00
psychedelicious
86a8476d97
feat(ui): working segment anything flow
2024-10-23 16:01:15 +11:00
psychedelicious
80bf9ddb71
feat(ui): rough out points UI for segment anything module
2024-10-23 16:01:15 +11:00
psychedelicious
1dbc98d747
feat(ui): add CanvasSegmentAnythingModule (wip)
2024-10-23 16:01:15 +11:00
psychedelicious
59d0ad4505
chore(ui): migrate from ts-toolbelt to type-fest
...
`ts-toolbelt` is unmaintained while `type-fest` is very actively maintained. Both provide similar TS utilities.
2024-10-23 16:01:15 +11:00
psychedelicious
ee8975401a
fix(ui): remove special handling for flux in IPAdapterModel
...
This masked an issue w/ the CLIP Vision model. Issue is now handled in reducer/graph builder.
2024-10-23 08:31:10 +10:00
psychedelicious
f53823b45e
fix(ui): update CLIP Vision when ipa model changes
2024-10-23 08:29:14 +10:00
Mary Hipp
0a96466b60
feat(ui): add IP adapters to FLUX in linear UI
2024-10-22 15:22:56 -04:00
psychedelicious
23fada3eea
feat(ui): simpler dnd indicator for right panel tabs
...
We can use the drop overlay component directly for this, without needing to add it as a `noop` dnd target.
Other changes:
- The `label` prop is now used to conditionally render the label - every drop target provides its own label, so this doesn't break anything.
- Add `withBackdrop` prop to control whether we apply the dimmed drop target effect.
2024-10-16 18:35:55 +11:00
psychedelicious
2917e59c38
Revert "feat(ui): add layers tab as droppable destination to improve UX for dragging from gallery to layers tabs"
...
This reverts commit 535c1287bbc8d2c2099f5ff659f62e3076a0dbee.
2024-10-16 18:35:55 +11:00
Mary Hipp
c691855a67
feat(ui): add layers tab as droppable destination to improve UX for dragging from gallery to layers tabs
2024-10-16 18:35:55 +11:00
Mary Hipp
a00347379b
feat(ui): move layers/gallery tab state into redux so it persists across sessions/refreshes, make gallery the default
2024-10-16 18:35:55 +11:00
psychedelicious
1251dfd7f6
feat(ui): better warnings when transforming
2024-10-15 19:47:50 -04:00
psychedelicious
804ee3a7fb
docs(ui): update docstrings for startTransform
2024-10-15 19:47:50 -04:00
psychedelicious
fc5f9047c2
fix(ui): fit to bbox just flashes transform handles
...
Need to `await` the startTransform call so it can acquire the lock on concurrent transformation operations.
2024-10-15 19:47:50 -04:00
psychedelicious
56f0845552
tidy(ui): consistent naming for selector builder util
2024-10-11 07:51:55 -04:00
psychedelicious
da3f85dd8b
fix(ui): edge case where entity isn't visible until interacting with canvas
...
To trigger the edge case:
- Have an empty layer and non-empty layer
- Select the non-empty layer
- Refresh the page
- Select to the empty layer without doing any other action
- You may be unable to draw on the layer
- Zoom in/out slightly
- You can now draw on it
The problem was not syncing visibility when a layer is selected, leaving the layer hidden. This indirectly disabled interactions.
The fix is to listen for changes to the layer's selected status and sync visibility when that changes.
2024-10-11 07:51:55 -04:00
psychedelicious
3f6acdc2d3
fix(ui): use non-icon version of delete menu item on canvas context menu
2024-10-10 18:23:32 -04:00
psychedelicious
4aa20a95b2
feat(ui): consolidate img2img canvas flow
...
Make the `New Canvas From Image` button do what the `New Img2Img From Image` does.
2024-10-11 09:03:44 +11:00
Mary Hipp
2bd44662f3
possibly a working FLUX controlnet graph
2024-10-10 07:59:29 -04:00
Mary Hipp
5141be8009
hide Control Mode for FLUX control net layer
2024-10-10 07:59:29 -04:00
Mary Hipp
eacdfc660b
ui: enable controlnet controls when FLUX is main model, update schema
2024-10-10 07:59:29 -04:00
psychedelicious
236c065edd
fix(ui): respect grid size when fitting layer to box
2024-10-10 07:43:46 -04:00
psychedelicious
b36c6af0ae
feat(ui): add new img2img canvas from image functionality
...
This replicates the img2img flow:
- Reset the canvas
- Resize the bbox to the image's aspect ratio at the optimal size for the selected model
- Add the image as a raster layer
- Resizes the layer to fit the bbox using the 'fill' strategy
After this completes, the user can immediately click Invoke and it will do img2img.
2024-10-10 07:43:46 -04:00
psychedelicious
4e431a9d5f
feat(ui): add a mutex to CanvasEntityTransformer to prevent concurrent operations
2024-10-10 07:43:46 -04:00
psychedelicious
48a8232285
feat(ui): add entity adapter init callbacks
...
If an entity needs to do something after init, it can use this system. For example, if a layer should be transformed immediately after initializing, it can use an init callback.
2024-10-10 07:43:46 -04:00
psychedelicious
94007fef5b
tidy(ui): remove unused reducer
2024-10-10 07:43:46 -04:00
psychedelicious
9e6fb3bd3f
feat(ui): add hooks for new layer/canvas from image & use them
2024-10-10 07:43:46 -04:00
psychedelicious
8522129639
tidy(ui): "syncCache" -> "syncKonvaCache"
...
Reduce confusion w/ the many other caches
2024-10-10 17:45:05 +11:00
psychedelicious
15033b1a9d
fix(ui): prevent edge case where layers get cached while hidden
2024-10-10 17:45:05 +11:00
psychedelicious
743d78f82b
feat(ui): more debug info for canvas adapters
2024-10-10 17:45:05 +11:00
psychedelicious
06a434b0a2
tidy(ui): clean up awkward selector in CanvasEntityAdapterBase
2024-10-10 17:45:05 +11:00
psychedelicious
7f2fdae870
perf(ui): optimized object rendering
...
- Throttle opacity and compositing fill rendering to 100ms
- Reduce compositing rect rendering to minimum
2024-10-10 17:45:05 +11:00
psychedelicious
00be03b5b9
perf(ui): hide offscreen & uninteractable layers
2024-10-10 17:45:05 +11:00
psychedelicious
0f98806a25
fix(ui): deprecated konva attr
2024-10-10 17:45:05 +11:00
psychedelicious
0f1541d091
perf(ui): disable perfect draw for all shapes
...
This feature involves a certain amount of extra work to ensure stroke and fill with partial opacity render correctly together. However, none of our shapes actually use that combination of attributes, so we can disable this for a minor perf boost.
2024-10-10 17:45:05 +11:00
psychedelicious
c49bbb22e5
feat(ui): track whether entities intersect the bbox
2024-10-10 17:45:05 +11:00
psychedelicious
7bd4b586a6
feat(ui): track whether entities are on-screen or off-screen
2024-10-10 17:45:05 +11:00
psychedelicious
754f049f54
feat(ui): getScaledStageRect returns snapped values
2024-10-10 17:45:05 +11:00