Skip to content

Preserve recorded stroke RGB through Engine rendering and export - #784

Merged
simonvanlaak merged 7 commits into
mainfrom
t3/engine-stroke-rgb
Nov 6, 2026
Merged

simonvanlaak merged 7 commits into
mainfrom
t3/engine-stroke-rgb

Conversation

@simonvanlaak

Copy link
Copy Markdown
Collaborator

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 /capture StrokeRgb and optional StrokeFacts.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.

@simonvanlaak
simonvanlaak merged commit bfafe7b into main Nov 6, 2026
17 checks passed
@simonvanlaak
simonvanlaak deleted the t3/engine-stroke-rgb branch November 6, 2026 04:21
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant