- galleryView: hoist Ctrl/Meta key handlers to module scope and remove them (plus a new blur reset) in teardownGalleryView(); disconnect the ResizeObserver; clear the ctrl-active body class; reset header-reveal state so a re-initialised gallery starts clean.
- overlay: make destroy() idempotent and make updateOverlayBounds() a no-op afterwards, so a pending rAF/ResizeObserver callback can't re-observe elements after disconnect().
ComfyUI matches keybindings on KeyboardEvent.key, which follows the active layout (physical Q is 'й' on a Russian layout). Re-dispatch non-ASCII keys as the US-QWERTY key of the same physical position (event.code) in the window capture phase, before the frontend handler runs.
Skips text fields, IME composition, named keys and layouts that already report ASCII. Toggle: 'Hotkeys work on any keyboard layout' (on by default). en/ru strings added.
- Fixed memory leak by revoking live preview blob URLs
- Fixed race condition that falsely marked completed runs as Cancelled
- Fixed double-decker card layout: 3D, Audio, and File cards now embed workflow images as background thumbnails
- Fixed Runtime Preview mode failing to deactivate after closing Text or 3D viewers
- Prevented video dimensions from leaking onto 3D and Audio cards
- Sorted workflow outputs by canvas execution order so final node output is always prioritized
- Fixed Windows Explorer failing to highlight files when paths have spaces