Hacktoberfest 2026:维护者为十月标记出来的 issue,仍然开放、适合新手。 浏览 Hacktoberfest issue

gcp-cloud-run image pins Chrome 148, which drops `background-clip: text` glyphs inside layered children; the CLI's Chrome 152 paints them

未关闭 适合新手
#5,117 0 条评论 0 个 reaction 已指派 0 人 在 GitHub 查看

维护者通常 1 天内回复

@user-github-me 已经在做这个了。

开始于 2026年10月9日。

  • #5207 来自 @user-github-me —— 未关闭
  • #5338 来自 @user-github-me —— 未关闭

评估

难度
1/5
预计耗时
1 小时以内
新手友好度
84/100
Issue 类型
缺陷
描述清晰度
描述清楚
活跃度
活跃
技术栈
docker, typescript
领域
build-system

调研方向

从 packages/gcp-cloud-run/Dockerfile 和 Dockerfile.test 开始,其中 chrome-headless-shell 被固定在 148.0.7778.167;将两者都更新到 152.0.7977.30,即 packages/cli/src/browser/manager.ts 已经管理的版本。通过阅读 manager.ts 确认该版本与 CLI 一致,然后运行镜像构建,使其 BeginFrame 探测对该新固定版本进行把关。当 Dockerfile 的构建通过该探测,且 Cloud Run 镜像渲染与所链接复现步骤的本地渲染一致时即为完成。

由索引模型根据 Issue 内容生成。

描述

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):

chrome-152

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

chrome-148

Environment

  • hyperframes 0.8.134
  • Node v24.21.0, macOS arm64 (Apple M1 Pro)
  • Chrome: chrome-headless-shell 152.0.7977.30 (CLI managed) vs 148.0.7778.97 via HYPERFRAMES_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.

主要语言
TypeScript
星标
54.1k
派生
4.9k
平均合并
7 小时 21 分钟
30 天内合并 PR
722

环境准备

这个项目没有提供开发容器、Dockerfile 或贡献指南,环境需要你自己搭建:先看它的 README,通用步骤见我们的新手贡献指南。

从这里开始

  1. 先读完整个 Issue,再读项目的贡献指南。
  2. 在 Issue 下留言说明你要接手 —— 这能避免两个人做同样的事。
  3. Fork 仓库,在一个分支上完成修改。
  4. 提交 Pull Request,并在描述里引用这个 Issue 编号。

heygen-com/hyperframes 的其他 Issue

查看 heygen-com/hyperframes 的全部 Issue

相似的 Issue

更多 TypeScript Issue

把新 issue 发到你的邮箱

精选适合新手参与的 GitHub issue 摘要。