Clip with z-index: -1 silently does not render (snapshot and render); z-index 0 and 1 siblings are fine
Mantenedores costumam responder em até 1 dia
Avaliação
- Dificuldade
- 4/5
- Tempo estimado
- 3-5 dias
- Facilidade para iniciantes
- 48/100
- Tipo de issue
- Bug
- Clareza
- Razoavelmente clara
- Status de atividade
- Ativa
- Stack de tecnologia
- css, html, typescript
Direção de pesquisa
Read docs/AGENTS.md first, then verify the plain-browser control and the HyperFrames snapshot/render commands. Inspect docs/concepts/data-attributes.mdx and docs/reference/html-schema.mdx alongside the paint-order guidance; done requires an agreed documentation-versus-diagnostic scope, verified examples, and passing documentation validation and link checks.
Escrita pelo modelo de indexação a partir do texto da issue.
Descrição
Summary
A clip with z-index: -1 does not render. Sibling clips with z-index: 0 and z-index: 1, identical in every other respect, render correctly. The element is silently absent — no warning from lint, validate or render, and the render exits 0.
This affects both snapshot and render, so it is not capture-specific.
Affected
Reproduce
index.html — three absolutely-positioned full-width bands, identical class="clip" attributes, differing only in z-index:
<!doctype html>
<html lang="en">
<head><meta charset="UTF-8" /><meta name="viewport" content="width=640, height=360" />
<style>
* { margin:0; padding:0; box-sizing:border-box; }
html, body { width:640px; height:360px; overflow:hidden; background:#0a0a0a; }
#root { width:100%; height:100%; }
#underA { position:absolute; left:0; top:0; width:640px; height:180px; background:#f5e6c8; z-index:-1; }
#underB { position:absolute; left:0; top:180px; width:640px; height:180px; background:#20a0f0; z-index:0; }
#over { position:absolute; left:20px; top:20px; width:60px; height:60px; background:#d02020; z-index:1; }
</style>
</head>
<body>
<div id="root" data-composition-id="main" data-start="0" data-duration="1" data-width="640" data-height="360">
<div id="underA" class="clip" data-start="0" data-duration="1" data-track-index="0"></div>
<div id="underB" class="clip" data-start="0" data-duration="1" data-track-index="1"></div>
<div id="over" class="clip" data-start="0" data-duration="1" data-track-index="2"></div>
</div>
</body>
</html>
hyperframes snapshot . --at 0.5 --no-end -o snap --describe false
hyperframes render . -o out.mp4
Measured
Mean RGB sampled inside each band:
| element | authored | snapshot | render |
|---|---|---|---|
z-index: -1 |
(245,230,200) |
(10,10,10) |
(7,9,9) |
z-index: 0 |
(32,160,240) |
(32,160,240) |
(29,157,238) |
z-index: 1 |
(208,32,32) |
(208,32,32) |
(206,30,27) |
(10,10,10) is the bare body background — the band is not drawn at all, rather than drawn and covered. The z-index: 0 and z-index: 1 bands land on their authored values in both paths (the small render deltas are encode rounding).
Expected
Either the band renders, or something says why it does not. Per CSS painting order a negative-z-index child paints above the canvas background and below its parent's content, so on a transparent #root over a dark body the band should be visible.
If clips are composited such that negative z-index is deliberately out of range, that is a reasonable design choice — but it is currently undocumented and silent, and the failure is invisible at every gate: lint passes, validate passes, the render exits 0, and the output is a plausible-looking file with an element missing.
Suggested
Whichever way it is resolved, the valuable half is a diagnostic: flag a negative z-index on a clip at lint time, or warn at render when a declared element contributes zero pixels. Silent omission is the expensive failure mode — an absent element is indistinguishable from one that was authored wrong, so debugging effort goes to the composition rather than to the pipeline.
Workaround for anyone hitting this: express paint order with DOM order (insertBefore) rather than negative z-index. Positive values behave correctly.
Triage follow-up — September 23, 2026
A plain-browser control reproduces the essential symptom without HyperFrames. In Chrome 150.0.7871.24, the supplied negative-z-index band over the opaque body background yields RGB (10,10,10) at (200,80). Adding isolation: isolate to #root changes that pixel to the expected band RGB (245,230,200).
This is evidence of CSS stacking behavior, not by itself evidence that HyperFrames drops an element. The isolated control has not yet been compared across HyperFrames snapshot/render, so this issue is not being closed.
Decision needed
The smallest contribution candidate is documenting negative-z-index stacking and a minimal before/after example beside the paint-order guidance in docs/concepts/data-attributes.mdx and docs/reference/html-schema.mdx. A diagnostic is a separate scope decision: blanket rejection of negative z-index would reject valid CSS.
For a documentation task, verify the example in a plain browser and HyperFrames snapshot/render, explain that track order is not paint order, and run the documentation validation/link checks. Read docs/AGENTS.md first. Difficulty remains unset on this broader issue until the documentation-versus-diagnostic scope is selected.
- Linguagem predominante
- TypeScript
- Estrelas
- 54.1k
- Forks
- 4.9k
- Merge médio
- 6h 8min
- PRs com merge (30d)
- 797
Preparar o ambiente
Este projeto não oferece contêiner de desenvolvimento, Dockerfile nem guia de contribuição, então a configuração fica por sua conta: comece pelo README e veja nosso guia da primeira contribuição para os passos gerais.
Primeiros passos
- Leia a issue inteira e depois o guia de contribuição do projeto.
- Comente na issue dizendo que vai assumir — evita que duas pessoas façam o mesmo trabalho.
- Faça um fork do repositório e trabalhe em uma branch.
- Abra um pull request que referencie o número da issue.
Mais de heygen-com/hyperframes
-
render --start/--end applies the 2 GB Lambda plan cap to local rendersTalvez já em andamento @ump45nose assumiu há 1 dia. Abertabug good first issue
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 88/100
heygen-com/hyperframes#7035 ·
Mantenedores costumam responder em até 1 dia
-
[CLI] Reject non-integer tokens for distributed render flagsTalvez já em andamento @pqminh27 assumiu há 3 dias. Abertaarea/tool bug difficulty/easy
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 78/100
heygen-com/hyperframes#6889 · 1 comentário ·
Mantenedores costumam responder em até 1 dia
-
Segmented capture always fails with `--format mov`Talvez já em andamento @DaKaufeeBoii assumiu há 3 dias. Abertabug difficulty/easy triage/ready
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 78/100
heygen-com/hyperframes#6481 · 2 comentários ·
Mantenedores costumam responder em até 1 dia
-
Timeline: show a clip's full name when its label is cut offTalvez já em andamento @DanielMcSheehy assumiu há 16 dias. Abertadesktop-candidate difficulty/easy enhancement good first issue help wanted triage/ready
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 85/100
heygen-com/hyperframes#5582 · 2 comentários ·
Mantenedores costumam responder em até 1 dia
-
Studio: press ? to open the keyboard shortcuts panelTalvez já em andamento @B-Payal assumiu há 20 dias. Abertadesktop-candidate difficulty/easy enhancement good first issue help wanted triage/ready
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 82/100
heygen-com/hyperframes#5580 · 1 comentário ·
Mantenedores costumam responder em até 1 dia
Todas as issues de heygen-com/hyperframes
Issues semelhantes
-
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 66/100
riverqueue/river#1576 ·
Mantenedores costumam responder em até 1 dia
-
[bug] A prompt queued during a run is assessed without its textTalvez já em andamento @jwiegley assumiu hoje. Aberta
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 72/100
DevMortimer/pi-warden#211 ·
Mantenedores costumam responder em até 1 dia
-
enhancement
Dificuldade 1/5 Menos de uma hora Facilidade para iniciantes 84/100
mattermost/compass-design#191 ·
Mantenedores costumam responder em até 1 dia
-
Add unit tests for the organization admin role checkTalvez já em andamento @SaffuSafwan assumiu hoje. Abertaarea/core good first issue help wanted
Dificuldade 1/5 Menos de uma hora Facilidade para iniciantes 90/100
elmohq/elmo#1095 · 1 comentário ·
Mantenedores costumam responder em até 1 dia
-
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 62/100
HorusGoul/trizum#559 · 1 comentário ·
Mantenedores costumam responder em até 1 dia