Commit Graph

13390 Commits

Author SHA1 Message Date
psychedelicious
931a4ddc88 fix(ui): disable opacity slider fully when no valid entity selected 2024-09-06 21:27:56 +10:00
psychedelicious
784a615864 fix(ui): layer preview image sometimes not rendering
The canvas size was dynamic based on the container div's size. When the div was hidden (e.g. when selecting another tab), the container's effective size is 0. This resulted in the preview image canvas being drawn at a scale of 0.

Fixed by using an absolute size for the canvas container.
2024-09-06 21:27:56 +10:00
psychedelicious
697c81b74e feat(ui): tweak regional prompt box styles 2024-09-06 21:27:56 +10:00
psychedelicious
d6b8cb9e7c feat(ui): tweak enabled/locked toggle styles 2024-09-06 21:27:56 +10:00
psychedelicious
f4a031a412 feat(ui): tweak filter styling 2024-09-06 21:27:56 +10:00
psychedelicious
1749abbd97 feat(ui): add flip & reset to transform 2024-09-06 21:27:56 +10:00
psychedelicious
1497afcfda tidy(ui): use helper to sync scaled bbox size on model change 2024-09-06 21:27:56 +10:00
psychedelicious
ec9fdace22 fix(ui): randomize seed toggle linked to prompt concat 2024-09-06 21:27:56 +10:00
psychedelicious
c1a039ef91 chore: release v4.2.9.dev5 2024-09-06 21:27:56 +10:00
psychedelicious
69d1edc036 chore(ui): lint 2024-09-06 21:27:56 +10:00
psychedelicious
b69b001755 feat(ui): generalize mask fill, add to action bar 2024-09-06 21:27:56 +10:00
psychedelicious
97414f1886 feat(ui): implement interaction locking on layers 2024-09-06 21:27:56 +10:00
psychedelicious
478daf8614 feat(ui): iterate on layer actions
- Add lock toggle
- Tweak lock and enabled styles
- Update entity list action bar w/ delete & delete all
- Move add layer menu to action bar
- Adjust opacity slider style
2024-09-06 21:27:56 +10:00
psychedelicious
c74b130303 feat(ui): collapsible entity groups 2024-09-06 21:27:56 +10:00
psychedelicious
11bc318d8d tidy(ui): rename some classes to be consistent 2024-09-06 21:27:56 +10:00
psychedelicious
77125bee7e feat(ui): tuned canvas undo/redo
- Throttle pushing to history for actions of the same type, starting with 1000ms throttle.
- History has a limit of 64 items, same as workflow editor
- Add clear history button
- Fix an issue where entity transformers would reset the entity state when the entity is fully transparent, resetting the redo stack. This could happen when you undo to the starting state of a layer
2024-09-06 21:27:56 +10:00
psychedelicious
4354cd7c38 tidy(ui): move all undoable reducers back to canvas slice 2024-09-06 21:27:56 +10:00
psychedelicious
0e31ccaea0 fix(ui): dnd image count 2024-09-06 21:27:56 +10:00
psychedelicious
e32fa8bd35 fix(ui): canvas entity opacity scale 2024-09-06 21:27:56 +10:00
psychedelicious
d209652caa perf(ui): optimize all selectors 2
Mostly selector optimization. Still a few places to tidy up but I'll get to that later.
2024-09-06 21:27:56 +10:00
psychedelicious
fe672ba5e0 perf(ui): optimize all selectors 1
I learned that the inline selector syntax recreates the selector function on every render:

```ts
const val = useAppSelector((s) => s.slice.val)
```

Not good! Better is to create a selector outside the function and use it. Doing that for all selectors now, most of the way through now. Feels snappier.
2024-09-06 21:27:56 +10:00
psychedelicious
04d41085a3 feat(ui): rough out undo/redo on canvas 2024-09-06 21:27:56 +10:00
psychedelicious
36604f752e chore: release v4.2.9.dev4
Canvas dev build.
2024-09-06 21:27:56 +10:00
psychedelicious
9056f446bb fix(ui): handle error from internal konva method
We are dipping into konva's private API for preview images and it appears to be unsafe (got an error once). Wrapped in a try/catch.
2024-09-06 21:27:56 +10:00
psychedelicious
a33d1b979d feat(ui): split out loras state from canvas rendering state 2024-09-06 21:27:56 +10:00
psychedelicious
4670f82e65 feat(ui): split out session state from canvas rendering state 2024-09-06 21:27:56 +10:00
psychedelicious
a07346b364 feat(ui): split out settings state from canvas rendering state 2024-09-06 21:27:56 +10:00
psychedelicious
2b1e930cdf feat(ui): split out tool state from canvas rendering state 2024-09-06 21:27:56 +10:00
psychedelicious
6b75ea3b01 feat(ui): split out params/compositing state from canvas rendering state
First step to restoring undo/redo - the undoable state must be in its own slice. So params and settings must be isolated.
2024-09-06 21:27:56 +10:00
psychedelicious
ff8bc93080 feat(ui): add CanvasModuleBase class to standardize canvas APIs
I did this ages ago but undid it for some reason, not sure why. Caught a few issues related to subscriptions.
2024-09-06 21:27:56 +10:00
psychedelicious
85eff566dd feat(ui): move selected tool and tool buffer out of redux
This ephemeral state can live in the canvas classes.
2024-09-06 21:27:56 +10:00
psychedelicious
9480691de5 feat(ui): move ephemeral state into canvas classes
Things like `$lastCursorPos` are now created within the canvas drawing classes. Consumers in react access them via `useCanvasManager`.

For example:
```tsx
const canvasManager = useCanvasManager();
const lastCursorPos = useStore(canvasManager.stateApi.$lastCursorPos);
```
2024-09-06 21:27:56 +10:00
psychedelicious
463f3dbb35 feat(ui): normalize all actions to accept an entityIdentifier
Previously, canvas actions specific to an entity type only needed the id of that entity type. This allowed you to pass in the id of an entity of the wrong type.

All actions for a specific entity now take a full entity identifier, and the entity identifier type can be narrowed.

`selectEntity` and `selectEntityOrThrow` now need a full entity identifier, and narrow their return values to a specific entity type _if_ the entity identifier is narrowed.

The types for canvas entities are updated with optional type parameters for this purpose.

All reducers, actions and components have been updated.
2024-09-06 21:27:56 +10:00
psychedelicious
72f304baa5 feat(ui): move events into modules who care about them 2024-09-06 21:27:56 +10:00
psychedelicious
b4d01659e0 fix(ui): color picker resets brush opacity 2024-09-06 21:27:56 +10:00
psychedelicious
a733d72089 fix(ui): scaled bbox loses sync 2024-09-06 21:27:56 +10:00
psychedelicious
8d0a75cb5f feat(ui): add context menu to entity list 2024-09-06 21:27:56 +10:00
psychedelicious
8a56702341 chore(ui): bump @invoke-ai/ui-library 2024-09-06 21:27:56 +10:00
psychedelicious
af638cf5ce fix(ui): missing vae precision in graph builders 2024-09-06 21:27:56 +10:00
psychedelicious
839248c74c chore: release v4.2.9.dev3
Instead of using dates, just going to increment.
2024-09-06 21:27:56 +10:00
psychedelicious
4b488de10e feat(ui): use new Result utils for enqueueing 2024-09-06 21:27:56 +10:00
psychedelicious
112d6ead91 fix(ui): graph building issue w/ controlnet 2024-09-06 21:27:56 +10:00
psychedelicious
a5e2e78dee feat(ui): add Result type & helpers
Wrappers to capture errors and turn into results:
- `withResult` wraps a sync function
- `withResultAsync` wraps an async function

Comments, tests.
2024-09-06 21:27:56 +10:00
psychedelicious
b91f79b0bb chore: release v4.2.9.dev20240824 2024-09-06 21:27:56 +10:00
psychedelicious
bc75b0259b fix(ui): lint & fix issues with adding regional ip adapters 2024-09-06 21:27:56 +10:00
psychedelicious
51663c5439 feat(ui): add knipignore tag
I'm not ready to delete some things but still want to build the app.
2024-09-06 21:27:56 +10:00
psychedelicious
86a5e2538c feat(ui): duplicate entity 2024-09-06 21:27:56 +10:00
psychedelicious
ee94b0ce17 feat(ui): autocomplete on getPrefixeId 2024-09-06 21:27:56 +10:00
psychedelicious
03b3139705 feat(ui): paste canvas gens back on source in generate mode 2024-09-06 21:27:56 +10:00
psychedelicious
44b8480832 chore(ui): typegen 2024-09-06 21:27:56 +10:00