Repository navigation
Fix preset/snapshot Undo integrity and preserve 16-bit images through GPU upload - #212
Merged
Merged
Conversation
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Undoing a preset during a mesh fade restored its shape only until the next tick. Snapshot Undo retained added animation definitions and lost runtime phase/transport; Redo also used a mutable list index. This cancels owned pending work, restores exact animation state with Undo-only metadata, removes layers recreated by a recall when undoing it, and follows stable snapshot IDs. Parameter outputs and owned animation clocks restore atomically under the engine lock. Unrelated animation clocks keep advancing; driver-only presets restore their parameter outputs immediately. Animation-card folding/pinning stays independent of recall Undo. Mask presets, partial snapshot updates, recall and concordance now include layer mattes.
Integer image sources wider than eight bits now retain RGBA64 samples through layer import and ISF image inputs/imports, uploading into normalized GL_RGBA16 textures. Eight-bit images keep RGBA8. Texture allocation now tracks storage format as well as dimensions, including equal-size 8/16/float switches.
Validation: native macOS application and engine test executable compile; 19 local headless/widget CTest areas pass. The three new/extended CPU/UI regression areas also pass under ASan + UBSan (leak detection disabled). The initial Undo regressions failed on three assertions before correction. New targeted GL areas cover actual PNG16 source upload, more than 1000 ramp levels, exact color/alpha/orientation, image inputs/imports, format switches, source replacement and recreated-layer Undo/Redo. The final-commit Linux and Windows CI suites pass, including the targeted GL regressions and packaged-application smoke tests. Linux reports 64 passing CTest tests. CI memory safety, ThreadSanitizer, UI scenario and fuzzing also pass. The macOS CI engine tests are still running; the PR remains draft pending that result. The exhaustive ISF library sweep stays disabled.
The one-page docs roadmap reflects completed work. This preserves source precision; it does not add color management, floating-point HDR import or physical 10-bit output. RGBA16 source textures use twice the memory of RGBA8.