mirror of
https://github.com/invoke-ai/InvokeAI.git
synced 2026-02-03 06:05:30 -05:00
* restore send-to functionality * lint * feat(ui): add getImageMetadata helper * feat(ui): updated usePreselectedImage logic * fix(ui): race condition when creating & initializing canvas entity adapters There was a race condition when the canvas was reset as it was initializing. This could occur when the "use preselected image" functionality was triggered. It was possible to get an error (non-app-breaking) when attempting to initialize an entity: 1. Canvas initializes 2. Canvas starts creating and initializing all entities (this happens in `CanvasEntityRendererModule.render`) 3. Canvas is reset before that process finishes, clearing state 4. The method call from 2) attempts to initialize an entity that has been deleted from state and fails Changes to fix this: - Split `CanvasEntityRendererModule.render` into individual methods for each entity type, each with their own store subscription - Do not `await` initialization after creating the entity adapter classes - let them initialize in the background So the `render` method now completes very fast - quick enough that we don't run into this race condition. It's possible that something will change in the future, and this race condition will come back. In that case, we could use mutexes in `CanvasEntityRendererModule` to prevent the failure condition. It's a bit more complicated to do that so I'm skipping it for now. * feat(ui): export workflow library is open atom * feat(ui): export image viewer atom * tidy(ui): organise style presets menu state * feat(ui): consolidate studio init actions * build(ui): export type StudioInitAction * feat(ui): add getStylePreset helper * feat(ui): add toasts to useStudioInitAction * tidy(ui): comment & minor cleanup for useStudioInitAction * chore(ui): lint * only show version when local --------- Co-authored-by: Mary Hipp <maryhipp@Marys-MacBook-Air.local> Co-authored-by: psychedelicious <4822129+psychedelicious@users.noreply.github.com>