Repository navigation
fix(deps): pin satori to 0.32.0 so sponsor and support-matrix images render - #539
Merged
Merged
Conversation
…render satori 0.33 and later load HarfBuzz wasm at import time. In Cloudflare Workers its startup code reads self.location.href, which is undefined there, and it also needs runtime wasm compilation, which workerd blocks. Every render then fails, so /sponsors.svg, /sponsors.png, /support-matrix.svg and /support-matrix.png return 500. Pin satori to 0.32.0, the last version that renders in workerd, and restore the support-matrix snapshots it produces. Add a Renovate rule that keeps satori below 0.33 until upstream works in workerd again. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Codex Review SummaryThis comment shows the latest Codex review activity on this pull request.
ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings. |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Problem
Since 2026-10-07 03:55 UTC, napi.rs returns 500 for every generated image:
/sponsors.svg,/sponsors.png/support-matrix.svg,/support-matrix.pngThe worker logs
TypeError: Cannot read properties of undefined (reading 'href').satori 0.33 and later load HarfBuzz wasm when the module is imported. In Cloudflare Workers, its startup code thinks it runs in a web worker and reads
self.location.href.self.locationis undefined in workerd, so the import fails, and every render awaits that failed import.CI stayed green the whole time. Tests run in Node, where HarfBuzz takes its Node start-up path and works.
What this PR changes
The support-matrix snapshots go back to the file from before #521. That is the exact output of satori 0.32.
Decisions
0.32.0__filename, likelib/satori-env.tsdoes for__dirname) gets past the first error. Then workerd blocks the next step:Wasm code generation disallowed by embedder. HarfBuzz builds wasm at runtime, and Workers do not allow that. No shim can fix it.0.32.0allowedVersions: "<0.33.0"lib/satori-env.ts__dirnamefor satori 0.36. satori 0.32 never reads it, so it is now unused but harmless. Removing it can be a small follow-up.Known limits
0 5 * * *) also refreshes it.harfbuzzjs) must start in workerd: noself.locationread and no runtime wasm compilation. Until then, keep the Renovate rule.main.Testing
vp test run(CI mode)vp fmt --checkvp linttsc --noEmitvitesttypes,vite.config.ts). Not from this change.renovate-config-validatorvite buildharfbuzzorself.locationindist/ssrvite preview(workerd)/sponsors.svg200image/svg+xml·/sponsors.png200image/png(PNG magic) ·/support-matrix.svg?tested=full200image/svg+xml215 KB ·/support-matrix.png?tested=full200image/png1800×1404. All four bodies are byte-identical to the last good build.Local preview has no sponsor data, so the sponsor image is an empty white card (same as the last good build). Real sponsor avatars are not tested locally.
🤖 Generated with Claude Code