Files
Miguel Ángel db1f696543 fix(studio): release scrubber drag on visibility/blur, restore click-focus
Addresses #308 review feedback from @jrusso1020:

- visibilitychange + window blur: synthesize drag cleanup when the page
  is backgrounded mid-drag. iOS Safari does not reliably fire
  pointercancel on alt-tab / incoming call / app switch, which would
  leave isDraggingRef latched true until the next pointerdown.
- Restore focus on pointerdown via e.currentTarget.focus() after the
  preventDefault() call, so the click-then-arrow-key seek workflow
  works without requiring an explicit Tab first.
- Clarify the releasePointerCapture try/catch comment so the next
  reader does not chase the second-invocation no-op throw as a bug.
2026-04-18 01:42:15 +02:00
..
2026-03-21 22:43:56 -07:00
2026-04-17 12:15:37 +02:00
2026-03-21 22:43:56 -07:00

@hyperframes/studio

Browser-based composition editor UI for Hyperframes. Provides a visual timeline, code editor, and live preview for building video compositions.

Install

npm install @hyperframes/studio

What it does

The studio is a React application with:

  • Visual timeline — drag, resize, and arrange elements on tracks
  • Code editor — edit HTML and GSAP scripts with CodeMirror (syntax highlighting, autocomplete)
  • Live preview — see changes in real time as you edit
  • Composition inspector — view and modify element properties

Development

The studio is embedded in the hyperframes preview command. To develop the studio UI itself:

cd packages/studio
bun run dev        # Start Vite dev server
bun run build      # Build for production
bun run typecheck  # Type-check

Tech stack

  • React 18/19, Zustand (state management)
  • CodeMirror 6 (editor)
  • Tailwind CSS (styling)
  • Vite (bundler)
  • Phosphor Icons

Documentation

Full documentation: hyperframes.heygen.com/packages/studio