feat(studio): keyframe diamonds, navigation, context menu [4/6]#1170
feat(studio): keyframe diamonds, navigation, context menu [4/6]#1170miguel-heygen wants to merge 1 commit into
Conversation
|
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.
This stack of pull requests is managed by Graphite. Learn more about stacking. |
56a0a44 to
40826ce
Compare
3708bb9 to
e92c7ad
Compare
40826ce to
aee3a23
Compare
e92c7ad to
f00b96b
Compare
aee3a23 to
554f0ac
Compare
f00b96b to
85dadcb
Compare
554f0ac to
7e14d2b
Compare
85dadcb to
50e19d7
Compare
7e14d2b to
dfa9793
Compare
dfa9793 to
eee8f91
Compare
2f0902d to
ac80b0f
Compare
eee8f91 to
197a649
Compare
ac80b0f to
a6b6208
Compare
197a649 to
02cf6cf
Compare
a6b6208 to
5106898
Compare
02cf6cf to
079fcc5
Compare
5106898 to
c253e28
Compare
079fcc5 to
fa450e6
Compare
jrusso1020
left a comment
There was a problem hiding this comment.
Pure-additive UI components (+513/-0, 4 files). Diamond markers, navigation arrows, context menu — straightforward composition of existing Studio primitives. Three angles worth verifying before merge:
1. Accessibility
Diamond markers are visual-only by default. For keyboard users, the ◀ ◆ ▶ navigation needs:
- Focusable elements (
tabindex="0"or buttons). aria-label/aria-currenton each diamond reflecting position (e.g., "Keyframe at 50%, x=100, opacity=1").- Arrow-key handling within
KeyframeNavigationto seek prev/next.
The PR body says "Click diamond → seek + select" — that's mouse-only. Confirm keyboard parity exists or is a tracked follow-up.
2. Context menu — native conflict + escape behavior
Two checks for KeyframeDiamondContextMenu:
- Native browser context menu suppressed:
event.preventDefault()on theoncontextmenuhandler. Without it, both the custom menu and the native menu render. - Escape / outside-click dismissal: standard expectation. Verify in the test plan.
3. Diamond hit-tolerance
If diamonds are small (timeline is dense), click-tolerance matters. hf#1188 in this stack tunes this to "0.5% vs 0.05%" — meaning the original tolerance was very tight. Worth verifying this PR's initial tolerance value is sane on first land, or flagging in the description that #1188 retroactively widens it.
Architecture is fine. Pure additive, no risk to existing flows. The above are all UX-polish concerns appropriate for a "review with eyes, not strict gates" pass.
Review by Jerrai (hyperframes specialist)

Summary
KeyframeDiamond toggle, KeyframeNavigation (◀ ◆ ▶), TimelineClipDiamonds with connecting lines, KeyframeDiamondContextMenu with ease picker.
Part 4 of 6 — UI components (new files only). Depends on PR 3.
Test plan