psychedelicious
c8e8cf9dfb
feat(ui): add entity group hiding
2024-09-06 21:27:37 +10:00
psychedelicious
ac8122a154
feat(ui): move all caching out of redux
...
While we lose the benefit of the caches persisting across reloads, this is a much simpler way to handle things. If we need a persistent cache, we can explore it in the future.
2024-09-06 21:27:37 +10:00
psychedelicious
aa7c909f14
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-09-06 21:27:37 +10:00
psychedelicious
40d294b29c
feat(ui): revise filter implementation
2024-09-06 21:27:36 +10:00
psychedelicious
ff1fd5b5b5
fix(ui): add button to delete inpaint mask
2024-09-06 21:27:36 +10:00
psychedelicious
6aa87d7df2
feat(ui): add contexts/hooks to access entity adapters directly
2024-09-06 21:27:36 +10:00
psychedelicious
7732eeb815
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-09-06 21:27:36 +10:00
psychedelicious
9eb37feb6c
feat(ui) do not set $canvasManager until ready
2024-09-06 21:27:36 +10:00
psychedelicious
e3b38339a0
fix(ui): inpaint mask naming
2024-09-06 21:27:36 +10:00
psychedelicious
f92695e677
feat(ui): efficient canvas compositing
...
Also solves issue of exporting layers at different opacities than what is visible
2024-09-06 21:27:36 +10:00
psychedelicious
9473d54fc7
feat(ui): allow multiple inpaint masks
...
This is easier than making it a nullable singleton
2024-09-06 21:27:36 +10:00
psychedelicious
33783eae4f
fix(ui): missing rasterization cache invalidations
2024-09-06 21:27:36 +10:00
psychedelicious
f6c3570c26
feat(ui): iterate on filter UI, flow
2024-09-06 21:27:36 +10:00
psychedelicious
96a76a763e
fix(ui): rehydration data loss
2024-09-06 21:27:36 +10:00
psychedelicious
209bc925c0
feat(ui): sort log namespaces
2024-09-06 21:27:36 +10:00
psychedelicious
a77fb427d0
fix(ui): do not merge arrays by index during rehydration
2024-09-06 21:27:36 +10:00
psychedelicious
6fc358b9ea
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-09-06 21:27:36 +10:00
psychedelicious
742ac3088d
fix(ui): fix logger filter
...
was accidetnally replacing the filter instead of appending to it.
2024-09-06 21:27:36 +10:00
psychedelicious
8b958e5280
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-09-06 21:27:36 +10:00
psychedelicious
71c727e586
fix(ui): handle opacity for masks
2024-09-06 21:27:36 +10:00
psychedelicious
c590e8bd6f
feat(ui): default background to checkerboard
2024-09-06 21:27:36 +10:00
psychedelicious
71a13c3e91
feat(ui): clean up logging namespaces, allow skipping namespaces
2024-09-06 21:27:36 +10:00
psychedelicious
d7e7f049e7
chore(ui): bump ui library
2024-09-06 21:27:36 +10:00
psychedelicious
b23332e167
fix(ui): do not allow drawing if layer disabled
2024-09-06 21:27:36 +10:00
psychedelicious
21c637c365
fix(ui): stale state causing race conditions & extraneous renders
2024-09-06 21:27:36 +10:00
psychedelicious
2b7aecb346
fix(ui): do not clear buffer when rendering "real" objects
2024-09-06 21:27:36 +10:00
psychedelicious
5c669f7925
tidy(ui): remove "filter" from CanvasImageState
2024-09-06 21:27:36 +10:00
psychedelicious
748f445de5
feat(ui): better editable title
2024-09-06 21:27:36 +10:00
psychedelicious
2127ee9a09
fix(ui): stroke eraserline
2024-09-06 21:27:36 +10:00
psychedelicious
7ccb1c5938
feat(ui): restore transparency effect for control layers
2024-09-06 21:27:36 +10:00
psychedelicious
26d1a2ebfe
feat(ui): use text cursor for entity title
2024-09-06 21:27:36 +10:00
psychedelicious
e0bd683d88
tidy(ui): remove extraneous logging in CanvasStateApi
2024-09-06 21:27:36 +10:00
psychedelicious
3c5332b236
feat(ui): better buffer commit logic
2024-09-06 21:27:36 +10:00
psychedelicious
d4e847bd9a
feat(ui): render buffer separately from "real" objects
2024-09-06 21:27:36 +10:00
psychedelicious
cee16536cd
fix(ui): pixelRect should always be integer
2024-09-06 21:27:36 +10:00
psychedelicious
811e75dc67
fix(ui): only update stage attrs when stage itself is dragged
2024-09-06 21:27:36 +10:00
psychedelicious
a4a77d70f7
feat(ui): add line simplification
...
This fixes some awkward issues where line segments stack up.
2024-09-06 21:27:36 +10:00
psychedelicious
13e2de3cb4
fix(ui): various things listening when they need not listen
2024-09-06 21:27:36 +10:00
psychedelicious
7925bbf454
feat(ui): layer opacity via caching
2024-09-06 21:27:36 +10:00
psychedelicious
39eb0a01d2
feat(ui): reset view fits all visible objects
2024-09-06 21:27:36 +10:00
psychedelicious
305e50004a
fix(ui): rerenders when changing canvas scale
2024-09-06 21:27:36 +10:00
psychedelicious
9974784596
fix(ui): do not render rasterized layer unless renderObjects=true
2024-09-06 21:27:36 +10:00
psychedelicious
105c5a7fd4
feat(ui): revise app layout strategy, add interaction scopes for hotkeys
2024-09-06 21:27:36 +10:00
psychedelicious
7baad9c72e
feat(ui): tweak mask patterns
2024-09-06 21:27:36 +10:00
psychedelicious
a5e8705ea3
fix(ui): dynamic prompts recalcs when presets are loaded
2024-09-06 21:27:36 +10:00
psychedelicious
7b2a5c3a30
fix(ui): use style preset prompts correctly
2024-09-06 21:27:36 +10:00
psychedelicious
3dcb33026a
fix(ui): discard selected staging image not all other images
2024-09-06 21:27:36 +10:00
psychedelicious
e956ea5482
fix(ui): respect image size in staging preview
2024-09-06 21:27:36 +10:00
psychedelicious
64f50ab278
tidy(ui): cleanup after events change
2024-09-06 21:27:36 +10:00
psychedelicious
b152937f30
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-09-06 21:27:36 +10:00