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
psychedelicious
e6960320dd
feat(nodes): CanvasV2MaskAndCropInvocation can paste generated image back on source
...
This is needed for `Generate` mode.
2024-09-06 21:27:56 +10:00
psychedelicious
775353fe82
fix(ui): extraneous entity preview updates
2024-09-06 21:27:56 +10:00
psychedelicious
e013aff9fe
fix(ui): newly-added entities are selected
2024-09-06 21:27:56 +10:00
psychedelicious
a22bf4c296
feat(ui): add crosshair to color picker
2024-09-06 21:27:56 +10:00
psychedelicious
12a00de2ec
fix(ui): color picker ignores alpha
2024-09-06 21:27:56 +10:00
psychedelicious
6cbaf7e0ae
fix(ui): calculate renderable entities correctly in tool module
2024-09-06 21:27:56 +10:00
psychedelicious
9b8d814082
feat(ui): better color picker
2024-09-06 21:27:56 +10:00
psychedelicious
20a0ed81c5
feat(ui): colored mask preview image
2024-09-06 21:27:56 +10:00
psychedelicious
a040d1d2a6
fix(ui): new rectangles don't trigger rerender
2024-09-06 21:27:56 +10:00
psychedelicious
7c68b889eb
chore: bump version v4.2.9.dev20240823
2024-09-06 21:27:56 +10:00
psychedelicious
5ea3c11883
feat(ui): disable most interaction while filtering
2024-09-06 21:27:37 +10:00
psychedelicious
f355d907e6
fix(ui): filter preview offset
2024-09-06 21:27:37 +10:00
psychedelicious
da5b99c840
feat(ui): tweak layout of staging area toolbar
2024-09-06 21:27:37 +10:00
psychedelicious
4f9c4f7b40
chore(ui): typegen
2024-09-06 21:27:37 +10:00
psychedelicious
143c47c887
tidy(app): clean up app changes for canvas v2
2024-09-06 21:27:37 +10:00
psychedelicious
2ca5aeda96
feat(ui): use singleton for clear q confirm dialog
2024-09-06 21:27:37 +10:00
psychedelicious
9b1ee633e6
fix(ui): rip out broken recall logic, NO TS ERRORS
2024-09-06 21:27:37 +10:00
psychedelicious
c06998184e
chore(ui): lint
2024-09-06 21:27:37 +10:00
psychedelicious
84aa2b94e5
fix(ui): staging area interaction scopes
2024-09-06 21:27:37 +10:00
psychedelicious
64f7c7bf36
fix(ui): staging area actions
2024-09-06 21:27:37 +10:00