Commit Graph

12930 Commits

Author SHA1 Message Date
e03e870d5b feat(ui): revised rasterization caching
- use `stable-hash` to generate stable, non-crypto hashes for cache entries, instead of using deep object comparisons
- use an object to store image name caches
2024-08-23 19:47:01 +10:00
9465ff450b feat(ui): revise filter implementation 2024-08-23 19:47:01 +10:00
92906a9575 fix(ui): add button to delete inpaint mask 2024-08-23 19:47:01 +10:00
77f206abe4 feat(ui): add contexts/hooks to access entity adapters directly 2024-08-23 19:47:01 +10:00
44a3f61580 feat(ui): add CanvasManagerProviderGate
This context waits to render its children its until the canvas manager is available. Then its children have access to the manager directly via hook.
2024-08-23 19:47:01 +10:00
0a2afed08b feat(ui) do not set $canvasManager until ready 2024-08-23 19:47:01 +10:00
9b3b961105 fix(ui): inpaint mask naming 2024-08-23 19:47:01 +10:00
9b1828e1aa feat(ui): efficient canvas compositing
Also solves issue of exporting layers at different opacities than what is visible
2024-08-23 19:47:01 +10:00
5101873f49 feat(ui): allow multiple inpaint masks
This is easier than making it a nullable singleton
2024-08-23 19:47:01 +10:00
c612f18114 fix(ui): missing rasterization cache invalidations 2024-08-23 19:47:01 +10:00
7e400d876f feat(ui): iterate on filter UI, flow 2024-08-23 19:47:01 +10:00
677dddcfc9 fix(ui): rehydration data loss 2024-08-23 19:47:01 +10:00
0792b9175e feat(ui): sort log namespaces 2024-08-23 19:47:01 +10:00
e4829f80af fix(ui): do not merge arrays by index during rehydration 2024-08-23 19:47:01 +10:00
bb760f3eb4 fix(ui): clone parsed data during state rehydration
Without this, the objects and arrays in `parsed` could be mutated, and the log statment would show the mutated data.
2024-08-23 19:47:01 +10:00
388c65287b fix(ui): fix logger filter
was accidetnally replacing the filter instead of appending to it.
2024-08-23 19:47:01 +10:00
12cd41e05c fix(ui): race condition queue status
Sequence of events causing the race condition:
- Enqueue batch
- Invalidate `SessionQueueStatus` tag
- Request updated queue status via HTTP - batch still processing at this point
- Batch completes
- Event emitted saying so
- Optimistically update the queue status cache, it is correct
- HTTP request makes it back and overwrites the optimistic update, indicating the batch is still in progress

FIxed by not invalidating the cache.
2024-08-23 19:47:01 +10:00
7765c03949 fix(ui): handle opacity for masks 2024-08-23 19:47:01 +10:00
3daa80c57f feat(ui): default background to checkerboard 2024-08-23 19:47:01 +10:00
5dbbef4ebd feat(ui): clean up logging namespaces, allow skipping namespaces 2024-08-23 19:47:01 +10:00
db33b3f7b5 chore(ui): bump ui library 2024-08-23 19:47:01 +10:00
8ffcf2a6be fix(ui): do not allow drawing if layer disabled 2024-08-23 19:47:01 +10:00
2e7ae6a07e fix(ui): stale state causing race conditions & extraneous renders 2024-08-23 19:47:01 +10:00
fea1711f0c fix(ui): do not clear buffer when rendering "real" objects 2024-08-23 19:47:01 +10:00
2a3546db97 tidy(ui): remove "filter" from CanvasImageState 2024-08-23 19:47:01 +10:00
285c266612 feat(ui): better editable title 2024-08-23 19:47:01 +10:00
426ad54c53 fix(ui): stroke eraserline 2024-08-23 19:47:01 +10:00
fc75f7919f feat(ui): restore transparency effect for control layers 2024-08-23 19:47:01 +10:00
6c6b1aaff6 feat(ui): use text cursor for entity title 2024-08-23 19:47:01 +10:00
c319d653ac tidy(ui): remove extraneous logging in CanvasStateApi 2024-08-23 19:47:01 +10:00
d887e474e7 feat(ui): better buffer commit logic 2024-08-23 19:47:01 +10:00
da7b52d6ba feat(ui): render buffer separately from "real" objects 2024-08-23 19:47:01 +10:00
b5aa308593 fix(ui): pixelRect should always be integer 2024-08-23 19:47:01 +10:00
0b7ceb3bb6 fix(ui): only update stage attrs when stage itself is dragged 2024-08-23 19:47:01 +10:00
3a70cefda2 feat(ui): add line simplification
This fixes some awkward issues where line segments stack up.
2024-08-23 19:47:01 +10:00
4b609251e1 fix(ui): various things listening when they need not listen 2024-08-23 19:47:01 +10:00
0839eac0f7 feat(ui): layer opacity via caching 2024-08-23 19:47:01 +10:00
5f2a7feeee feat(ui): reset view fits all visible objects 2024-08-23 19:47:01 +10:00
982535eb92 fix(ui): rerenders when changing canvas scale 2024-08-23 19:47:01 +10:00
0c2b8edc8d fix(ui): do not render rasterized layer unless renderObjects=true 2024-08-23 19:47:01 +10:00
f78f4ca25f feat(ui): revise app layout strategy, add interaction scopes for hotkeys 2024-08-23 19:47:01 +10:00
d6b3e6c07d feat(ui): tweak mask patterns 2024-08-23 19:47:01 +10:00
071ff8e74a fix(ui): dynamic prompts recalcs when presets are loaded 2024-08-23 19:47:01 +10:00
1ea8aafca1 fix(ui): use style preset prompts correctly 2024-08-23 19:46:05 +10:00
533dd221f8 fix(ui): discard selected staging image not all other images 2024-08-23 19:46:05 +10:00
2b325c6683 fix(ui): respect image size in staging preview 2024-08-23 19:46:05 +10:00
3845b1b3e6 tidy(ui): cleanup after events change 2024-08-23 19:46:05 +10:00
cea7890a67 feat(ui): move socket event handling out of redux
Download events and invocation status events (including progress images) are very frequent. There's no real need for these to pass through redux. Handling them outside redux is a significant performance win - far fewer store subscription calls, far fewer trips through middleware.

All event handling is moved outside middleware. Cleanup of unused actions and listeners to follow.
2024-08-23 19:46:05 +10:00
c38fe8025d fix(ui): rebase conflicts 2024-08-23 19:46:05 +10:00
f1de95349c fix(ui): update compositing rect when fill changes 2024-08-23 19:46:05 +10:00