Repository navigation
Preserve recorded stroke RGB through Engine rendering and export - #784
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.
Selected pen RGB could be applied to an overlay but was absent from saved strokes, so keyframes and exports used fixed colors. Preserve optional exact sRGB bytes on each stroke, snapshot native selection at stroke begin (pins at acceptance), and carry those bytes through the existing keyframe and Linux/macOS export renderers. Absence retains the unnamed legacy defaults and serialization; black remains distinct from absence.
The Rust process seam is
SharedCaptureTelemetry::set_stroke_rgb(Option<[u8;3]>)/stroke_rgb(). SDK 0.3.2 adds public/captureStrokeRgband optionalStrokeFacts.strokes[].rgb, validated through the existing sealed fact API. Palette mapping, config writes and process-scoped effect application remain with Record/Platform. Capture/2 stroke collection, whiteboard UI adoption, installed routing and #658 activation are not claimed.Existing renderers and clip/rebase logic are reused. Existing test modules move out of three touched oversized files to meet the repository's 2,000-line guard.
Validation: independent Rust/SDK and Swift/test-move source reviews; 45 SDK tests and fresh packed runtime/declaration imports; 72 Agent consumer tests; root build and 937 passing root tests (14 existing ignored), followed by current-base shared/handoff checks. Real Linux H.264 export fully decodes with colored ink. On macOS 26.6.2/Xcode 27, the complete Swift helper compiles and file-only native tests verify exact stroke RGB, independently colored pin/laser, invalid tuples, and byte-identical absent-color output against the original renderer. Explicit sRGB fixes the display-profile conversion exposed by the first native test. The owned Mac session is stopped with cleanup confirmed. No screen or microphone capture was used for this prerequisite.