Make nested composition `data-playback-start` also shift descendant media
Maintainer thường phản hồi trong vòng 1 ngày
@valeriangalliat đang làm issue này rồi.
Từ ngày 10/9/2026.
Đánh giá
- Độ khó
- 4/5
- Thời gian dự kiến
- 3-5 ngày
- Mức phù hợp với người mới
- 48/100
- Loại issue
- Tính năng
- Độ rõ ràng
- Khá rõ ràng
- Mức độ hoạt động
- Ít trao đổi
- Công nghệ
- typescript
- Lĩnh vực
- web-dev
Hướng nghiên cứu
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.
Do mô hình lập chỉ mục viết ra từ nội dung của issue.
Mô tả
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.
- Ngôn ngữ chính
- TypeScript
- Star
- 54.1k
- Fork
- 4.9k
- Merge trung bình
- 7 giờ 18 phút
- Pull request đã merge (30 ngày)
- 784
Chuẩn bị môi trường
Dự án này không cung cấp dev container, Dockerfile hay hướng dẫn đóng góp, nên bạn cần tự thiết lập môi trường: hãy bắt đầu từ README và xem hướng dẫn đóng góp lần đầu của chúng tôi để biết các bước chung.
Bắt đầu từ đâu
- Đọc hết issue, rồi đọc hướng dẫn đóng góp của dự án.
- Bình luận trên issue rằng bạn sẽ nhận — tránh hai người làm cùng một việc.
- Fork repository và làm thay đổi trên một nhánh.
- Mở pull request có tham chiếu số hiệu của issue.
Issue khác của heygen-com/hyperframes
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 85/100
heygen-com/hyperframes#5027 ·
Maintainer thường phản hồi trong vòng 1 ngày
-
fix(producer): propagate useGpu to HDR layered streaming encoderCó thể đã có người làm @Monster-GM đã nhận 1 ngày trước. Đang mở
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 87/100
heygen-com/hyperframes#5002 ·
Maintainer thường phản hồi trong vòng 1 ngày
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 78/100
heygen-com/hyperframes#4702 · 1 bình luận · 1 reaction ·
Maintainer thường phản hồi trong vòng 1 ngày
-
Studio catalog prompt editor has no accessible nameCó thể đã có người làm @lorenzozanee đã nhận 12 ngày trước. Đang mởbug difficulty/easy triage/ready
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 78/100
heygen-com/hyperframes#4384 ·
Maintainer thường phản hồi trong vòng 1 ngày
-
lint: validate composition variables declared on supported root elementsCó thể làm lại được Pull request cho issue này đã bị đóng mà không được merge. Đang mởbug difficulty/easy triage/ready
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 88/100
heygen-com/hyperframes#4383 ·
Maintainer thường phản hồi trong vòng 1 ngày
Tất cả issue của heygen-com/hyperframes
Issue tương tự
-
fix: txId branch of the contract-state streams drops every state after the named transactionĐang mởbot:ai-assisted status:untriaged
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 85/100
midnightntwrk/midnight-js#1424 ·
Maintainer thường phản hồi trong vòng 1 ngày
-
enhancement
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 68/100
mksglu/context-mode#1268 ·
Maintainer thường phản hồi trong vòng 5 ngày
-
Edit:Đang mởcheck:failed streams:edit
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 60/100
iptv-org/iptv#54352 · 1 bình luận ·
Maintainer thường phản hồi trong vòng 1 ngày
-
[Table] reserveSelectedRowOnPaginate=false 时表头全选包含其他页数据Có thể đã có người làm @dvd233 đã nhận hôm nay. Đang mở
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 75/100
Tencent/tdesign-react#4416 · 2 bình luận ·
Maintainer thường phản hồi trong vòng 1 ngày
-
area:widget bug
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 66/100
interledger/publisher-tools#894 ·
Maintainer thường phản hồi trong vòng 1 ngày