-
Notifications
You must be signed in to change notification settings - Fork 5
Description
User Story
As a user, I want the clip's text strip to be the drag handle, so that I can move clips from the header and use the body for content-level interactions.
Problem
Clip text is only an absolute label today, not a separate interactive rail. Moving, slipping, and content inspection all compete for the same surface.
Root Cause
src/components/timeline/ClipBlock.tsx infers move or resize from one shared hit area, so there is no dedicated header drag handle and no safe body-only interaction region.
Solution
Split clip rendering into a header rail plus waveform body. Make the rail own move interactions and expose grab / grabbing cursor feedback, while leaving the body available for content-focused gestures.
Verification
- Add component coverage for the header rail cursor and ARIA affordance
- Manually verify header drag moves the clip
- Verify agent-compatible pointer automation can target the rail reliably
- Run
npx tsc --noEmit - Run
npm run build
Notes
This issue covers the interaction-surface refactor and should preserve edge resize, fade, and warp handle behavior.