Skip to content

fix(parsers): preserve duration-authored keyframe timing#2675

Draft
miguel-heygen wants to merge 1 commit into
codex/studio-timeline-a-ease-editor-v2from
codex/studio-timeline-a-array-timing-v2
Draft

fix(parsers): preserve duration-authored keyframe timing#2675
miguel-heygen wants to merge 1 commit into
codex/studio-timeline-a-ease-editor-v2from
codex/studio-timeline-a-array-timing-v2

Conversation

@miguel-heygen

@miguel-heygen miguel-heygen commented Jul 21, 2026

Copy link
Copy Markdown
Collaborator

What

Preserve duration-authored timing when parsing and editing GSAP object-array keyframes.

This is Family A, PR 4 of 4. Prerequisite: codex/studio-timeline-a-ease-editor-v2. It is the Family A tip.

Review context: #2582 and the post-certification review fixes for #2387.

Why

Object-array keyframes use per-step durations as their timing source. Treating them as evenly distributed percentages can create, update, or remove a keyframe at the wrong authored position.

How

A single timing helper owns duration-to-percentage conversion and index resolution. Parser and writer mutations use that shared result, preserve per-step durations, and synthesize an outer duration only when the source does not already provide one.

Test plan

  • Unit tests added/updated — 434 focused parser/writer tests passed with 4 intentional skips at this PR boundary
  • Manual testing performed — duration-authored add, update, remove, and round-trip behavior is covered by the certified integrated QA matrix
  • Documentation updated (not applicable; internal parser behavior)

Copy link
Copy Markdown
Collaborator Author

Warning

This pull request is not mergeable via GitHub because a downstack PR is open. Once all requirements are satisfied, merge this PR as a stack on Graphite.
Learn more

This stack of pull requests is managed by Graphite. Learn more about stacking.

@miguel-heygen
miguel-heygen force-pushed the codex/studio-timeline-a-ease-editor-v2 branch from 7512a12 to bd750ff Compare July 21, 2026 04:33
@miguel-heygen
miguel-heygen force-pushed the codex/studio-timeline-a-array-timing-v2 branch from 479650a to 1e56102 Compare July 21, 2026 04:33
@miguel-heygen
miguel-heygen force-pushed the codex/studio-timeline-a-ease-editor-v2 branch from bd750ff to 982bebe Compare July 21, 2026 04:43
@miguel-heygen
miguel-heygen force-pushed the codex/studio-timeline-a-array-timing-v2 branch from 1e56102 to 03878f4 Compare July 21, 2026 04:43
@miguel-heygen
miguel-heygen changed the base branch from codex/studio-timeline-a-ease-editor-v2 to graphite-base/2675 July 21, 2026 05:53
@miguel-heygen
miguel-heygen force-pushed the codex/studio-timeline-a-array-timing-v2 branch from 03878f4 to cc6ca44 Compare July 21, 2026 05:54
@miguel-heygen
miguel-heygen changed the base branch from graphite-base/2675 to codex/studio-timeline-a-ease-editor-v2 July 21, 2026 05:54
@miguel-heygen
miguel-heygen changed the base branch from codex/studio-timeline-a-ease-editor-v2 to graphite-base/2675 July 21, 2026 10:21
@miguel-heygen
miguel-heygen force-pushed the codex/studio-timeline-a-array-timing-v2 branch from cc6ca44 to 503372f Compare July 21, 2026 10:23
@miguel-heygen
miguel-heygen changed the base branch from graphite-base/2675 to codex/studio-timeline-a-ease-editor-v2 July 21, 2026 10:23
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