vfx runtime: nested layoutsubtree capture canvases hang drawElementImage (check/snapshot time out); ref lookups are unscoped descendant queries
Maintainer thường phản hồi trong vòng 1 ngày
@vanceingalls đang làm issue này rồi.
Từ ngày 30/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
- 45/100
- Loại issue
- Lỗi
- Độ rõ ràng
- Khá rõ ràng
- Mức độ hoạt động
- Sôi nổi
- Công nghệ
- typescript
- Lĩnh vực
- computer-graphics, performance
Hướng nghiên cứu
Start in runtime/vfx.ts at lines 263, 387, 475-512, then inspect the immediate-child lookup rule and the capture-source resolution paths. Reproduce with hyperframes check or snapshot using the referenced bisect copies and logs. Done means nested capture sources are rejected without hanging and host-to-source/output lookups follow the stated scope rule.
Do mô hình lập chỉ mục viết ra từ nội dung của issue.
Mô tả
Measured 2026-09-24 on hyperframes 0.8.71 (origin/main 58c873d81) with the AE exporter's retro-wave export, HF_VFX=1 HF_VFX_REF=1.
Symptom
hyperframes check → Runtime ✗ check_runtime_failure: Runtime.callFunctionOn timed out after "Runtime did not become render-ready within 3000ms" / "Shader transitions did not finish pre-rendering"; hyperframes snapshot --at 2.6 hangs >500 s with no output. Zero console lines are collected in the failing runs (the renderer main thread is blocked, not slow).
Bisect (seven serialized check runs on hand-edited copies)
| copy | noise+backdrop | ref wrapper | ext map |
nested layoutsubtree canvases |
result |
|---|---|---|---|---|---|
| unmodified | ✓ | ✓ | ✓ | 2 | FAIL |
noise chains + data-vfx-for wrappers removed |
✗ | ✓ | ✓ | 1 | FAIL |
map param dropped, ref wrapper kept |
✓ | ✓ | ✗ | 2 | FAIL |
| ref wrapper unwrapped | ✓ | ✗ | ✗ | 1 | FAIL |
| both shapes gone | ✗ | ✗ | ✗ | 0 | PASS |
| E: both shapes kept verbatim; the two INNER self-capture triads removed | ✓ | ✓ | ✓ | 0 | PASS |
F: = E with the two inner layoutsubtree canvases put back |
✓ | ✓ | ✓ | 2 | FAIL |
E vs F differ by exactly two elements: a <canvas layoutsubtree class="hf-vfx-src"> nested inside another capture wrapper's subtree (a data-vfx-ref-visible ref wrapper around a host that runs its own displacement-map chain; a data-vfx-for backdrop wrapper whose preceding-sibling prefix contains a self-capture host). Every runtime path involved — findBackdropWrapper, resolveRefSource, data-vfx-ref-visible, CAPTURE_VISIBLE_SOURCE — is live in E and works. Every await in runtime/vfx.ts is bounded (CAPTURE_PAINT_TIMEOUT_MS), so this is Chrome refusing drawElementImage on a subtree containing another layoutsubtree canvas, not a JS promise.
The exporter is being fixed to never emit the nest (withdraw the chain with a gap). Three runtime items remain:
- Design gap: a
map/matteref that names a layer which runs its own kernel cannot be expressed —wrapAsVfxRefSource's precondition "it runs no kernel of its own" is unsatisfiable for such layers. A ref param that may name a HOST and bind its.hf-vfx-outtexture directly would remove the need for an outer wrapper. - Latent (M2): host→src/out lookups are unscoped descendant queries —
runtime/vfx.ts:486owner.querySelector("canvas.hf-vfx-src")and:263host.querySelector("canvas.hf-vfx-out")— while:487uses:scope > .hf-vfx-inand the comment at:475states the immediate-child rule. On a nested shape this bindsentry.srcto the OUTER wrapper andentry.outto the INNER out, socaptureSourcewould draw the canvas the entry paints into. Hidden today only because the nest hangs first. - Latent (M3):
resolveCaptureSourcehardcodesvisible:false(:512) whileresolveRefSourcereads the attribute (:387) — a doubly-reached canvas gets twoVfxCaptureSourceobjects with oppositekeepBitmap; registry order decides.
Suggested runtime hardening independent of the exporter fix: reject (with a reportVfxError) any .hf-vfx-src whose subtree contains another .hf-vfx-src, rather than hanging; and scope the two lookups to :scope >.
Repro copies and logs are on the AE-export machine (/tmp/hf71-bisect-{a,b,b2,c,e,f}, /tmp/fable-coord/hf71-bisect-*.log); exporter-side record: hyperframes-ae-exporter spec §Task 3.8 (2026-09-24).
🤖 Generated with Claude Code
- Ngôn ngữ chính
- TypeScript
- Star
- 54.1k
- Fork
- 4.9k
- Merge trung bình
- 7 giờ 19 phút
- Pull request đã merge (30 ngày)
- 746
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
-
gcp-cloud-run image pins Chrome 148, which drops `background-clip: text` glyphs inside layered children; the CLI's Chrome 152 paints themCó thể đã có người làm Có pull request liên kết đang mở hoặc đã được merge. Đang mở
Độ khó 1/5 Dưới một giờ Mức phù hợp với người mới 84/100
heygen-com/hyperframes#5117 ·
Maintainer thường phản hồi trong vòng 1 ngày
-
Docs: clarify that "Enable auto-update" is only available in the Claude Code terminal (CLI) /plugin UICó thể đã có người làm @rumi7911 đã nhận 2 ngày trước. Đang mở
Độ 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 4 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
-
skills: remoteHeadSha() can open a Git Credential Manager dialog on Windows (GIT_TERMINAL_PROMPT does not cover GUI helpers; slug unvalidated)Có thể đã có người làm @RaphaelFakhri đã nhận 8 ngày trước. Đang mở
Độ 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 14 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
Tất cả issue của heygen-com/hyperframes
Issue tương tự
-
bug(sight): the dashboard's text truncations split surrogate pairs and show broken charactersĐang mởcomponent:sight
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 78/100
agentic-os-org/ANOLISA#6738 · 2 bình luận ·
Maintainer thường phản hồi trong vòng 1 ngày
-
bug Durable Agents Observability (AI Telemetry) status: needs triage
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 82/100
mastra-ai/mastra#26470 · 1 bình luận ·
Maintainer thường phản hồi trong vòng 1 ngày
-
bug
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 76/100
paperclipai/paperclip#15630 ·
Maintainer thường phản hồi trong vòng 1 ngày
-
[good first issue, hacktoberfest] ⛩️ Add new Theme: Sakura Latte (good-first-issue)Có thể đã có người làm @PGrayCS đã nhận hôm nay. Đang mởcommunity first-timers-only good first issue hacktoberfest help wanted low hanging fruit up-for-grabs
Độ khó 1/5 1-3 giờ Mức phù hợp với người mới 78/100
lingdojo/kana-dojo#31937 · 1 bình luận · 5 reaction ·
Maintainer thường phản hồi trong vòng 1 ngày
-
feature/cohorts feature/feature-flags team/feature-flags
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 74/100
Maintainer thường phản hồi trong vòng 1 ngày