Make nested composition `data-playback-start` also shift descendant media
Los mantenedores suelen responder en 1 día
@valeriangalliat ya está trabajando en esto.
Desde el 10/9/2026.
Evaluación
- Dificultad
- 4/5
- Tiempo estimado
- 3-5 días
- Aptitud para principiantes
- 48/100
- Tipo de issue
- Nueva funcionalidad
- Claridad
- Bastante claro
- Estado de actividad
- Tranquilo
- Stack tecnológico
- typescript
- Área
- web-dev
Línea de trabajo
Start by reading the preview startResolver and render parseSubCompositions paths described in the issue, then compare how nested data-playback-start reaches descendant video and audio elements. Decide the intended contract with maintainers; done means the chosen behavior is consistent in Studio preview, CLI preview, and render capture, with tests or a documented alternative.
Escrito por el modelo de indexación a partir del texto del issue.
Descripción
Problem
data-playback-start on a nested composition slot seeks the child GSAP timeline. Nested <video> / <audio> still play from local t=0 / their own data-media-start. Preview (startResolver) and render (parseSubCompositions) agree.
Docs treat a nested composition’s data-playback-start as which moment of the child GSAP timeline shows first, not as a trim of media inside that scene.
The gap: start-trimming a nested scene (NLE-style) does not move media inside it.
I'm not sure whether that split is the intentional contract, or whether a slot in-point should also shift descendant media.
➡️ I have code ready for this here (outline below) - happy to make a PR with this if that's a welcome addition.
Proposed solution
If a nested composition’s data-playback-start should also trim media inside that scene (NLE-style):
<div
data-composition-id="scene"
data-composition-src="compositions/scene.html"
data-start="1"
data-duration="2"
data-playback-start="1.5"
></div>
A nested <video data-start="0"> would appear at t=1, playing from 1.5s into the file, not from the start of the file.
- Descendant media is shifted by the slot offset (
master = hostStart − playbackStart + local) - Clips that end entirely before that offset never appear
- Clips that overlap it start at the slot and skip the overlap in the file
- Same behavior in preview and in render extract
- On the slot,
data-media-startstays an alias ofdata-playback-start. On<video>/<audio>,data-media-startstays a source-file offset for that element only.
Alternatives considered
- Leave as-is (GSAP only). Authors set
data-media-starton each nested<video>/<audio>. Awkward for “trim this nested scene,” and wrong for media that is not at local t=0. - Rewrite child attributes when inlining so extract never sees a slot offset. Preview still has to apply
hostStart − playbackStart, so the two paths can drift. - Docs only. Spell out that composition
data-playback-startnever applies to nested media. No code change.
Additional context
Repro (any clip.mp4 at least 4s):
<!-- index.html -->
<div data-composition-id="main" data-start="0" data-duration="4" data-width="1920" data-height="1080">
<div
data-composition-id="scene"
data-composition-src="compositions/scene.html"
data-start="1"
data-duration="2"
data-playback-start="1.5"
></div>
</div>
<!-- compositions/scene.html -->
<template id="scene-template">
<div data-composition-id="scene" data-width="1920" data-height="1080">
<video id="clip" src="clip.mp4" data-start="0" data-duration="4" muted></video>
</div>
</template>
On current main (0.7.107): GSAP on scene starts 1.5s into that timeline; the <video> starts at the beginning of the file.
Studio preview, CLI preview, and render capture all use the same runtime seek for nested-comp GSAP, so that half is consistent. Nested media is also consistent: all paths ignore the slot’s data-playback-start.
- Lenguaje dominante
- TypeScript
- Estrellas
- 54.1k
- Forks
- 4.9k
- Merge medio
- 7 h 19 min
- PR fusionados (30 d)
- 746
Preparar el entorno
Este proyecto no incluye contenedor de desarrollo, Dockerfile ni guía de contribución, así que la configuración corre por tu cuenta: empieza por su README y consulta nuestra guía para la primera contribución para los pasos generales.
Primeros pasos
- Lee el issue completo y luego la guía de contribución del proyecto.
- Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
- Haz un fork del repositorio y trabaja en una rama.
- Abre un pull request que haga referencia al número del issue.
Más de heygen-com/hyperframes
-
gcp-cloud-run image pins Chrome 148, which drops `background-clip: text` glyphs inside layered children; the CLI's Chrome 152 paints themPosiblemente ocupada Un pull request vinculado a esta issue está abierto o ya se fusionó. Abierto
Dificultad 1/5 Menos de una hora Aptitud para principiantes 84/100
heygen-com/hyperframes#5117 ·
Los mantenedores suelen responder en 1 día
-
Docs: clarify that "Enable auto-update" is only available in the Claude Code terminal (CLI) /plugin UIPosiblemente ocupada @rumi7911 la tomó hace 2 días. Abierto
Dificultad 2/5 1-3 horas Aptitud para principiantes 85/100
heygen-com/hyperframes#5027 ·
Los mantenedores suelen responder en 1 día
-
fix(producer): propagate useGpu to HDR layered streaming encoderPosiblemente ocupada @Monster-GM la tomó hace 4 días. Abierto
Dificultad 2/5 1-3 horas Aptitud para principiantes 87/100
heygen-com/hyperframes#5002 ·
Los mantenedores suelen responder en 1 día
-
skills: remoteHeadSha() can open a Git Credential Manager dialog on Windows (GIT_TERMINAL_PROMPT does not cover GUI helpers; slug unvalidated)Posiblemente ocupada @RaphaelFakhri la tomó hace 8 días. Abierto
Dificultad 2/5 1-3 horas Aptitud para principiantes 78/100
heygen-com/hyperframes#4702 · 1 comentario · 1 reacción ·
Los mantenedores suelen responder en 1 día
-
Studio catalog prompt editor has no accessible namePosiblemente ocupada @lorenzozanee la tomó hace 14 días. Abiertobug difficulty/easy triage/ready
Dificultad 2/5 1-3 horas Aptitud para principiantes 78/100
heygen-com/hyperframes#4384 ·
Los mantenedores suelen responder en 1 día
Todos los issues de heygen-com/hyperframes
Issues similares
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 76/100
Los mantenedores suelen responder en 1 día
-
Dificultad 1/5 1-3 horas Aptitud para principiantes 84/100
answerLoops/answerLoops#345 ·
Los mantenedores suelen responder en 1 día
-
Dificultad 1/5 Menos de una hora Aptitud para principiantes 82/100
siyuan-note/siyuan#20313 ·
Los mantenedores suelen responder en 1 día
-
bug
Dificultad 2/5 1-3 horas Aptitud para principiantes 78/100
LanternOps/breeze#8254 ·
Los mantenedores suelen responder en 1 día
-
Dificultad 1/5 1-3 horas Aptitud para principiantes 82/100
gofish-graphics/gofish-graphics#1084 ·
Los mantenedores suelen responder en 1 día