psychedelicious
516ecdb0ee
feat(ui): add entity group hiding
2024-08-30 22:18:50 +10:00
psychedelicious
b77675f74d
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-08-30 22:18:50 +10:00
psychedelicious
eea5c8efad
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-30 22:18:50 +10:00
psychedelicious
09f1aac3a3
feat(ui): revise filter implementation
2024-08-30 22:18:50 +10:00
psychedelicious
dd1dcb5eba
fix(ui): add button to delete inpaint mask
2024-08-30 22:18:50 +10:00
psychedelicious
757bd62ebe
feat(ui): add contexts/hooks to access entity adapters directly
2024-08-30 22:18:50 +10:00
psychedelicious
5a3127949b
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-30 22:18:50 +10:00
psychedelicious
ced934c0a3
feat(ui) do not set $canvasManager until ready
2024-08-30 22:18:50 +10:00
psychedelicious
c32445084f
fix(ui): inpaint mask naming
2024-08-30 22:18:50 +10:00
psychedelicious
9f1af0cdaa
feat(ui): efficient canvas compositing
...
Also solves issue of exporting layers at different opacities than what is visible
2024-08-30 22:18:50 +10:00
psychedelicious
0d26cab400
feat(ui): allow multiple inpaint masks
...
This is easier than making it a nullable singleton
2024-08-30 22:18:50 +10:00
psychedelicious
c8de2da3fc
fix(ui): missing rasterization cache invalidations
2024-08-30 22:18:50 +10:00
psychedelicious
ca089a105e
feat(ui): iterate on filter UI, flow
2024-08-30 22:18:50 +10:00
psychedelicious
22000918d6
fix(ui): rehydration data loss
2024-08-30 22:18:50 +10:00
psychedelicious
6affc28da4
feat(ui): sort log namespaces
2024-08-30 22:18:50 +10:00
psychedelicious
f659995e1c
fix(ui): do not merge arrays by index during rehydration
2024-08-30 22:18:50 +10:00
psychedelicious
56fb3e738f
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-30 22:18:50 +10:00
psychedelicious
56d450a907
fix(ui): fix logger filter
...
was accidetnally replacing the filter instead of appending to it.
2024-08-30 22:18:50 +10:00
psychedelicious
d3cdcef36b
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-30 22:18:50 +10:00
psychedelicious
19434e73b4
fix(ui): handle opacity for masks
2024-08-30 22:18:50 +10:00
psychedelicious
f7b3df9583
feat(ui): default background to checkerboard
2024-08-30 22:18:50 +10:00
psychedelicious
4da4b3bd50
feat(ui): clean up logging namespaces, allow skipping namespaces
2024-08-30 22:18:50 +10:00
psychedelicious
e83513882a
chore(ui): bump ui library
2024-08-30 22:18:50 +10:00
psychedelicious
5adc784b6b
fix(ui): do not allow drawing if layer disabled
2024-08-30 22:18:50 +10:00
psychedelicious
f177513523
fix(ui): stale state causing race conditions & extraneous renders
2024-08-30 22:18:50 +10:00
psychedelicious
8ebcf79b1a
fix(ui): do not clear buffer when rendering "real" objects
2024-08-30 22:18:50 +10:00
psychedelicious
c7e5f24704
tidy(ui): remove "filter" from CanvasImageState
2024-08-30 22:18:50 +10:00
psychedelicious
ab3eb32ec8
feat(ui): better editable title
2024-08-30 22:18:50 +10:00
psychedelicious
d76509e5cb
fix(ui): stroke eraserline
2024-08-30 22:18:50 +10:00
psychedelicious
04f56aab82
feat(ui): restore transparency effect for control layers
2024-08-30 22:18:50 +10:00
psychedelicious
c7913cbbbb
feat(ui): use text cursor for entity title
2024-08-30 22:18:50 +10:00
psychedelicious
0556468518
tidy(ui): remove extraneous logging in CanvasStateApi
2024-08-30 22:18:49 +10:00
psychedelicious
1c7ef827b6
feat(ui): better buffer commit logic
2024-08-30 22:18:49 +10:00
psychedelicious
5720ed4d64
feat(ui): render buffer separately from "real" objects
2024-08-30 22:18:49 +10:00
psychedelicious
7f05af4a68
fix(ui): pixelRect should always be integer
2024-08-30 22:18:49 +10:00
psychedelicious
6db615ed5a
fix(ui): only update stage attrs when stage itself is dragged
2024-08-30 22:18:49 +10:00
psychedelicious
465f020c86
feat(ui): add line simplification
...
This fixes some awkward issues where line segments stack up.
2024-08-30 22:18:49 +10:00
psychedelicious
f05b77088f
fix(ui): various things listening when they need not listen
2024-08-30 22:18:49 +10:00
psychedelicious
80a5abf1ad
feat(ui): layer opacity via caching
2024-08-30 22:18:49 +10:00
psychedelicious
7a6e8de60f
feat(ui): reset view fits all visible objects
2024-08-30 22:18:49 +10:00
psychedelicious
8364fa74cf
fix(ui): rerenders when changing canvas scale
2024-08-30 22:18:49 +10:00
psychedelicious
14f4566dd0
fix(ui): do not render rasterized layer unless renderObjects=true
2024-08-30 22:18:49 +10:00
psychedelicious
6145378923
feat(ui): revise app layout strategy, add interaction scopes for hotkeys
2024-08-30 22:18:49 +10:00
psychedelicious
68e2606427
feat(ui): tweak mask patterns
2024-08-30 22:18:49 +10:00
psychedelicious
0f3eb04d1a
fix(ui): dynamic prompts recalcs when presets are loaded
2024-08-30 22:18:49 +10:00
psychedelicious
4a355323b2
fix(ui): use style preset prompts correctly
2024-08-30 22:18:49 +10:00
psychedelicious
8601fbb4ea
fix(ui): discard selected staging image not all other images
2024-08-30 22:18:49 +10:00
psychedelicious
db885aa180
fix(ui): respect image size in staging preview
2024-08-30 22:18:49 +10:00
psychedelicious
c18fb980a2
tidy(ui): cleanup after events change
2024-08-30 22:18:49 +10:00
psychedelicious
b630dbdf20
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-30 22:18:49 +10:00