gcp-cloud-run image pins Chrome 148, which drops `background-clip: text` glyphs inside layered children; the CLI's Chrome 152 paints them
Maintainer thường phản hồi trong vòng 1 ngày
@user-github-me đang làm issue này rồi.
Từ ngày 9/10/2026.
Đánh giá
- Độ khó
- 1/5
- Thời gian dự kiến
- Dưới một giờ
- Mức phù hợp với người mới
- 84/100
- Loại issue
- Lỗi
- Độ rõ ràng
- Đặc tả rõ ràng
- Mức độ hoạt động
- Sôi nổi
- Công nghệ
- docker, typescript
- Lĩnh vực
- build-system
Hướng nghiên cứu
Bắt đầu tại packages/gcp-cloud-run/Dockerfile và Dockerfile.test, nơi chrome-headless-shell được ghim ở 148.0.7778.167; cập nhật cả hai lên 152.0.7977.30, phiên bản mà packages/cli/src/browser/manager.ts đã quản lý. Xác nhận phiên bản nhất quán với CLI bằng cách đọc manager.ts, rồi chạy build hình ảnh để probe BeginFrame của nó kiểm tra ghim mới. Xong khi build của Dockerfile vượt qua probe đó và một render hình ảnh trên Cloud Run khớp với render cục bộ của repro được liên kết.
Do mô hình lập chỉ mục viết ra từ nội dung của issue.
Mô tả
Describe the bug
packages/gcp-cloud-run/Dockerfile (and Dockerfile.test) pin [email protected]. That Chromium build leaves descendants with their own paint layer (transform, opacity, filter, position, will-change) out of a background-clip: text mask, so gradient text whose glyphs live in such a child is painted with its transparent fill and nothing else: the line is invisible in the render.
The CLI's managed Chrome (152.0.7977.30, packages/cli/src/browser/manager.ts) paints it, as does hyperframes preview in any current browser. So the same project renders differently on a workstation and on Cloud Run, and only the Cloud Run output is wrong.
This hits any split-text entrance (lines or words wrapped in divs that a GSAP tween translates, fades or blurs) applied to gradient text. The tween leaves a transform on each wrapper, which is enough.
Related: #2810 resolved the BeginFrame question for this exact pin, so I don't think BeginFrame is a reason to stay on 148. check flags the pattern as text_not_painted (transparent fill) on every Chrome, which matches the 148 output rather than what 150+ and browsers paint; that may be worth a look too.
Minimal reproduction
https://github.com/ArcadeHQ/hyperframes-repros/tree/patch/bg-clip-text-layered-child
One index.html, no scripts, no animation: two gradient lines, the second inside a child with transform: translateY(0).
Steps to reproduce
git clone -b patch/bg-clip-text-layered-child https://github.com/ArcadeHQ/hyperframes-repros
cd hyperframes-repros
npm run render -- --quality draft --output out/chrome-152.mp4 # CLI's managed Chrome: both lines
npx --yes @puppeteer/browsers install [email protected]
HYPERFRAMES_BROWSER_PATH=<path printed above> npm run render -- --quality draft --output out/chrome-148.mp4 # second line missing
ffmpeg -ss 0.5 -i out/chrome-152.mp4 -frames:v 1 out/chrome-152.png
ffmpeg -ss 0.5 -i out/chrome-148.mp4 -frames:v 1 out/chrome-148.png
The 148 render is what the @hyperframes/gcp-cloud-run image produces.
Expected behavior
Both lines render with the gradient, matching preview and a local render.
Actual behavior
On Chrome 148 only "Direct text" renders. The second line's box is still laid out, but nothing paints in it.
Frame at 0.5 s, CLI Chrome 152 (expected):

Same frame on Chrome 148 (the Cloud Run image):

Environment
- hyperframes 0.8.134
- Node v24.21.0, macOS arm64 (Apple M1 Pro)
- Chrome:
chrome-headless-shell152.0.7977.30 (CLI managed) vs 148.0.7778.97 viaHYPERFRAMES_BROWSER_PATH; Linux 148.0.7778.167 in the Cloud Run image shows the same - ffmpeg 9.0.2
npx hyperframes doctor from the repro checkout:
✓ Version 0.8.134 (latest)
✓ Node.js v24.21.0 (darwin arm64)
✓ CPU 10 cores · Apple M1 Pro @ 2400MHz
✓ Memory 16.0 GB total
✓ FFmpeg ffmpeg 9.0.2 at /opt/homebrew/bin/ffmpeg
✓ FFprobe ffprobe 9.0.2 at /opt/homebrew/bin/ffprobe
✓ Chrome cache: ~/.cache/puppeteer/chrome-headless-shell/mac_arm-154.0.8037.92/...
✗ Docker Not found
Additional context
Requested fix: pin the gcp-cloud-run image (and Dockerfile.test) to the same build the CLI manages, 152.0.7977.30, so Cloud Run and workstation renders use one Chrome. The image build's BeginFrame probe gates that, and our render corpus passes on 152. Happy to send the one-line PR if useful.
Note for completeness: Chromium 150+ paints the layered child's glyphs but still in the clipping box's own space (no transform, opacity or filter applied to the mask), which Firefox does apply. That is a Chromium limitation, not a HyperFrames one, and is not what this issue asks to change.
- Ngôn ngữ chính
- TypeScript
- Star
- 54.1k
- Fork
- 4.9k
- Merge trung bình
- 8 giờ 49 phút
- Pull request đã merge (30 ngày)
- 667
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
-
product-launch-video: assemble-index.mjs is not idempotent — a second run drops every approved frame videoCó thể đã có người làm @Dante-dan đã 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 75/100
heygen-com/hyperframes#5733 ·
Maintainer thường phản hồi trong vòng 1 ngày
-
gsap_tween_tail counts GSAP's force3D and autoRound flags as propertiesCó thể đã có người làm @rudycelekli đã nhận 2 ngày trước. Đang mởbug triage/needs-triage
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 78/100
heygen-com/hyperframes#5683 ·
Maintainer thường phản hồi trong vòng 1 ngày
-
Timeline: show a clip's full name when its label is cut offCó thể đã có người làm @DanielMcSheehy đã nhận hôm nay. Đang mởdesktop-candidate difficulty/easy enhancement good first issue help wanted triage/ready
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 85/100
heygen-com/hyperframes#5582 · 1 bình luận ·
Maintainer thường phản hồi trong vòng 1 ngày
-
Studio: press ? to open the keyboard shortcuts panelCó thể đã có người làm @B-Payal đã nhận 4 ngày trước. Đang mởdesktop-candidate difficulty/easy enhancement good first issue help wanted triage/ready
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 82/100
heygen-com/hyperframes#5580 · 1 bình luận ·
Maintainer thường phản hồi trong vòng 1 ngày
-
remotion-to-hyperframes: Easing.cubic is mapped to power3 (quartic); cubic is power2Có thể đã có người làm @user-github-me đã nhận 5 ngày trước. Đang mởdifficulty/easy documentation help wanted triage/ready
Độ khó 1/5 Dưới một giờ Mức phù hợp với người mới 88/100
heygen-com/hyperframes#5538 · 1 bình luận ·
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 priority: P2
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 78/100
Maintainer thường phản hồi trong vòng 1 ngày
-
wayfinder:task
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 65/100
Maintainer thường phản hồi trong vòng 1 ngày
-
bug customer-reported data-plane question Service Attention Storage
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 69/100
Azure/azure-rest-api-specs#47397 · 2 bình luận ·
Maintainer thường phản hồi trong vòng 1 ngày
-
Claude thinking budget can shrink capped Haiku responses to 2,048 tokensCó thể đã có người làm @DavyMassoneto đã nhận hôm nay. Đang mở
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 78/100
diegosouzapw/OmniRoute#17109 ·
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 76/100
paperclipai/paperclip#16785 ·
Maintainer thường phản hồi trong vòng 1 ngày